分布式设计模式-事件溯源

1,319 阅读1分钟

什么是事件溯源

事件溯源是构建业务逻辑和持久化聚合的另一种选择,它将聚合以一系列的方式持久化保存。每个事件代表聚合的一次状态变化,应用程序通过重放事件来重新创建聚合的当前状态。

事件溯源的好处

  • 可靠的发布领域事件
  • 保留聚合的历史
  • 最大限度的避免对象和关系的“阻抗失调”问题
  • 为开发者提供一个时光机

事件溯源的弊端

  • 这类编程模式有一定的学习曲线
  • 基于消息传递应用程序的复杂性
  • 处理事件的演化有一定难度
  • 删除数据库存在一定难度
  • 查询事件存储库非常有挑战性

事件存储和传统数据库的存储区别

如上图所示:传统数据库是表对应类,行对应条数,列对应属性,单对于一条数据的修改,它的历史无法获取,如果需要类似审计或者查看历史的需求,需要单独设计,并且相对复杂。基于时间溯源的存储,是存储聚合或者一类的所有状态变更。

事件溯源存在的开源框架

  • Even Store:由事件溯源技术的先驱Greg Young 开发的基于.NET的开源事件存储库
  • Lagom:由Lightvebd开发的微服务框架,该公司之前的名字是Typesafe
  • Axon:一个开源的java框架,用于开发使用事件溯源和CQRS的事件驱动应用程序
  • Eventuate:由Chris Richardson的创业公司Eeventuate开发。