AKKA介绍(二)
2017-11-24 本文已影响0人
cnhuangliang
上一篇提到,Akka是Actor内单线程编程模型,不共享状态,使用消息在actor间通信。有效的提升actor内的内聚性与降低actor间的耦合性。换个角度来看,其实akka的编程模型是真正的限定开发者从OO的角度思考与设计系统。
OO思想的本质是通过对象之间协作来实现业务价值,在整个设计过程中,对象的有效识别就变成了至关重要的环节。AKKA中的actor完天美的表达了OO对象,包括开篇提到的actor的几点特性,也体现出了出色的OO设计。
在OO设计实践中,对于抽象出的复杂对象,借助状态图完成对象生命周期建模,通过状态机实现状态流转与业务逻辑之间的解耦,在AKKA中架构中,Actor内嵌了状态机,当设计复杂对象时,可以基于面向生命周期建模状态图,并快速实现状态机。AKKA的FSM组件封装了状态机的DSL,可以大大简化状态机的实现。
Actor之间的通信是基于消息的,在AKKA中被抽象成命令,Actor接收一个命令,生成一个事件并完成状态转换,同时持久化事件到存储中。Akka的存储是基于Event Sourcing的,仅存储领域事件到存储中,当我们还原actor状态时,回播领域事件即可。这种基于Event Sourcing的持久化方案被称为Akka Persistece,它并不是一个DDD的框架,但当它设计实现的时候,与DDD的概念惊人的相似。