使用Akka实现Reactive DDD

14-04-16 banq

这是一个Akka实现reactive DDD开源项目,点按标题进入,相比传统架构, DDD模型能够划分复杂的业务领域为可管理的部件,从而考虑到可扩展性和一致性的要求。这意味着,它带来的有界上下文,事务边界和基于事件通信的DDD和CQRS等概念能够极大地推动构建可扩展的软件。

目前大部分系统都是基于关系型数据库和全局事务构建的,具体是指服务(banq注:EJB或Spring编制的服务),这种非常有限的体系结构其实不适合用于构建可扩展的软件。

由全局事务(比如JTA JavaEE服务器提供的)保证的基础数据连续一致性,不应被视为任何企业级系统的标准要求。只是我们都习惯了,但却又不能解决客户的实际需求。

为了从DDD / CQRS架构中充分受益,我们应该改变底层技术。今天我们已经有一个选择。有很多NoSQL数据库,并有一些解决可扩展性作为首要关注的平台。对于JVM ,Akka是最强大的开源平台,用于构建事件驱动的应用程序。最近Akka持久性模块已经发布,能够处理long-running/persistable流程照顾(这与聚合根和Sagas都是有关) 。这是一个伟大的功能,通过Akka就能作为构建企业应用的完整平台。

在这个源码中展示了DDD/CQRS EventSourcing等技术,使用Akka建立事件源的聚合根(AR)。这个想法很简单。聚合根应该被建模为一个接受命令和生产活动状态的Actor演员。因为Actor演员是消息驱动的,我们可以直接发送命令信息到聚合根,避免“命令来调用方法”。

Akka持久模块akka-persistence提供了为实现Actor持久化/状态的必要的构件。关键部件是akka.persistence.Processor特质。Processor是能够在转世时(Actor的启动或重新启动)恢复其状态的一个Actor演员。底层存储的类型是只可插拔的。

[该贴被admin于2014-04-16 09:25修改过]

3
猜你喜欢