命令查询职责分离器 (Command Query Responsibility Segregator)



问题陈述 (Problem Statement)

微服务架构将应用程序构建为一组松散耦合的微服务,每个服务都可以以敏捷的方式独立开发,以实现持续交付/部署。如果我们使用了每个服务一个数据库的设计模式,那么如何执行需要来自多个服务数据的查询?

解决方案 (Solution)

我们可以定义一个只读视图数据库来支持所需的查询。应用程序将通过订阅拥有数据的服务触发的事件来保持视图数据库的最新状态。在此设计模式中,我们将更新操作和读取操作分离开来。一个服务只读取数据,其他服务更新数据。

Command Query Responsibility Segregator Pattern

为了实现此模式,我们通常需要重构领域模型以支持单独的查询数据和更新数据操作,以便每个操作都可以由微服务独立处理。CQRS 模式确保读取数据的操作与更新数据的操作分离。因此,一个操作可以读取或写入数据,但不能同时执行两者。

现在,多个服务可以更新记录并将事件发送到应用程序以更新视图数据库。这有助于查询服务获取一致的数据,而不会影响性能。

广告 (Advertisements)