事件溯源和 CQRS 如何帮助解耦微服务?

How event sourcing and CQRS help in decoupling microservices?

事件溯源和 CQRS 如何帮助实现微服务的解耦架构。

我们可以让微服务拥有自己的数据,而其他人甚至可以通过传统的持久化方式通过服务访问该数据。不是吗?

事件溯源和 CQRS 并非旨在用于解耦服务。

使用 CQRS 实现的主要目标是提高服务的性能,因为您可以对写入(命令)和读取(查询)使用不同的持久性类型。

多亏了这一点,您可以使用事件日志等高性能写入类型持久性来存储服务中发生的所有事件,并使用关系模型进行读取,以您需要的方式存储信息为您的查询。

实现两个模型之间一致性的方法通常是使用由查询消耗的命令模型生成的事件来更新读取模型。这种方法的缺点是最终一致性,因为读取模型的更新不会立即发生。

与 cqrs 高度相关的是事件溯源,它声明模型中的所有修改都应该像事件存储中的事件一样存储。这样您就可以了解在应用程序中执行的所有操作的历史记录。这样做的好处是您拥有所有更改的历史记录以供审计,并且写入速度非常快。缺点是,如果你想获得当前状态,你必须重播从一开始就发生的所有事件。

为了解决这个问题,你使用cqrs获取实际状态进行查询