DDD之CQRS性能的架构选择

1,080 阅读2分钟

1.CQRS 的另外两种策略

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

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

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

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

拆分后的架构如图。

image.png

应用服务分离策略的好处是容易横向扩展,代价则是微服务的数量增加了,相应的运维和治理成本也就随之增加了。

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

上面的例子里,微服务分开了,但是数据库实例并没有分开。虽然通过微服务的横向扩展,可以解决由于应用程序造成的性能瓶颈,但是如果性能瓶颈是由数据库引发的,那么拆分微服务的策略就无法解决问题了。这时候,就可以考虑“数据库实例分离”的策略了。

数据库实例分离的架构图是这样的。 image.png

数据库实例分离策略的好处是查询数据库可以横向扩展,可以灵活地选择数据存储机制,比较容易解决数据库造成的性能瓶颈。代价是增加了数据同步的复杂性,数据同步的延迟也可能会更高。

2.各种策略的组合

image.png


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