系列文章是博主对沈剑的《架构师训练营》分享内容的个人笔记总结,原内容公众号“成为架构师”。

回顾

追日志方案:

  1. 服务升级,记录“数据修改”日志
  2. 迁移数据小工具,进行数据迁移
  3. 追日志小工具,追平数据差异
  4. 数据校验小工具,检验数据一致性
  5. 切流量到新库,完成平滑迁移

双写方案:

  1. 服务升级,“数据修改”双写
  2. 迁移数据小工具,进行数据迁移
  3. 数据校验小工具,检验数据一致性
  4. 切流量到新库,完成平滑迁移

两种方案都需求:服务升级,专门的小工具

服务屏蔽数据库复杂性

数据库高可用,虚IP,keepalived

通过水平切分,扩充数据量,增加实例个数

总体而言,互联网微服务的数据库架构是这样的:
【成为架构师3-13】数据库:水平切分,数据库秒级扩容
有服务层屏蔽底层复杂性,有高可用,又有水平切分。

这时候,随着数据量的不断增大,我们需求持续的扩展,也就落到了秒级扩容的水平切分方案上。

水平切分

这个水平切分方案是根据取模和成倍扩容给出的

步骤一:修改配置

【成为架构师3-13】数据库:水平切分,数据库秒级扩容
修改配置主要是两个点:

  1. 增加虚ip,原先是单个虚ip,如虚ip0,现在要增加到虚ip0,虚ip00
  2. 修改service的配置,原先是模2,现在更新为模4,这一更新是无损的,原先走模2余0的还是到ip0,余1的还是到ip1,这不会变化
步骤二:reload配置

微服务修改完配置还没有载入,所以需要reload,理论上,reload之后我们的扩容就完成了。

reload前面提到过了,有两种方案:

  1. 手动重启服务,让它载入新的配置,初始化连接池等
  2. 配置中心通知服务让它自动重启载入配置

无论是哪一种方案,reload这一过程都可以在秒级完成,reload之后,数据库实例从原先的两个对线上提供服务变为四个了。

步骤三:数据收缩,收尾

完成reload之后,虽然提供服务的实例个数增加了,但是数据量还是没有变化,这就需要收尾工作,进行数据收缩

数据收缩工作主要也是有两步:一是恢复高可用,二是删除不需要的数据
【成为架构师3-13】数据库:水平切分,数据库秒级扩容
主要以下三个步骤

  1. 解除旧的双主同步,它们现在是平行结构了
  2. 补充高可用,为四个新库分别建立四个备库,双主或者影子主
  3. 对四个库删除它们不需要的冗余数据,ip0的删除原先模4为2的数据,ip00删除原先模4为0的数据

后话:这个方案是非常成熟的,从两个库升级到256个库用的都是这个方案。


讨论还是以思路为主。

上一篇回顾:【成为架构师3-12】数据库:扩展性,平滑扩展如何实现
下一篇更精彩:持续更新中…

【成为架构师3-13】数据库:水平切分,数据库秒级扩容

相关文章:

  • 2021-06-22
  • 2021-10-17
  • 2021-04-03
猜你喜欢
  • 2021-11-23
  • 2021-08-18
  • 2021-08-26
  • 2022-02-04
相关资源
相似解决方案