Axon 框架是基于JVM平台的开源产品,由Allard Buijze于2009年创立。2017年7月,成立了一家独立公司AxonIQ,专门与Axon产品合作。
Axon 框架的程序遵循基于领域驱动设计(DDD)思想、命令查询职责分离 (CQRS)、事件驱动架构(Event Driven Architecture,EDA)的架构模式。这些原则的结合,使基于Axon的应用程序更加健壮、适应性更强。
本专栏基于Axon开源框架、DDD领域驱动设计思想、CQRS读写分离和事件溯源(Event Sourcing)架构模式来实现DDD经典案例货物运输系统(Cargo Tracker Application)。
专栏介绍
Axon是一个轻量级框架,能够帮助开发者在架构层面构建可扩展和可伸缩的应用。
Axon框架提供了一个创新的、功能强大的方式,可以帮助在微服务架构中构建事件驱动的应用。Axon框架源于完善的CQRS(命令查询职责分离)和Event Sourcing(事件溯源)架构模式,以及DDD领域驱动设计思想。
Axon框架提供了重要的构建块来帮助快速实现应用开发,如聚合、仓储、命令总线(Command Bus)、事件总线(Event Bus)、事件的调度机制等等。此外,Axon提供了对注解的支持,它允许你构建聚合和事件监听器,而不必包含任何应用代码捆绑到Axon框架的特有逻辑。
DDD领域建模思想提出了一些概念、一些模式,让应用代码看起来更贴合业务语义,更贴近业务人员的思维,尽力去消除开发人员和业务人员之间的沟通障碍,另外非常重要的就是它制订了如何划分业务领域中各种操作边界的原则,划定上下文范围,防止出现盘根错节的复杂调用关系。
Axon框架实现了上述设计思想,建立了一整套让可以开发人员在专注于业务逻辑的实现,同时又能很简单地利用高级技术进行灵活处理的框架体系。
专栏大纲
2003年,Eric Evans发表了Domain Driven Design(DDD,领域驱动设计)这一著作,并在书中对领域驱动作出了开创性的理论阐述,至今领域驱动设计已问世十几年。
近几年来随着微服务盛行, ES Event Sourcing)事件溯源和CQRS Command Query Responsibility Segregation)读写分离也成为了一个越来越流行的概念,使用ES和CQRS好处在此不做赘述,但是也存在颇多弊端,比如事件数量巨大、回溯状态需要提前预热、缺少成熟的框架支撑等。在这种情况下,2009年Allard Buijze在JVM平台开源了Axon Framework用来解决此问题,简单说来Axon就是集成了DDD、ES和CQRS于一身,落地实现的一套框架方案,并成立了一家公司Axon IQ,专门与Axon产品合作。
本技术专栏以货物运输系统(Cargo Tracker Application )为示例,我们将基于Axon框架和DDD领域驱动设计思想,采用CQRS命令查询职责分离和事件溯源(Event Sourcing)架构模式来实现。
Axon开源框架忠实地贯彻了DDD领域建模思想,有助于提升应用项目长远可维护性和可扩展性。
主要内容如下:
Axon框架快速入门和DDD项目实践
基于CQRS命令查询职责分离和Event Sourcing事件溯源的架构设计
Axon框架详细介绍:领域模型(Domain Model)组件和调度模型(Dispatch Model)组件
Axon框架详细介绍:基础设施组件Axon Server和控制台演示
基于Axon框架的Spring Boot微服务应用的设计和创建
基于Axon框架的Spring Boot微服务应用包结构设计
试运行基于Axon框架和CQRS/ES模式的预订微服务应用
基于Axon框架实现领域模型:聚合Aggregate和状态State
基于Axon框架实现领域模型:命令和命令处理程序
基于Axon框架实现领域模型:创建事件模型和发布事件
基于Axon框架实现领域模型:聚合状态维护(State Maintenance)
基于Axon框架实现领域模型:AssignRouteToCargoCommand命令处理程序
基于Axon框架实现领域模型:ChangeDestinationCommand命令处理程序
CQRS架构中的查询端:聚合投影的数据存储和投影类的实现
CQRS架构中的查询端:查询类和查询处理程序的实现
基于Axon框架实现领域模型:Saga分布式事务快速入门
基于Axon框架实现领域模型:Saga分布式事务的实现
基于Axon框架实现领域服务:REST API和事件处理程序
基于Axon框架实现应用服务(Application Service)
领域驱动设计-项目整体架构和微服务应用包结构详细介绍
领域驱动设计-预订微服务应用中领域模型的包结构和代码分析
基于Axon框架和DDD设计思想的微服务应用代码分析
领域驱动设计-启动Axon Server和货物运输系统微服务应用