核心价值
1.减少并发冲突
2.记录每个操作细节
3.解耦领域数据模型与业务消息领域数据(四色模型-消息)
实施方案
1.记录事件信息,一定保障(顺序写,时序性,带版本戳,消息ID的生成,微服务节点的无状态化,和ID生成器的workId如何配合)
2.配合CQRS使用,实体最新状态使用”物化视图”(可以定时生成快照,避免全量重播事件,可以使用异步模式)
3.消费事件的服务,需要注意幂等
4.事件解耦后的最终一致性(后续章节描述)
5.事件的消费,一般放到领域aggregate中,以实现领域逻辑内聚。(当然具体逻辑可以使用gateway接口,在infrastructure具体实现)
事件消费也可以使用状态机,提示领域逻辑的可视化。
1 | @CommandHandler |
框架支持
Java Axon 框架
实体快照,储存事件,事件重试/升级,事件溯源(fetch拉事件)
参考
http://soooban.github.io/2019/06/10/Event-Sourcing-And-CQRS/
引申问题
实现可靠消息,参加后续文章