随笔分类 -  Akka

Actor model
摘要:随着网上购物消费模式热度的不断提高,网上销售平台上各种促销手段也层出不穷,其中“秒购”已经是各种网站普遍流行的促销方式了。“秒购”对数据的实效性和精确性要求非常高,所以通过分布式运算实现高并发数据处理应该是正确的选择。不过,高并发也意味着高频率的数据操作冲突,而高频使用“锁”又会严重影响效率及容易造 阅读全文
posted @ 2022-02-16 17:24 雪川大虫 阅读(395) 评论(0) 推荐(0) 编辑
摘要:kafka具备的分布式、高吞吐、高可用特性,以及所提供的各种消息消费模式可以保证在一个多节点集群环境里消息被消费的安全性:即防止每条消息遗漏处理或重复消费。特别是exactly-once消费策略:可以保证每条消息肯定只被消费一次。换句话说就是在分布式运算环境里kafka的消息消费是能保证唯一性的。 阅读全文
posted @ 2022-01-28 12:37 雪川大虫 阅读(187) 评论(0) 推荐(0) 编辑
摘要:上篇介绍了kafka at-least-once消费模式。kafka消费模式以commit-offset的时间节点代表不同的消费模式,分别是:at-least-once, at-most-once, exactly-once。上篇介绍的at-least-once消费模式是通过kafka自身的auto 阅读全文
posted @ 2021-08-15 14:18 雪川大虫 阅读(350) 评论(0) 推荐(1) 编辑
摘要:上篇描述的kafka案例是个库存管理平台。是一个公共服务平台,为其它软件模块或第三方软件提供库存状态管理服务。当然,平台管理的目标必须是共享的,即库存是作为公共资源开放的。这个库存管理平台是一个Kafka消费端独立运行的软件。kafka的生产方即平台的服务对象通过kafka生产端producer从四 阅读全文
posted @ 2021-08-14 16:22 雪川大虫 阅读(1258) 评论(0) 推荐(0) 编辑
摘要:了解了kafka原理之后,对kafka的的应用场景有了一些想法。在下面的一系列讨论中把最近一个项目中关于kafka的应用介绍一下。 先介绍一下使用kafka的起因:任何进销存系统,销售开单部分都应该算是主体部分了。简单的说,这是一个包括销售数据录入、库存数扣减两个动作的过程。销售项目录入与库存扣减之 阅读全文
posted @ 2021-08-10 17:37 雪川大虫 阅读(453) 评论(0) 推荐(0) 编辑
摘要:上一篇我们通过示范案例基本了解了一个独立交易类型的库存管理模块应该是怎样的一块业务。这篇我们讨论一些如何从技术上来实现这样的业务模块。讲确切点应该说如何借助kafka的特性来实现功能开发。 底层方面:多节点服务器集群、kafka分布部署。 对上一层主要关注partition相关的问题:partiti 阅读全文
posted @ 2021-03-26 11:02 雪川大虫 阅读(229) 评论(0) 推荐(0) 编辑
摘要:在大型复杂的应用中,业务模块之间总是相互关联,相互纠缠。无论对业务管理或软件开发方面都会造成困惑:从业务管理方面难以厘清确切的管理范围和职责:就是说不知一项业务具体谁来管。在软件开发方面则无法确定开发人员的具体分工和维护责任,即确定一项业务功能具体靠谁来修改、优化。拿一个普通的网上购物过程来说,除商 阅读全文
posted @ 2021-03-26 09:36 雪川大虫 阅读(218) 评论(0) 推荐(0) 编辑
摘要:alpakka-kafka-consumer的功能描述很简单:向kafka订阅某些topic然后把读到的消息传给akka-streams做业务处理。在kafka-consumer的实现细节上,为了达到高可用、高吞吐的目的,topic又可用划分出多个分区partition。分区是分布在kafka集群节 阅读全文
posted @ 2021-02-22 20:29 雪川大虫 阅读(440) 评论(0) 推荐(0) 编辑
摘要:alpakka项目是一个基于akka-streams流处理编程工具的scala/java开源项目,通过提供connector连接各种数据源并在akka-streams里进行数据处理。alpakka-kafka就是alpakka项目里的kafka-connector。对于我们来说:可以用alpakka 阅读全文
posted @ 2021-02-20 09:08 雪川大虫 阅读(586) 评论(0) 推荐(0) 编辑
摘要:实际上很早就写了一系列关于akka-streams的博客。但那个时候纯粹是为了了解akka而去学习的,主要是从了解akka-streams的原理为出发点。因为akka-streams是akka系列工具的基础,如:akka-http, persistence-query等都是基于akka-stream 阅读全文
posted @ 2020-09-07 08:19 雪川大虫 阅读(1055) 评论(0) 推荐(1) 编辑
摘要:上期说道:http/2还属于一种不算普及的技术协议,可能目前只适合用于内部系统集成,现在开始大面积介入可能为时尚早。不过有些项目需求不等人,需要使用这项技术,所以研究了一下akka-grpc,写了一篇介绍。本想到此为止,继续其它项目。想想这样做法有点不负责任,像是草草收场。毕竟用akka-grpc做 阅读全文
posted @ 2020-08-29 09:57 雪川大虫 阅读(1126) 评论(0) 推荐(0) 编辑
摘要:关于grpc,在前面的scalaPB讨论里已经做了详细的介绍:google gRPC是一种全新的RPC框架,在开源前一直是google内部使用的集成工具。gRPC支持通过http/2实现protobuf格式数据交换。protobuf即protocol buffer,是google发明的一套全新的序列 阅读全文
posted @ 2020-08-23 18:43 雪川大虫 阅读(1025) 评论(0) 推荐(0) 编辑
摘要:在前面的的讨论里已经介绍了CQRS读写分离模式的一些原理和在akka-typed应用中的实现方式。通过一段时间akka-typed的具体使用对一些经典akka应用的迁移升级,感觉最深的是EvenSourcedBehavior和akka-cluster-sharding了。前者是经典akka中pers 阅读全文
posted @ 2020-08-16 11:24 雪川大虫 阅读(799) 评论(0) 推荐(0) 编辑
摘要:前面介绍了事件源(EventSource)和集群(cluster),现在到了讨论CQRS的时候了。CQRS即读写分离模式,由独立的写方程序和读方程序组成,具体原理在以前的博客里介绍过了。akka-typed应该自然支持CQRS模式,最起码本身提供了对写方编程的支持,这点从EventSourcedBe 阅读全文
posted @ 2020-06-26 09:27 雪川大虫 阅读(761) 评论(0) 推荐(0) 编辑
摘要:在使用akka-typed的过程中发现有很多地方都简化了不少,变得更方便了,包括:Supervision,只要用Behaviors.supervise()把Behavior包住,很容易就可以实现这个actor的SupervisorStrategy.restartWithBackoff策略了。然后集群 阅读全文
posted @ 2020-06-12 16:33 雪川大虫 阅读(881) 评论(0) 推荐(0) 编辑
摘要:先谈谈akka-typed的router actor。route 分pool router, group router两类。我们先看看pool-router的使用示范: val pool = Routers.pool(poolSize = 4)( // make sure the workers a 阅读全文
posted @ 2020-06-11 08:24 雪川大虫 阅读(653) 评论(0) 推荐(0) 编辑
摘要:akka-cluster对每个节点的每种状态变化都会在系统消息队列里发布相关的事件。通过订阅有关节点状态变化的消息就可以获取每个节点的状态。这部分已经在之前关于akka-cluster的讨论里介绍过了。由于akka-typed里采用了新的消息交流协议,而系统消息的发布和订阅也算是消息交换,也受交流协 阅读全文
posted @ 2020-06-07 22:28 雪川大虫 阅读(682) 评论(0) 推荐(0) 编辑
摘要:前面提到过,akka-typed中较重要的改变是加入了EventSourcedBehavior。也就是说增加了一种专门负责EventSource模式的actor, 最终和其它种类的actor一道可以完美实现CQRS。新的actor,我还是把它称为persistentActor,还是一种能维护和维持运 阅读全文
posted @ 2020-06-06 12:19 雪川大虫 阅读(638) 评论(0) 推荐(0) 编辑
摘要:akka-typed中已经没有PersistentActor了。取而代之的是带有EventSourcedBehavior的actor,也就是一种专门支持EventSource模式的actor。EventSource的原理和作用在之前的博客里已经有了比较详细的介绍,这里就不再重复了。本篇直接从Even 阅读全文
posted @ 2020-06-03 08:06 雪川大虫 阅读(614) 评论(0) 推荐(0) 编辑
摘要:akka系统是一个分布式的消息驱动系统。akka应用由一群负责不同运算工作的actor组成,每个actor都是被动等待外界的某种消息来驱动自己的作业。所以,通俗点描述:akka应用就是一群actor相互之间发送消息的系统,每个actor接收到消息后开始自己负责的工作。对于akka-typed来说,t 阅读全文
posted @ 2020-05-29 13:03 雪川大虫 阅读(892) 评论(1) 推荐(0) 编辑