事件源和CQRS如何帮助实现微服务的解耦架构。
我们可以有拥有自己数据的微服务,以及其他通过服务访问数据的微服务,即使是通过传统的持久化方式。不是吗?
发布于 2020-01-08 16:56:47
事件源和CQRS不是用来解耦服务的。
使用CQRS实现的主要目标是提高服务的性能,因为您可以对写入(命令)和读取(查询)使用不同的持久性类型。
多亏了这一点,你可以使用像事件日志这样的高性能写类型持久化来存储服务中发生的所有事件,并使用关系模型例如读取,其中您可以按照查询所需的方式存储信息。
实现两个模型之间一致性的方法通常是使用命令模型生成的事件来更新读取模型。这种方法的缺点是最终的一致性,因为读取模型的更新不会立即发生。
与cqrs高度相关的是事件源,它规定模型中的所有修改都应该像事件存储中的事件一样存储。这样,您就可以对应用程序中的所有操作进行历史记录。这样做的好处是,为了审计的目的,您可以对所有更改进行历史记录,并且写入速度非常快。缺点是,如果你想得到当前的状态,你必须重播从一开始的所有事件。
为了解决这个问题,您可以使用cqrs来获取进行查询的实际状态。
https://stackoverflow.com/questions/59642013
复制相似问题