幸福一箩筐|领域驱动设计框架Axon实践( 三 )

  • 支持系统高吞吐量:CQRS的支持 , 天然适合高并发场景 , 如果系统有高并发的需求 , 使用Axon框架可以得到更好的支持 。
  • 便于维护和拓展:Axon框架的代码层次清晰 , 易维护 , 使用的事件机制让系统更具可扩展性 。
  • 难点
    • 分布式事务一致性问题 , saga虽然能保证分布式事务的最终一致性 , 但是实施起来困难很大 , 需要开发各种补偿机制来实现 。 而且没有考虑到服务的宕机、幂等、重试支持等问题 。
    • 批量事务处理能力较弱 , 对于一些批量功能 , 目前只能转换成单独的命令进行处理 , 没有提供很好的批处理能力 。
    • 与Spring Cloud整合问题 , Axon支持与Spring Cloud结合 , 使用分布式消息队列来实现分布式系统间命令的分发 , 但是目前没有比较良好的实现 , 中文文档较少 , 需要进一步研究实施 。
    • Axon的充血模型虽然是一大特色 , 但是实施起来比较繁琐 , 对于简单的业务实现 , 贫血模型更加适合 。
    【幸福一箩筐|领域驱动设计框架Axon实践】中文文档少 , 上手难度较高 , 国内使用人少 , 遇到问题可请教或讨论的人少 。
    未来规划从4.0版本开始 , Axon已经不止是个框架 , 而是一个由Axon Framework和Axon Server组成的平台 。 目前官方发布的最新Axon版本已经是v4.3.3 , 本文中的项目基于Axon框架v3.04进行开发 , 并且是基于单机事件传播 , 对于Axon Server机制还未深入研究使用 。 另外对于一些高级特性如:与Spring Cloud整合、分布式命令、分布式事件、分布式事务等需要进一步实践和总结 。 Axon命令分发支持与配置AMQP协议的MQ(Message Queue)绑定 , MQ用于把Event分发到MQ中 , 采用这种机制可以针对性的对服务进行更细粒度的拆分 , 命令分发和处理可以配置成不同的模块 , 按照各自吞吐量进行服务部署 。 此外 , 分布式事务一直是个令人头疼的问题 , 对于saga的优雅实现需要花费更多的时间进行深入研究 。
    领域思想的转变对面向对象开发语言有着重大的帮助 , 成熟的架构支持及持久的维护性对于技术选型有着很大的影响 , 流行的Axon, Akka, Cola等框架势头正猛 , 相信领域思想未来会更深入人心 。
    原文地址:
    原文作者:微信公众号:爱奇艺技术产品团队 - 随刻信息流团队


    推荐阅读