对于数据库单表性能问题,常见做法是分库分表,这样将会带来 单库 Join 方面的性能问题。

在微服务领域,去数据库 Join 是一种常见做法。即通过不同的服务,读取数据之后再进行 Join,再对外提供聚合好的数据( 这个服务 Backend for Frontend,即 BFF 层 )。这样会带来如下几个问题

对于如上问题,业界常常会采用 数据分发 + 预聚合 ( CQRS ) 的方式

其本质就是通过数据分发,获取数据的更新,并实时计算聚合好的数据,存入数据库中作为缓存。

因为计算聚合的过程是会有一点延时,所以是实现最终一致性。