一、介绍

1 Apache ShardingSphere 在分片算法上提供给用户极大的自由度,但却给弹性伸缩造成了极大的挑战。 找寻即能支持自定义的分片算法,又能高效地将数据节点进行扩缩容的方式,是弹性伸缩面临的第一个挑战;

2 同时,在伸缩过程中,不应该对正在运行的业务造成影响。 尽可能减少伸缩时数据不可用的时间窗口,甚至做到用户完全无感知,是弹性伸缩的另一个挑战;

3 最后,弹性伸缩不应该对现有的数据造成影响,如何保证数据的正确性,是弹性伸缩的第三个挑战。

4 ShardingSphere-Scaling 是一个提供给用户的通用数据接入迁移及弹性伸缩的解决方案。

image.png

ShardingSphere-Scaling 从 4.1.0 版本开始向用户提供。 当前处于 alpha 开发阶段。

二、核心概念

1弹性伸缩作业

指一次将数据由旧规则迁移至新规则的完整流程。

2 存量数据

在弹性伸缩作业开始前,数据节点中已有的数据。

3 增量数据

在弹性伸缩作业执行过程中,业务系统所产生的新数据。

三、规范

1 支持项

1 将外围数据迁移至 Apache ShardingSphere 所管理的数据库;

2 将 Apache ShardingSphere 的数据节点进行扩容或缩容。

2 不支持项

1 无主键表扩缩容;

2 复合主键表扩缩容;

3 不支持在当前存储节点之上做迁移,需要准备一个全新的数据库集群作为迁移目标库。