16.Axon框架-前言

前言

1.介绍

Axon Framework是一个用于构建可扩展和高度可维护的企业级Java应用程序的开源框架。Axon是一个CQRS(命令查询责任分离)框架,它将命令和事件驱动的开发模式引入到领域驱动设计(DDD)中,可以帮助开发人员更容易地实现DDD模式。Axon框架提供了很多组件,如聚合、事件总线、命令总线、事件存储和查询模型等

下图是一个典型的基于Axon框架的系统设计:

2.整体架构

从整体架构进行分析,Axon框架由三大部分组成,包括领域模型组件、分派模型组件和Axon服务器

其中,领域模型组件是Axon的核心组件,能帮助开发人员构建符合事件溯源和CQRS模式的DDD应用程序

分派模型组件提供针对领域模型的逻辑基础架构,包括支持对命令和查询的路由及协调操作,这些操作在Axon框架中同样被用来处理领域模型状态

Axon服务器为前面提到的领域和分派模型组件提供物理基础架构

下图展示了Axon框架提供的技术组件的详细组成,可以看到Axon框架内置了一个外部对接组件,可以和MongoDB、Kafka等第三方基础设施组件进行交互,从而满足不同场景下的定制化需求

3.工作流程概述

基于这些技术组件,Axon框架的整体工作流程如下图所示:

在上图中,我们可以看出,位于上半部分的组件能够改变应用程序的状态,而位于下半部分的组件则读取或查询应用程序的状态。显然,在这种明确的分离状态中,我们嵌入了CQRS架构模式

我们可以进一步梳理整个DDD应用程序的工作流程。首先发起改变状态的操作,这类操作被建模为命令。而命令被传递到命令总线,命令总线找到针对这一命令的命令处理程序。我们知道,状态的变更过程是在命令处理程序中进行的,该处理程序使用资源库加载领域对象并执行业务逻辑,将业务逻辑处理所引起的变化作用到它的状态。一旦状态发生变化,代表状态变更的领域事件将被发布到事件总线,事件总线则确保将领域事件传递到必要的事件处理程序。最终,事件处理程序完成对领域事件的处理并把它们保存到事件存储器中,这样我们就可以查询到最新的领域状态信息

基于Axon框架提供的这些技术组件,开发人员无须从零开始实现CQRS架构模式和事件溯源机制,从而可以专注于业务逻辑的实现过程

4.Axon Server

介绍

Axon服务器是Axon框架为开发人员提供的一个可视化服务器组件,包括一批即插即用的功能组件

下载与启动

从官网下载即可,它就是一个SpringBoot程序,使用java -jar启动后,访问8024端口,就可以见到如下界面:

可以看到,这个控制台提供了一组监控和管理Axon服务器的功能,既包括设置、搜索、概览、用户等常规功能,也包括命令、查询等与CQRS直接相关的浏览界面,还包括与第三方组件进行集成的插件界面

5.领域模型组件

  1. @Aggregate:表明聚合
  2. @CommandHandler:处理命令的方法
  3. @QueryHandler:处理查询的方法
  4. @EventHandler:处理事件的方法
  5. @EventSourceHandler:事件溯源支持,主要是标明响应事件修改状态的方法

6.分派模型组件

  1. CommandBus:命令路由组件
  2. QueryBus:查询路由组件
  3. EventBus:事件路由组件
相关推荐
leeyi7 天前
流式管道:Pipe、StreamReader、背压控制
agent·ai编程·领域驱动设计
rolt8 天前
[pdf]406页《分析模式》漫谈文集202606更新
ddd·架构师·uml·领域驱动设计
小时前端9 天前
如何实现AI驱动开发代码采纳率达到100%?
ai编程·领域驱动设计·cursor
.NET修仙日记10 天前
.NET 领域驱动设计:用户角色更新如何从应用服务落地到领域实体(代码拆解)
c#·.net·领域驱动设计·微软技术·角色设计
赵榕18 天前
CQRS的两种设计方式
ddd·领域驱动设计·cqrs
co_der22 天前
救救孩子吧:被 AI 蠢哭后,我手把手教它 DDD,最后逼它自己写了这篇总结
ai编程·领域驱动设计
刀法如飞1 个月前
DDD 与 Ontology 对比分析:哪一种更适合AI时代复杂系统构建?
java·架构·领域驱动设计
幸福的猪在江湖1 个月前
5 万 Star!OpenSpec 规范驱动开发完全指南:让 AI 按你的规矩写代码
aigc·ai编程·领域驱动设计
王大大的刀2 个月前
《DDD 六边形架构入门:8000 字带你彻底搞懂聚合根、领域服务、防腐层》
领域驱动设计