Axon框架助力CQRS架构开发
1. 微服务架构中的一致性与权衡
在微服务架构中,一致性的放松在用户体验层面难以完全隐藏。例如,当订单微服务和库存微服务分区时,可能出现这样的情况:Joe确认购买了库存中的最后一件商品后,Ann仍能将该商品加入购物车并确认结账,之后才会得知该商品已无库存。从微服务设计角度看,这属于暂时的不一致,但最终会达到一致。Ann要么在付款前被系统告知商品无货,要么在最坏情况下(已为无货商品付款)获得退款。
架构设计本质上是一种权衡,在微服务架构中,明智的权衡尤为重要。网络在微服务架构中不可避免,因此分区容错技术应在架构设计时就考虑进去,而不是事后补救。分区容错程度会影响应用的可用性和一致性,平衡这三个特性是微服务应用架构设计的关键。
2. Axon框架简介
Axon是一个轻量级框架,可帮助开发者应用CQRS架构模式,构建模块化、基于SOA的解决方案。它提供了诸如聚合、存储库和事件总线等重要构建块的实现。
- 聚合(Aggregates) :负责将实体按父子层次结构分组,并明确聚合根的职责,以管理实体树在数据一致性和同步方面的生命周期。
- 事件总线(Event Buses) :可消除创建、维护和跟踪应用不同部分之间关联ID的繁琐细节,保证事件能正确传递给事件监听器,并按预期顺序并行处理。
- Java注解支持 :开发者可在不依赖Axon特定逻辑的情况下构建聚合和事件监听器。
Axon采用Apache 2许可证,可免费用