1.CQRS 的另外两种战略

前面介绍过“数据库结构别离”部分的架构图如下:

DDD之CQRS性能的架构选择

当咱们遇到更高的并发功能需求时,就要考虑分布式程序和数据库了。

1.1 分布式程序:应用服务别离

有些情况下,运用指令的并发请求相对比较少,而运用查询的并发请求却很多,需要横向扩展才能满意功能和可用性要求,那么就能够考虑拆成两个微服务了。咱们把这种战略称为“应用服务别离”。

拆分后的架构如图。

DDD之CQRS性能的架构选择

应用服务别离战略的优点是简单横向扩展,价值则是微服务的数量增加了,相应的运维和管理成本也就随之增加了。

1.2 分布式数据库库:数据库实例别离

上面的例子里,微服务分开了,可是数据库实例并没有分开。尽管经过微服务的横向扩展,能够处理由于应用程序形成的功能瓶颈,可是如果功能瓶颈是由数据库引发的,那么拆分微服务的战略就无法处理问题了。这时候,就能够考虑“数据库实例别离”的战略了。

数据库实例别离的架构图是这样的。

DDD之CQRS性能的架构选择

数据库实例别离战略的优点是查询数据库能够横向扩展,能够灵活地选择数据存储机制,比较简单处理数据库形成的功能瓶颈。价值是增加了数据同步的复杂性,数据同步的延迟也可能会更高。

2.各种战略的组合

DDD之CQRS性能的架构选择


此文章为3月Day3学习笔记,内容来源于极客时刻《手把手教你落地 DDD》