DDD领域驱动/CQRS读写分离/ES事件溯源 这些前沿的时髦的技术理念汇聚在一次,落地到一套完整实现方案。这就是Axon
我们从ES事件溯源开始说
传统的数据库设计只记录数据的当前状态,对于输入如何到达当前状态的过程信息则并不重视。
保存当前状态.png
而ES采用了完全不同的记录方式,它记录所有改变当前状态的事件。并从这些事件累加出当前状态。它于传统方式相比有如下特性:
更好的追溯问题的起因。(传统方式只能到log中找)
更大的数据存储(是缺点也是优点,有利于数据挖掘)
对于事件只插入不更新。没有锁,吞吐量更高
更复杂的实现
保存历史事件.png
ES还有一种辅助机制来减少溯源的计算量,定期做一个当前状态的快照。事件在最近的快照后进行累加
保存历史事件-快照.png
领域驱动中提到过充血/失血模型
传统实现是失血模型,数据和行为是分离的。数据存储在数据库中,使用时加载到应用服务器,然后处理之后再存入数据库。
而真正面相对象的设计中,数据和行为是在一起的(比如Actor模型),
版权声明:本文为weixin_36102776原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。