1、海量数据,超大并发,数据库无损扩容扩容四种实践目录 缘起 停服方案 追日志方案 双写方案 成倍扩容方案缘起典型架构 特点:数据量大/吞吐量大/高可用 系统架构:微服务微服务 数据层如何高可用高可用 数据层如何扩展扩展 综合情况面临的挑战?吞吐量持续增大,如何进一步增加实例?数据量持续增大,如何进一步水平扩展?方案一:停服方案停服,最简易的方案 目的:提升系统性能,数据库集群读写实例增加,数据库单实例数据量减少 做法:数据库水平切分x,变为水平切分y(yx) 步骤:1. 挂出公告,停止服务2. 建立新库,数据迁移3. 修改配置,访问新库4. 重启服务,恢复流量最大缺点,不平滑,不高可用方案二:追
2、日志方案追日志方案 目的:提升系统性能,数据库集群读写实例增加,数据库单实例数据量减少 做法:数据库水平切分x,变为水平切分y(yx) 核心:升级一次服务,研发3个小工具步骤 记录日志记录日志(服务升级服务升级) 数据迁移(小工具1) 数据补齐(小工具2) 数据检验(小工具3)步骤 记录日志(服务升级) 数据迁移数据迁移(小工具小工具1) 数据补齐(小工具2) 数据检验(小工具3)步骤 记录日志(服务升级) 数据迁移(小工具1) 数据补齐数据补齐(小工具小工具2) 数据检验(小工具3)步骤 记录日志(服务升级) 数据迁移(小工具1) 数据补齐(小工具2) 数据检验数据检验(小工具小工具3)方案
3、三:双写方案双写方案 目的:提升系统性能,数据库集群读写实例增加,数据库单实例数据量减少 做法:数据库水平切分x,变为水平切分y(yx) 核心:升级一次服务,研发2个小工具步骤 双写数据双写数据(服务升级服务升级) 数据迁移(小工具1) 数据检验(小工具2)步骤 双写数据(服务升级) 数据迁移数据迁移(小工具小工具1) 数据检验(小工具2)如何保证一致性?步骤 双写数据(服务升级) 数据迁移(小工具1) 数据检验数据检验(小工具小工具2)方案四:成倍扩容方案成倍扩容方案 目的:提升系统性能,数据库集群读写实例增加,数据库单实例数据量减少 做法:数据库水平切分n,变为水平切分2*n 优点:代码无需任何改劢,平滑升级,秒级扩容初始状态步骤一:修改配置步骤二:重载配置,完成服务实例加倍步骤三:清扫战场,完成数据量减半结束状态总结 海量数据,超高并发,数据库扩容四种方案:(1)停服停服方案:停服,迁移数据,重启(2)追日志追日志方案:1次服务升级(记日志),3个小工具(迁移数据,补齐数据,检验数据)(3)双写双写方案:1次服务升级(双写),2个小工具(数据迁移,检验数据)(4)成倍扩容成倍扩容方案:修改配置,重载配置,清扫战场