【发布时间】:2020-04-25 18:17:54
【问题描述】:
事件溯源和 CQRS 如何帮助实现微服务的解耦架构。
我们可以让微服务拥有自己的数据,而其他人甚至可以通过传统的持久性方式通过服务访问该数据。不是吗?
【问题讨论】:
标签: microservices cqrs event-sourcing
事件溯源和 CQRS 如何帮助实现微服务的解耦架构。
我们可以让微服务拥有自己的数据,而其他人甚至可以通过传统的持久性方式通过服务访问该数据。不是吗?
【问题讨论】:
标签: microservices cqrs event-sourcing
事件溯源和 CQRS 并非旨在用于解耦服务。
使用 CQRS 实现的主要目标是提高服务的性能,因为您可以对写入(命令)和读取(查询)使用不同的持久性类型。
多亏了这一点,您可以使用高性能写入类型的持久性(如事件日志)来存储服务中发生的所有事件,并使用关系模型(例如,以您需要的方式存储信息的读取)查询。
实现两个模型之间的一致性的方法通常是使用命令模型生成的事件来更新读取模型。这种方法的缺点是最终一致性,因为读取模型的更新不会立即发生。
与 cqrs 高度相关的是事件溯源,它指出模型中的所有修改都应该像事件一样存储在事件存储中。这样,您就可以了解应用程序中所做的所有操作。这样做的好处是您拥有所有更改的历史记录以用于审计目的,并且写入速度非常快。缺点是如果你想获得当前状态,你必须重播从一开始的所有事件。
为了解决这个问题,你使用 cqrs 获取实际状态来进行查询
【讨论】: