clojure 使用的技术 eventsourcing 什么是事件溯源(Event Sourcing)
来源:互联网 发布:新垣结衣身高 知乎 编辑:程序博客网 时间:2024/06/07 14:18
什么是事件溯源(Event Sourcing)
一个对象从创建开始到消亡会经历很多事件,以前我们是在每次对象参与完一个业务动作后把对象的最新状态持久化保存到数据库中,也就是说我们的数据库中的数据是反映了对象的当前最新的状态。而事件溯源则相反,不是保存对象的最新状态,而是保存这个对象所经历的每个事件,所有的由对象产生的事件会按照时间先后顺序有序的存放在数据库中。可以看出,事件溯源的这种做法是更符合事实观的,因为它完整的描述了对象的整个生命周期过程中所经历的所有事件。
那么,事件到底如何影响一个领域对象的状态的呢?很简单,当我们在触发某个领域对象的某个行为时,该领域对象会先产生一个事件,然后该对象自己响应该事件并更新其自己的状态,同时我们还会持久化在该对象上所发生的每一个事件;这样当我们要重新得到该对象的最新状态时,只要先创建一个空的对象,然后将和该对象相关的所有事件按照事件发生先后顺序从先到后再全部应用一遍即可还原得到该对象的最新状态,这个过程就是所谓的事件溯源;
另一方面,因为是用事件来表示对象的状态,而事件是只会增加不会修改。这就能让数据库里的表示对象的数据非常稳定,不可能存在DELETE或UPDATE等操作。因为一个事件就是表示一个事实,事实是不能被磨灭或修改的。这种特性可以让领域模型非常稳定,在数据库级别不会产生并发更新同一条数据的问题;其实CAP定理之所以做不到,根本原因也是由于数据可以被修改;现在通过事件溯源,我们实现CAP或许就成为了可能;
我们可以看到,基于这样的设计,领域对象的状态完全是由事件驱动的。不仅如此,事件还可以被事件总线分发出去,通知领域模型外的一切事件响应者发生了什么,基于这种Publish-Subscribe的通信模式,我们可以最大限度的实现系统的松耦合。
- clojure 使用的技术 eventsourcing 什么是事件溯源(Event Sourcing)
- 什么是事件溯源(Event Sourcing)
- 事件溯源(Event Sourcing)
- 事件溯源(Event Sourcing)
- Cloud Design Pattern - Event Sourcing Pattern(事件溯源模式)
- Event Sourcing
- CQRS 和 EVENT SOURCING的例子读后感
- DDD、CQRS、Event Sourcing
- 事件对象Event的使用
- Event事件的使用练习
- WHY CQRS and EVENT SOURCING
- 为什么要用Event Sourcing?
- 事件(event)的逻辑
- 什么是clojure的副作用(side effect)
- 如何理解事件溯源
- 互斥量(mutex)与事件(event)的使用
- mysql事件(event)的简单使用
- 基于Event Sourcing和DSL的积分规则引擎设计实现案例
- Android如何设置ListView不可点击
- PJAX实现页面无刷新跳转及加载数据(浏览器可回退前进)
- MySQL学习第二篇:MySQL安装
- 初识visual studio与.net
- 将自己的应用添加到安卓系统的可分享应用列表中
- clojure 使用的技术 eventsourcing 什么是事件溯源(Event Sourcing)
- java json转对象
- Servlet 实现计时器
- bzoj 1967: [Ahoi2005]CROSS 穿越磁场(离散化+spfa)
- CentOS6.8安装caffe的几点注意事项
- python-sympy
- android 杂类笔记
- spring-08-如何解决异常处理
- 一个超长SQL语句的规范书写格式范例.