什么是事件溯源
事件溯源是构建业务逻辑和持久化聚合的另一种选择,它将聚合以一系列的方式持久化保存。每个事件代表聚合的一次状态变化,应用程序通过重放事件来重新创建聚合的当前状态。
事件溯源的好处
- 可靠的发布领域事件
- 保留聚合的历史
- 最大限度的避免对象和关系的“阻抗失调”问题
- 为开发者提供一个时光机
事件溯源的弊端
- 这类编程模式有一定的学习曲线
- 基于消息传递应用程序的复杂性
- 处理事件的演化有一定难度
- 删除数据库存在一定难度
- 查询事件存储库非常有挑战性
事件存储和传统数据库的存储区别
如上图所示:传统数据库是表对应类,行对应条数,列对应属性,单对于一条数据的修改,它的历史无法获取,如果需要类似审计或者查看历史的需求,需要单独设计,并且相对复杂。基于时间溯源的存储,是存储聚合或者一类的所有状态变更。事件溯源存在的开源框架
- Even Store:由事件溯源技术的先驱Greg Young 开发的基于.NET的开源事件存储库
- Lagom:由Lightvebd开发的微服务框架,该公司之前的名字是Typesafe
- Axon:一个开源的java框架,用于开发使用事件溯源和CQRS的事件驱动应用程序
- Eventuate:由Chris Richardson的创业公司Eeventuate开发。