蓝科溯源

www.bluearp.com

什么是事件溯源(Event Sourcing)

2017-07-04 08:01:34

那么,事件到底如何影响一个领域对象的状态的呢?很简单,当我们在触发某个领域对象的某个行为时,该领域对象会先产生一个事件,然后该对象自己响应该事件并更新其自己的状态,同时我们还会持久化在该对象上所发生的每一个事件;这样当我们要重新得到该对象的状态时,只要先创建一个空的对象,然后将和该对象相关的所有事件按照事件发生先后顺序从先到后再全部应用一遍即可还原得到该对象的状态,这个过程是所谓的事件溯源;

我们可以看到,基于这样的设计,领域对象的状态完全是由事件驱动的。不仅如此,事件还可以被事件总线分发出去,通知领域模型外的一切事件响应者发生了什么,基于这种Publish-Subscribe的通信模式,我们可以限度的实现系统的松耦合。

 

 

一个对象从创建开始到消亡会经历很多事件,以前我们是在每次对象参与完一个业务动作后把对象的状态持久化保存到数据库中,也是说我们的数据库中的数据是反映了对象的当前的状态。而事件溯源则相反,不是保存对象的状态,而是保存这个对象所经历的每个事件,所有的由对象产生的事件会按照时间先后顺序有序的存放在数据库中。可以看出,事件溯源的这种做法是更符合事实观的,因为它完整的描述了对象的整个生命周期过程中所经历的所有事件。

另一方面,因为是用事件来表示对象的状态,而事件是只会增加不会修改。这能让数据库里的表示对象的数据非常稳定,不可能存在DELETE或UPDATE等操作。因为一个事件是表示一个事实,事实是不能被磨灭或修改的。这种特性可以让领域模型非常稳定,在数据库级别不会产生并发更新同一条数据的问题;其实CAP定理之所以做不到,根本原因也是由于数据可以被修改;现在通过事件溯源,我们实现CAP或许成为了可能;

 

蓝城云软件产品收费标准

二维码应用云溯源

联系我们
现在注册,即可享受免费生成二维码溯源
蓝城云微信
购买咨询
溯源解决方案
灵活的合作方式
1对1贴心售后服务
2017 bluearp.com 版权所有 京ICP备17007110号-1
溯源软件,溯源系统,二维码溯源,溯源管理软件,查询真伪,二维码溯源2222
服务热线
服务热线

022-82939965

服务时间 周一至周五 8:30-18:00
7*24小时咨询热线 业务咨询

许经理 13001001853

项目咨询

闫经理 13051250015

王经理 13051210015

扫码关注
扫一扫关注溯源案例
返回顶部
022-82939965