发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA

Event sourcing是否只适用于稳定业务

         
2017-08-03 16:18
赞助商链接

CQRS+ES我们已经在生产环境中使用了,但实际使用中感觉对业务变化并不如想象中的灵活

比如当业务发生变化时,如果修改了event的相关定义,那么所有已经在event store中存储的event则可能在Event sourcing时发生错误,比如缺少某些字段,这让我们在业务发展时必须小心翼翼的进行修改,有时甚至需要用脚本处理历史event以适应新的定义

如果业务经常变更的话,是否Event sourcing并不适用

1
2017-08-03 18:24

ES虽然是动态事件,但是也依赖于静态于结构,DDD聚合要划分到位,然后追踪聚合根发生的领域事件,领域事件不是领域所有事件,而是会在其他地方引起反应的事件,将这些领域事件保存起来。ES中的Event是指这些事件,很显然,Event中携带的数据格式于聚合根结构有关,如果聚合根变动,那么Event也会改变,所以,不能一概而论ES只适合稳定业务,而是适合对业务透彻理解,能够抓住聚合根结构的系统。

另外从技术上看,建议Event携带业务数据时最好只带业务数据的Id,业务数据存储与事件存储分离,这样也能做到解耦业务数据结构对事件的影响。

2017-08-04 09:03

理解了,透彻

2017-08-04 21:44

不过,如果不结合DDD实现ES,就类似区块链那种需要不可变性,也就是事件结构比较简单,一旦生成就不会再改变,比如微博发完就不能修改,只有删除,在这种情况下ES适合简单的业务结构,如果业务复杂,就需要DDD来找出简单的微结构:聚合。

EventSourcing      DDD聚合     

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系反馈 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com