Dan*_*ial 6 cqrs event-sourcing microservices
我在微服务架构的背景下非常新,并阅读这篇文章:http://microservices.io/patterns/data/event-sourcing.html以熟悉微服务架构中的事件源和数据存储.我已经阅读了很多关于系统3个重要方面的文档:
这是我的问题:
数据库如何与事件采购同时出现?我已经阅读了CQRS模式,但我无法理解CQRS模式如何与事件存储和事件对象相关?
任何机构都能为我提供完整的图片,并且所有参与者都可以收集一系列操作:CQRS模式,事件源(包括事件存储模块)以及最终不同的微服务?
正如你所看到的,我已经理解了所有小块游戏,但是我无法将它们联系起来构成一个完整的图像.CQRS与事件源和在DB中存储数据之间的特别相关性.我读了很多文章,例如:
但在所有这些小球员中都有讨论.即使手绘图像也将受到赞赏.
数据库如何与事件采购同时出现?我已经阅读了CQRS模式,但我无法理解CQRS模式如何与事件存储和事件对象相关?
CQRS的"查询"部分指示您如何创建事件的投影,这适用于某些"有界上下文",其中数据库可用作持久化投影的手段."命令"部分允许您隔离数据转换逻辑并将其与应用程序的"查询"和"持久性"方面分离.简单地说 - 你只需要以多种方式将事件流投影到数据库中(投影也可以是关系),具体取决于任务.在此模型中,"查询"和"命令"有自己的方式来预测和存储事件数据,并针对应用程序的特定部分的需要进行了优化.相同的数据将存储在事件和投影中,这将允许实现子域(有界上下文,微服务)之间的简单性和松散耦合.
任何机构都能为我提供完整的图片,并且所有参与者都可以收集一系列操作:CQRS模式,事件源(包括事件存储模块)以及最终不同的微服务?
您是否看到Greg Young尝试提供最简单的实施方案?如果您仍然困惑,请考虑创建有关其示例的更具体的问题.
在由许多微服务组成的系统中,我们应该有一个事件存储器,还是每个微服务器都有自己的存储器?或两者都可能?
它通常是一个常见的事件存储,但肯定会有一些例外情况,在这种情况下你真的需要为不同的微服务提供多个存储.这一切都取决于商业案例.如果你不确定 - 最有可能你现在只需要一个存储空间.
关于CQRS的相同问题.这种模式是在所有微服务中实现的还是仅在一个中实现?
它可以在大多数性能要求高的微服务中实现.这一切都取决于您将CQRS引入其中时实施的复杂程度.如果它变得更简单 - 为什么不在任何地方实现它?但是如果团队中的人越来越感到困惑,需要在命令和查询部分之间执行更明确的同步 - 也许cqrs对你来说太过分了.这一切都取决于你的团队,在你的领域......不幸的是,没有一个简单的答案.
最后,在使用微服务架构的情况下,必须只有一个DB或每个微服务应该有自己的?
如果相同的微服务共享相同的表 - 这通常被认为是反模式,因为它增加了耦合,系统变得更脆弱.您仍然可以共享同一个数据库,但不应该有共享表.此外,来自一个微服务的表更好地没有FK到另一个微服务中的表.同样的原因 - 减少耦合.
PS:考虑不要问粗粒度的问题,因为很难得到人们的回应.几个更小,更具体的问题将有更好的机会得到回答.