微服务拆分之数据库拆分

现状

假设现在又一个大而全的系统,或者包含多个业务的微服务,业务复杂,如下示意图所示:


db-all.PNG

如上所示,服务S1包含A、B、C三个业务,并全部围绕同一个DB构建。三个业务比较独立,先将三个业务进行拆分成独立的微服务。

拆分

服务按照业务拆分关系比较明确,A、B、C全部拆出来,依赖的数据库也需要拆分出来,但有些表属性是多个业务共享的,数据库如何拆分呢?

方案1:接口调用方式
通过其中一个服务提供接口,给另外一方调用,这样两个服务及数据库全部解耦。这种方式虽然解耦了,但数据调用方还是强依赖接口提供方,并且接口调用又时延。针对上述问题,要又容错机制、限流、降级等措施。

s1.PNG

方案2:数据异构方式
通过数据异构的方式实现两个服务直接彻底解耦。

s2.PNG

拆分步骤

1)实施拆分的时候,要做好兼容性,以及做好回退方案。

你可能感兴趣的:(微服务拆分之数据库拆分)