Domain driven design 多个有界上下文应该使用多少事件存储?
我目前正在阅读有关DDD的文章,但我没有找到这个问题的答案。如果我们有一个具有多个有界上下文的大型应用程序,那么据我所知,我们应该实现每个BC,因为它是一个单独的应用程序。因此,得出每个BC都有自己的UI和事件存储的结论是合乎逻辑的。我以前认为我们只有一个事件存储,因为根据一些文章(关于CQR),它是唯一的真相来源。这些陈述的唯一问题是缺乏上下文。那么,事件存储是单个有界上下文中还是整个应用程序中的唯一真实来源呢Domain driven design 多个有界上下文应该使用多少事件存储?,domain-driven-design,event-sourcing,bounded-contexts,Domain Driven Design,Event Sourcing,Bounded Contexts,我目前正在阅读有关DDD的文章,但我没有找到这个问题的答案。如果我们有一个具有多个有界上下文的大型应用程序,那么据我所知,我们应该实现每个BC,因为它是一个单独的应用程序。因此,得出每个BC都有自己的UI和事件存储的结论是合乎逻辑的。我以前认为我们只有一个事件存储,因为根据一些文章(关于CQR),它是唯一的真相来源。这些陈述的唯一问题是缺乏上下文。那么,事件存储是单个有界上下文中还是整个应用程序中的唯一真实来源呢 "Is an ES the single source of truth in
"Is an ES the single source of truth in a bounded context or in entire application?"
我猜你指的是系统,因为用最简单的解释来说,有界上下文是一个应用程序
"If we have a large application with multiple bounded contexts"
同一模型中不能有多个有界上下文。有界上下文限制模型。所以,您应该为子域
更改术语有界上下文
,这是正确的
无论如何,回答你的问题。视情况而定
整个系统的单事件存储
专业人士
- 一个管理的地方
- 通过CorrelationID很容易看到相关事件
- 在某些软件中,不需要服务发现。所有服务(应用程序)都可以通过单个ES集成(我指的是真正的ES,而不是数据存储)
- 所需的cpu/内存更少
- 单点故障(当然,您可以扩展它,以避免这种情况)
- 您将服务耦合在一起(打破了microservice的规则)
- 有义务在系统生命周期内不更改ES
- 没有单点故障
- 与应用程序一起部署
- 服务之间没有耦合。更多自治权
- 如果应用程序将被禁用,则可以将其取消绑定
- 新服务可以与新版本甚至不同版本的服务一起使用
- 需要关注和监控的其他数据库
- 消耗更多的cpu/ram
- 更难管理CorrelationID,因为它们在多个E之间被拆分
- 需要一些服务发现。用于订阅多个ES或需要额外的消息队列