1.CQRS 的另外两种策略
前面介绍过“数据库结构分离”部分的架构图如下:
当我们遇到更高的并发性能需求时,就要考虑分布式程序和数据库了。
1.1 分布式程序:应用服务分离
有些情况下,使用命令的并发请求相对比较少,而使用查询的并发请求却很多,需要横向扩展才能满足性能和可用性要求,那么就可以考虑拆成两个微服务了。我们把这种策略称为“应用服务分离”。
拆分后的架构如图。
应用服务分离策略的好处是容易横向扩展,代价则是微服务的数量增加了,相应的运维和治理成本也就随之增加了。
1.2 分布式数据库库:数据库实例分离
上面的例子里,微服务分开了,但是数据库实例并没有分开。虽然通过微服务的横向扩展,可以解决由于应用程序造成的性能瓶颈,但是如果性能瓶颈是由数据库引发的,那么拆分微服务的策略就无法解决问题了。这时候,就可以考虑“数据库实例分离”的策略了。
数据库实例分离的架构图是这样的。
数据库实例分离策略的好处是查询数据库可以横向扩展,可以灵活地选择数据存储机制,比较容易解决数据库造成的性能瓶颈。代价是增加了数据同步的复杂性,数据同步的延迟也可能会更高。
2.各种策略的组合
此文章为3月Day3学习笔记,内容来源于极客时间《手把手教你落地 DDD》