System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种分片方法、系统及设备技术方案_技高网

一种分片方法、系统及设备技术方案

技术编号:41289529 阅读:5 留言:0更新日期:2024-05-11 09:38
本申请公开了一种分片方法、系统及设备,通过根据雪花主键中的机器ID将数据分成多个槽,其中,每个机器ID对应一个槽,然后把槽内数据按照分片阈值拆分成多个分片,当分片大小达到阈值时,新的插入数据插入到新的数据分片中,由于槽内数据主键是有序插入,可记录每个分片的主键的最小值和最大值,以便根据主键定位分片,最后再把分片分配到集群中。相对于现有技术中先按照范围把数据划分到小的分片的方式,导致分片需要不断拆分合并的方式,先把数据按照生成该主键的机器划分成数据槽,再在数据槽下进行分片,由于雪花主键特点,数据槽下的数据是有序的,可以根据主键快速锁定主键隶属的分片,不需要对分片进行拆分和合并,提高了分片效率。

【技术实现步骤摘要】

本申请涉及计算机,特别是涉及一种分片方法、系统、设备。


技术介绍

1、分布式集群能否便捷地动态扩展容量关系到整个集群的处理能力和资源利用效率,传统方法将单条数据按哈希、一致性哈希或区域碎片等方式进行分区,难以满足集群扩容哈希与范围碎片重新分布等问题,难以实现实时扩展;一致性哈希相对哈希与范围切片技术可以有效降低扩展过程中受到影响的节点数量,但单个节点之间的数据重新分配性能仍然较差,而通过添加一致性哈希的方法,可以使数据分布更加平衡,但同时也会带来更多的受到影响的节点。

2、目前主流的分布式计算技术采用的方法是按照分片键的范围进行分片,再根据特定的规则将其划分为不同的集群。与常规方法相比,该方案显著得提升了集群在扩容时数据重分布的性能,因为集群节点间数据重分布是按照一个个小的分片进行数据重分布的,不需要逐条数据进行重分布。

3、但是,当数据被无规则地插入时,按照分片键的范围进行分片,就会产生尺寸不均匀的分片,而过大的分片(可以通过阈值来确定,例如设定90m为大分片)很可能会变成热点,过小的分片又会带来巨大的管理负担,因此,为了解决上述两个问题,必须在相邻的碎片间进行合并和分裂,这样就会造成系统负担。


技术实现思路

1、基于上述问题,本申请提供了一种分片方法、系统及设备,用以提高分片效率。

2、为解决上述问题,本申请实施例提供的技术方案如下:

3、本申请第一方面提供了一种分片方法,包括:

4、基于雪花主键算法生成分布式系统的主键,所述主键包括产生该主键的机器id以及在该机器范围内递增的数字;

5、在每个机器id对应的数据槽下,基于数据分片阈值划分得到多个分片,当分片达到数据分片阈值时,将新的插入数据插入到新的数据分片中;

6、根据预设规则将分片分配到集群中对应的节点。

7、在一种可能的实现方式中,所述根据预设规则将分片分配到集群中对应的节点之后,还包括:

8、保存数据表的分片号和集群中的节点之间的对应关系。

9、在一种可能的实现方式中,所述方法还包括:

10、基于数据表和机器id获取当前可插入分片号;

11、通过可插入分片号获取对应的数据节点,向获取到的数据节点中插入新增数据。

12、在一种可能的实现方式中,所述方法还包括:

13、当所述新增数据为可插入分片的第一条数据,设置分片主键最小值为该主键值。

14、在一种可能的实现方式中,所述方法还包括:

15、根据主键中机器id获取对应数据槽;

16、基于所述数据槽下每个分片的最小值和最大值,判断该主键的数据所在的分片,在该分片中进行相应目标处理动作,所述目标处理动作包括查询、修改、删除中的至少一项。

17、在一种可能的实现方式中,所述方法还包括:

18、把除扩容节点之外其他节点上的数据分片移动到扩容节点,并更新数据表分片号和集群节点的对应关系。

19、在一种可能的实现方式中,所述方法还包括:

20、将新增的允许插入数据的分片分配到新增的节点上。

21、在一种可能的实现方式中,所述雪花算法为包括工作机器id的长度、主键的长度、是否使用时间戳、时间戳的精度以及时间戳范围内可以生成的主键个数的主键生成算法。

22、本申请第二方面提供了一种分片系统,包括:

23、生成单元,用于基于雪花主键算法生成分布式系统的主键,所述主键包括产生该主键的机器id以及在该机器范围内递增的数字;

24、划分单元,用于在每个机器id对应的数据槽下,基于数据分片阈值划分得到多个分片,当分片达到数据分片阈值时,将新的插入数据插入到新的数据分片中;

25、第一分配单元,用于根据预设规则将分片分配到集群中对应的节点。

26、本申请第三方面提供了一种电子设备,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现前述第一方面所述的分片方法。

27、相较于现有技术,本申请具有以下有益效果:

28、通过根据雪花主键中的机器id将数据分成多个槽,其中,每个机器id对应一个槽,然后把槽内数据按照分片阈值拆分成多个分片,当分片大小达到阈值时,新的插入数据插入到新的数据分片中,由于槽内数据主键是有序插入,可记录每个分片的主键的最小值和最大值,以便根据主键定位分片,最后再把分片分配到集群中。相对于现有技术中先按照范围把数据划分到小的分片的方式,导致分片需要不断拆分合并的方式,本专利技术根据雪花主键特点,先把数据按照生成该主键的机器划分成数据槽,再在数据槽下进行分片,由于雪花主键特点,数据槽下的数据是有序的,可以根据主键快速锁定主键隶属的分片,不需要对分片进行拆分和合并,由此,提高了分片效率。

本文档来自技高网...

【技术保护点】

1.一种分片方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述根据预设规则将分片分配到集群中对应的节点之后,还包括:

3.根据权利要求1所述的方法,其特征在于,所述方法还包括:

4.根据权利要求3所述的方法,其特征在于,所述方法还包括:

5.根据权利要求1所述的方法,其特征在于,所述方法还包括:

6.根据权利要求2所述的方法,其特征在于,所述方法还包括:

7.根据权利要求1所述的方法,其特征在于,所述方法还包括:

8.根据权利要求1所述的方法,其特征在于,所述雪花算法为包括工作机器id的长度、主键的长度、是否使用时间戳、时间戳的精度以及时间戳范围内可以生成的主键个数的主键生成算法。

9.一种分片系统,其特征在于,所述系统包括:

10.一种电子设备,其特征在于,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-8任一项所述的分片方法。

【技术特征摘要】

1.一种分片方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,所述根据预设规则将分片分配到集群中对应的节点之后,还包括:

3.根据权利要求1所述的方法,其特征在于,所述方法还包括:

4.根据权利要求3所述的方法,其特征在于,所述方法还包括:

5.根据权利要求1所述的方法,其特征在于,所述方法还包括:

6.根据权利要求2所述的方法,其特征在于,所述方法还包括:

7.根据权利要求1所述的...

【专利技术属性】
技术研发人员:吕虎
申请(专利权)人:中国农业银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1