互联网项目中有很多“数据量大,表模业务复杂度高,式下数据需要分库分表”的迁移业务场景。 这样分层的文弄架构 (1)上层是业务层biz,实现业务逻辑封装; (2)中间是懂分服务层service,封装数据访问; (3)下层是库分数据层db,存储业务数据; 当数据量持续新增,式下数据面临着这样一些需求,迁移两台数据库无法容纳,文弄需要数据库扩容,懂分这里选择2台—扩容到3台的库分模式,如下图: 这样扩容的问题 (1)分库分表的策略导致数据迁移量大; (2)影响数据的持续服务性; (3)指定时间完成,技术压力大,亿华云计算容易导致预想不到的错误; 如何平稳不停机迁移数据,保证系统持续服务。 (1)分库分表基于MySQL数据库,使用shard-jdbc中间件 (2)该方案的思路整体基于SpringCloud微服务架构 (1)扩容情况下不需要暂停服务; (2)数据迁移的压力小,不需要指定时间; 方案描述 基于两台数据库分库分表,简称:服务二 基于三台数据库分库分表,简称:服务三 (1)提供两套服务,服务二和服务三 (2)数据库扩容后,如果访问服务三直接获取到数据,流程结束。 (3)如果访问服务三获取不到数据,则访问服务二获取数据。 (4)在迁移开始的一段时间内,访问压力还会在服务二上面。 (5)这样就做到数据访问服务不会停机。 (6)这种访问模式基于SpringCloud很容易做到。 方案描述 (1)关闭基于两台库的数据入库流程 (2)开启基于三台库的数据入库流程,这样新入库数据就可以被服务三直接访问到。 (3)开发数据迁移中间件,扫描原先两台库的数据。 (4)扫描的数据根据分三台库策略判断是否需要迁移。 (5)如果数据需要迁移,则调用服务三的数据入库接口。 (6)数据迁移完成后,删除原来的位置的数据。 (7)这种迁移模式基于SpringCloud很容易做到。 (1)整个过程是持续对线上提供服务; (2)数据迁移中间件的开发复杂度较低; (3)可以限速慢慢迁移,没有时间压力。架构方案:分库分表模式下,文弄数据库扩容方案
一、懂分数据库扩容
1、库分业务场景二、扩容解决方案
1、扩容方案图解