CN113505177A - 分布式系统集群在线分片扩容方法及装置 - Google Patents

分布式系统集群在线分片扩容方法及装置 Download PDF

Info

Publication number
CN113505177A
CN113505177A CN202110773742.8A CN202110773742A CN113505177A CN 113505177 A CN113505177 A CN 113505177A CN 202110773742 A CN202110773742 A CN 202110773742A CN 113505177 A CN113505177 A CN 113505177A
Authority
CN
China
Prior art keywords
cluster
fragmented
distributed system
sub
configuration rule
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110773742.8A
Other languages
English (en)
Inventor
廖宸
李东丽
欧乾君
邓华丰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202110773742.8A priority Critical patent/CN113505177A/zh
Publication of CN113505177A publication Critical patent/CN113505177A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2474Sequence data queries, e.g. querying versioned data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computational Linguistics (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种分布式系统集群在线分片扩容方法及装置,可用于金融领域或其他领域。方法包括:获取分布式系统中的集群路由配置规则,根据集群路由配置规则确定待分片集群;集群路由配置规则包括集群个数、待分片集群序号及集群拆分数;根据待分片集群序号及集群拆分数,对待分片集群进行拆分,得到待分片集群对应的子集群;根据接收到的外部数据请求,利用哈希算法确定外部数据请求的哈希值;根据哈希值、集群个数及各子集群,利用预设迭代次数进行哈希迭代计算,确定外部数据请求对应的指定集群,将对应的集群数据路由至指定集群。本发明实现在分布式系统下的分片扩容,对指定性能容量不足的集群进行扩容,减少扩容对业务系统造成的影响,节省了资源成本。

Description

分布式系统集群在线分片扩容方法及装置
技术领域
本发明涉及分布式系统技术领域,尤指一种分布式系统集群在线分片扩容方法及装置。
背景技术
目前,一个新的业务系统刚上线时,业务量较小,为了节省资源和成本,一般采用最小集群部署。对于采用单元化或微服务架构的系统,数据库和应用容器合并部署。数据库分片一般采用业务字段hash后对初始集群取模的方式确定数据所在集群,公式表示为:mod(hash(业务字段),集群数n)。业务上线初期集群数n较小,在同城双活的部署架构下,n一般取双数,两个园区对等部署,比如n=2。后续随着业务量增加,集群数需要扩容时。对于7×24小时业务,为了不影响业务连续性,将扩容停机时间在正常投产时间内完成。目前常用的做法可采取双倍扩容方式,数据扩容后分布如图1所示,即集群数扩容后为n×2,扩容后业务数据在新集群的分片计算公式为:mod(hash(业务字段),集群数n*2)。
按双倍扩容方式,原来集群0中的数据扩容后必然在新集群0和集群2中,原来集群1的数据将扩容后将在新集群1和集群3。利用数据库半同步复制技术,可以实现数据的在线扩容。然而,实际生产可能数据分布并不均匀,某些集群的业务比较活跃,数据量增加较快,这些集群的数据库性能容量很快不足。而每次都双倍扩容不仅浪费了资源,而且每次扩容涉及全量数据迁移,影响面较大,工作量也较大。
发明内容
针对现有技术中存在的问题,本发明实施例的主要目的在于提供一种分布式系统集群在线分片扩容方法及装置,实现对指定业务集群进行扩容,保证业务的连续性,减少数据复制量和迁移工作量,缩短扩容时间,节约资源投入。
为了实现上述目的,本发明实施例提供一种分布式系统集群在线分片扩容方法,所述方法包括:
获取分布式系统中的集群路由配置规则,并根据所述集群路由配置规则确定待分片集群;其中,所述集群路由配置规则包括集群个数、待分片集群序号及集群拆分数;
根据所述集群路由配置规则中的待分片集群序号及集群拆分数,对所述待分片集群进行拆分,得到待分片集群对应的子集群;
根据接收到的外部数据请求,利用哈希算法确定所述外部数据请求对应的哈希值;
根据所述哈希值、集群个数及所述分布式系统中的各子集群,利用预设迭代次数进行哈希迭代计算,确定所述外部数据请求对应的指定集群,并将所述外部数据请求对应的集群数据路由至所述指定集群。
可选的,在本发明一实施例中,所述方法还包括:
根据分布式系统中各集群的业务量及数据库容量,确定待分片集群的序号及集群拆分数;
根据所述待分片集群的序号及集群拆分数,对所述分布式系统中的集群路由配置规则进行更新。
可选的,在本发明一实施例中,所述根据所述集群路由配置规则中的待分片集群序号及集群拆分数,对所述待分片集群进行拆分,得到待分片集群对应的子集群包括:
根据所述集群路由配置规则中的待分片集群序号,在所述分布式系统的多个集群中确定待分片集群;
关闭所述待分片集群的服务开关,根据所述集群路由配置规则中的集群拆分数,对所述待分片集群进行拆分,得到待分片集群对应的子集群。
可选的,在本发明一实施例中,所述方法还包括:将待分片集群中的备数据库作为所述子集群的主数据库,并打开所述待分片集群的服务开关。
可选的,在本发明一实施例中,所述方法还包括:删除所述分布式系统中各集群中的冗余数据。
可选的,在本发明一实施例中,所述根据所述哈希值、集群个数及所述分布式系统中的各子集群,利用预设迭代次数进行哈希迭代计算,确定所述外部数据请求对应的指定集群包括:
计算所述哈希值与所述集群个数的第一余数值,将所述第一余数值与所述集群路由配置规则进行匹配,确定所述第一余数值对应的第一集群;
将所述预设迭代次数作为分散因子,根据所述第一集群对应的子集群个数及所述分散因子进行哈希迭代计算,更新所述哈希值及其对应的余数值,直至达到所述预设迭代次数或当前集群不具有对应的子集群,则将当前集群作为所述外部数据请求对应的指定集群。
本发明实施例还提供一种分布式系统集群在线分片扩容装置,所述装置包括:
待分片集群模块,用于获取分布式系统中的集群路由配置规则,并根据所述集群路由配置规则确定待分片集群;其中,所述集群路由配置规则包括集群个数、待分片集群序号及集群拆分数;
集群拆分模块,用于根据所述集群路由配置规则中的待分片集群序号及集群拆分数,对所述待分片集群进行拆分,得到待分片集群对应的子集群;
哈希值模块,用于根据接收到的外部数据请求,利用哈希算法确定所述外部数据请求对应的哈希值;
数据路由模块,用于根据所述哈希值、集群个数及所述分布式系统中的各子集群,利用预设迭代次数进行哈希迭代计算,确定所述外部数据请求对应的指定集群,并将所述外部数据请求对应的集群数据路由至所述指定集群。
可选的,在本发明一实施例中,所述装置还包括:
集群序号模块,用于根据分布式系统中各集群的业务量及数据库容量,确定待分片集群的序号及集群拆分数;
规则更新模块,用于根据所述待分片集群的序号及集群拆分数,对所述分布式系统中的集群路由配置规则进行更新。
可选的,在本发明一实施例中,所述集群拆分模块包括:
待分片集群单元,用于根据所述集群路由配置规则中的待分片集群序号,在所述分布式系统的多个集群中确定待分片集群;
子集群单元,用于关闭所述待分片集群的服务开关,根据所述集群路由配置规则中的集群拆分数,对所述待分片集群进行拆分,得到待分片集群对应的子集群。
可选的,在本发明一实施例中,所述装置还包括:服务开关模块,用于将待分片集群中的备数据库作为所述子集群的主数据库,并打开所述待分片集群的服务开关。
可选的,在本发明一实施例中,所述装置还包括:冗余数据模块,用于删除所述分布式系统中各集群中的冗余数据。
可选的,在本发明一实施例中,所述数据路由模块包括:
哈希值单元,用于计算所述哈希值与所述集群个数的第一余数值,将所述第一余数值与所述集群路由配置规则进行匹配,确定所述第一余数值对应的第一集群;
指定集群单元,用于将所述预设迭代次数作为分散因子,根据所述第一集群对应的子集群个数及所述分散因子进行哈希迭代计算,更新所述哈希值及其对应的余数值,直至达到所述预设迭代次数或当前集群不具有对应的子集群,则将当前集群作为所述外部数据请求对应的指定集群。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。
本发明通过基于哈希迭代的方式,实现在分布式系统下的分片扩容,通过迭代多次哈希取模,并利用迭代次数作为分散因子的方式防止数据分散不均,实现对指定性能容量不足的集群进行扩容,减少了扩容的节点及变更时间对业务系统造成的影响,节省了资源成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为双倍集群扩容数据分片拆分示意图;
图2为本发明实施例一种分布式系统集群在线分片扩容方法的流程图;
图3为本发明实施例中在线分片扩容示意图;
图4为本发明实施例中更新集群路由配置规则的流程图;
图5为本发明实施例中拆分待分片集群的流程图;
图6为本发明实施例中确定指定集群的流程图;
图7为本发明一具体实施例中分布式系统集群在线分片扩容架构示意图;
图8为本发明一具体实施例中在线分片扩容流程图;
图9为本发明实施例一种分布式系统集群在线分片扩容装置的结构示意图;
图10为本发明一具体实施例中分布式系统集群在线分片扩容装置的结构示意图;
图11为本发明实施例中集群拆分模块的结构示意图;
图12为本发明实施例中集群在线分片扩容装置的结构示意图;
图13为本发明另一实施例中集群在线分片扩容装置的结构示意图;
图14为本发明实施例中数据路由模块的结构示意图;
图15为本发明一实施例所提供的电子设备的结构示意图。
具体实施方式
本发明实施例提供一种分布式系统集群在线分片扩容方法及装置,可用于金融领域或其他领域,需要说明的是,本发明的分布式系统集群在线分片扩容方法及装置可用于金融领域,也可用于除金融领域之外的任意领域,本发明的分布式系统集群在线分片扩容方法及装置应用领域不做限定。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前常用的做法可采取双倍扩容方式,数据扩容后分布如图1所示,即双倍集群扩容数据分片拆分示意图,图中所示方案的扩容大致步骤如下:
1、在原各个集群数据库增加跨园区半同步备库,待数据同步完成。
2、修改路由配置,集群数扩容为原集群数的2倍,使用新的路由算法:mod(hash(业务字段),集群数n*2),同时新扩容业务暂停对外服务。
3、将半同步备库修改为主库,新增集群连接新增的主库。如图1,业务集群1使用原集群1的备库,业务集群2使用原集群0的备库。
4、新扩容集群开始承接服务。
5、删除各个集群中的冗余数据。
按双倍扩容方式,原来集群0中的数据扩容后必然在新集群0和集群2中,原来集群1的数据将扩容后将在新集群1和集群3。利用数据库半同步复制技术,可以实现数据的在线扩容。然而,实际生产可能数据分布并不均匀,某些集群的业务比较活跃,数据量增加较快,这些集群的数据库性能容量很快不足。而每次都双倍扩容不仅浪费了资源,而且每次扩容涉及全量数据迁移,影响面较大,工作量也较大。
如图2所示为本发明实施例一种分布式系统集群在线分片扩容方法的流程图,本发明实施例提供的分布式系统集群在线分片扩容方法的执行主体包括但不限于计算机。图中所示方法包括:
步骤S1,获取分布式系统中的集群路由配置规则,并根据所述集群路由配置规则确定待分片集群;其中,所述集群路由配置规则包括集群个数、待分片集群序号及集群拆分数。
其中,如图3所示为本发明实施例中在线分片扩容示意图,具体的,分布式系统中的集群路由配置规则包括集群信息列表,例如集群信息列表可以为(0,1),代表0和1两个集群。
进一步的,可通过各集群业务量及数据库容量,来确定待分片集群及集群拆分数,集群拆分数代表了将待分片集群拆分为几个子集群。具体的,假设集群0的业务量较大,数据库的容量不足,需要扩容,假设拆分2个集群,即集群拆分数为2。
进一步的,若需要拆分扩容的集群为0集群,则将集群路由配置规则的集群信息列表从(0,1)修改为(0(0,1),1),代表0集群拆分成00和01两个新的子集群,原来的1集群保持不变。由此,从集群路由配置规则可知集群个数、待分片集群序号及集群拆分数。
步骤S2,根据所述集群路由配置规则中的待分片集群序号及集群拆分数,对所述待分片集群进行拆分,得到待分片集群对应的子集群。
其中,根据集群路由配置规则的集群信息列表,例如(0(0,1),1),将0集群拆分成00和01两个新的子集群,原来的1集群保持不变。
步骤S3,根据接收到的外部数据请求,利用哈希算法确定所述外部数据请求对应的哈希值。
其中,接收外部数据请求,根据外部数据请求中的业务字,例如业务字段为A。将业务字段A作为集群分片字段,计算业务字段A的哈希值hash(A)。
步骤S4,根据所述哈希值、集群个数及所述分布式系统中的各子集群,利用预设迭代次数进行哈希迭代计算,确定所述外部数据请求对应的指定集群,并将所述外部数据请求对应的集群数据路由至所述指定集群。
其中,根据哈希值及集群个数,确定两者的余数值,即计算mod(hash(A),2)的得数。利用该余数值与集群路由配置信息比较,例如0(0,1)匹配成功,同时发现0集群下还有子集群,个数是2,则还需进一步计算hash,为了防止数据都集中在新的子集群00,需要增加分散因子,获取新的hash值。使用迭代次数作为分散因子,即字段A末尾连接迭代次数,这里是1,采用concat(A,1)表示。则子集群路由规则是mod(hash(concat(A,1)),2),以确定指定集群,得数是0则在新00集群,得数1在新的01集群。
作为本发明的一个实施例,如图4所示,所述方法还包括:
步骤S21,根据分布式系统中各集群的业务量及数据库容量,确定待分片集群的序号及集群拆分数;
步骤S22,根据所述待分片集群的序号及集群拆分数,对所述分布式系统中的集群路由配置规则进行更新。
其中,可通过各集群业务量及数据库容量,来确定待分片集群及集群拆分数,集群拆分数代表了将待分片集群拆分为几个子集群。具体的,假设集群0的业务量较大,数据库的容量不足,需要扩容,假设拆分2个集群,即集群拆分数为2。
进一步的,若需要拆分扩容的集群为0集群,则将集群路由配置规则的集群信息列表从(0,1)更新为(0(0,1),1),代表0集群拆分成00和01两个新的子集群,原来的1集群保持不变。
作为本发明的一个实施例,如图5所示,所述根据所述集群路由配置规则中的待分片集群序号及集群拆分数,对所述待分片集群进行拆分,得到待分片集群对应的子集群包括:
步骤S31,根据所述集群路由配置规则中的待分片集群序号,在所述分布式系统的多个集群中确定待分片集群;
步骤S32,关闭所述待分片集群的服务开关,根据所述集群路由配置规则中的集群拆分数,对所述待分片集群进行拆分,得到待分片集群对应的子集群。
其中,根据集群路由配置规则中记录的待分片集群序号,在分布式系统的多个集群中确定待分片集群对应的序号,由此确定待分片集群。
进一步的,在集群分片扩展过程中,集群无法接受外部数据请求,例如,拆分0集群,则将0集群服务开关关闭,在读取集群路由配置规则后,判断路由集群是0集群,则反馈系统在升级中;1集群正常接收外部数据请求。
进一步的,关闭待分片集群的服务开关后,按照集群路由配置规则对待分片集群进行拆分扩容,得到待分片集群对应的子集群。
在本实施例中,方法还包括:将待分片集群中的备数据库作为所述子集群的主数据库,并打开所述待分片集群的服务开关。
其中,假设将0集群拆分为2个子集群后,即拆分为00集群及01集群。具体的,修改原0集群中的备库为新子集群的主库。集群拆分后,打开0集群服务开关,由此在接入网关后,开始接收0集群的数据请求。
在本实施例中,方法还包括:删除所述分布式系统中各集群中的冗余数据。
其中,根据集群路由配置规则,通过批量作业的方式,删除各集群中非本集群的历史数据,即冗余数据。
作为本发明的一个实施例,如图6所示,根据所述哈希值、集群个数及所述分布式系统中的各子集群,利用预设迭代次数进行哈希迭代计算,确定所述外部数据请求对应的指定集群包括:
步骤S41,计算所述哈希值与所述集群个数的第一余数值,将所述第一余数值与所述集群路由配置规则进行匹配,确定所述第一余数值对应的第一集群;
步骤S42,将所述预设迭代次数作为分散因子,根据所述第一集群对应的子集群个数及所述分散因子进行哈希迭代计算,更新所述哈希值及其对应的余数值,直至达到所述预设迭代次数或当前集群不具有对应的子集群,则将当前集群作为所述外部数据请求对应的指定集群。
其中,根据哈希值及集群个数,确定两者的余数值,即计算mod(hash(A),2)的得数。利用该余数值与集群路由配置信息比较,例如0(0,1)匹配成功,即第一集群为0集群。同时发现0集群下还有子集群,个数是2(子集群个数),则还需进一步计算hash。为了防止数据都集中在新的子集群00,需要增加分散因子,获取新的hash值。使用迭代次数作为分散因子,即字段A末尾连接迭代次数,这里是1,采用concat(A,1)表示。则子集群路由规则是mod(hash(concat(A,1)),2),以确定指定集群,得数是0则在新00集群,得数1在新的01集群。
在本发明的一个具体实施例中,如图7所示为本发明基于hash迭代加分散因子分布式系统架构示意图,由配置中心、接入网关层和业务处理层三大部分组成。其中配置中心保存路由配置信息和集群流量控制开关,接入网关层和业务处理层都访问配置中心获取相关配置。
其中,本发明利用hash迭代加分散因子的方式,只针对分布式集群中有性能容量瓶颈的集群进行扩容,因此扩容对整个业务系统影响面较小,迁移的工作量较小,在线扩容的时间较短。
在分布式系统中,使用mysql作为联机数据库,采用一个主库,多个备库的高可用部署架构,备库采用半同步复制的方式,确保RPO=0。使用配置中心保存集群路由信息。假设上线初期只有两个集群,则配置中心保存集群信息列表(0,1),代表0和1两个集群。假设系统采用业务字段A作为集群分片字段,则计算分片规则是mod(hash(A),2),将得出的余数与配置中心的信息列表比较,如果能匹配上,则路由到指定集群。如图8所示为在线分片扩容的方法流程图,假设0集群的业务量较大,数据库的容量不足,需要扩容,假设拆分2个集群,大致步骤如下:
步骤S101,修改配置中心的集群路由配置,改成(0(0,1),1),代表0集群拆分成00和01两个新子集群,原来的1集群保持不变。
步骤S102,修改配置中心集群0服务开关,接入网关读取该配置后,判断路由集群是0集群,则反馈系统在升级中;1集群正常接收外部请求;
步骤S103,修改原0集群中的备库为新子集群的主库,修改原0集群的集群序号为00,新扩容集群的序号为01;
步骤S104,修改配置中心集群0服务开关,接入网关开始接收0集群的数据请求。
步骤S105,修改路由计算规则。原集群0的请求,计算mod(hash(A),2)的得数和配置中心的集群路由配置信息比较0(0,1),匹配成功,同时发现还有子集群,个数是2,则还需进一步计算hash,为了防止数据都集中在新的子集群0,需要增加分散因子,获取新的hash值。假设使用迭代次数作为分散因子,即字段A末尾连接迭代次数,这里是1,采用concat(A,1)表示。则子集群路由规则是mod(hash(concat(A,1)),2),得数是0则在新00集群,得数1在新的01集群。
步骤S106,删除旧数据。根据集群路由规则,通过批量作业的方式,删除集群00和01中非本集群的历史数据。
其中,如图3所示,本发明利用mysql半同步机制,将指定集群的备库启用为新增集群的主库;同时利用hash迭代加分散因子的方式,迭代多次,最终计算出所在的子集群。
进一步的,根据以上例子可以推导出,增加迭代次数和每次迭代扩容的集群数,可以对特定集群进行扩容。配置中心的路由配置形式为:
当集群数为2时,(0,1);
当集群数为3时,可以是(0(0,1),1),或(0,1(0,1));
当集群数为4时,可以是(0(0,1,2),1),或(0,1(0,1,2)),或(0(0,1),1(0,1)),或(0(0(0,1),1),1)等7种情况。
以此类推,采用hash迭代加散列因子的方式可以灵活应对各种扩容需求,其中分散因子可根据实际情况自行设定。
本发明通过对分表分库业务字段进行多次hash迭代取模加分散因子的方式,实现对指定业务集群进行扩容。基于mysql半同步复制技术实现数据的在线同步复制,在基于hash取模的方式确定数据所在分片,对于需要扩容的集群,利用网关层屏蔽扩容集群的请求,保证数据在扩容期间的一致性,再利用半同步备库和hash迭代的方式,进行在线扩容。本发明可以保证业务的连续性,减少数据复制量和迁移工作量,缩短扩容时间,节约资源投入等。
本发明通过基于哈希迭代的方式,实现在分布式系统下的分片扩容,通过迭代多次哈希取模,并利用迭代次数作为分散因子的方式防止数据分散不均,实现对指定性能容量不足的集群进行扩容,减少了扩容的节点及变更时间对业务系统造成的影响,节省了资源成本。
如图9所示为本发明实施例一种分布式系统集群在线分片扩容装置的结构示意图,图中所示装置包括:
待分片集群模块10,用于获取分布式系统中的集群路由配置规则,并根据所述集群路由配置规则确定待分片集群;其中,所述集群路由配置规则包括集群个数、待分片集群序号及集群拆分数.
其中,分布式系统中的集群路由配置规则包括集群信息列表,例如集群信息列表可以为(0,1),代表0和1两个集群。
进一步的,可通过各集群业务量及数据库容量,来确定待分片集群及集群拆分数,集群拆分数代表了将待分片集群拆分为几个子集群。具体的,假设集群0的业务量较大,数据库的容量不足,需要扩容,假设拆分2个集群,即集群拆分数为2。
进一步的,若需要拆分扩容的集群为0集群,则将集群路由配置规则的集群信息列表从(0,1)修改为(0(0,1),1),代表0集群拆分成00和01两个新的子集群,原来的1集群保持不变。由此,从集群路由配置规则可知集群个数、待分片集群序号及集群拆分数。
集群拆分模块20,用于根据所述集群路由配置规则中的待分片集群序号及集群拆分数,对所述待分片集群进行拆分,得到待分片集群对应的子集群。
其中,根据集群路由配置规则的集群信息列表,例如(0(0,1),1),将0集群拆分成00和01两个新的子集群,原来的1集群保持不变。
哈希值模块30,用于根据接收到的外部数据请求,利用哈希算法确定所述外部数据请求对应的哈希值。
其中,接收外部数据请求,根据外部数据请求中的业务字,例如业务字段为A。将业务字段A作为集群分片字段,计算业务字段A的哈希值hash(A)。
数据路由模块40,用于根据所述哈希值、集群个数及所述分布式系统中的各子集群,利用预设迭代次数进行哈希迭代计算,确定所述外部数据请求对应的指定集群,并将所述外部数据请求对应的集群数据路由至所述指定集群。
其中,根据哈希值及集群个数,确定两者的余数值,即计算mod(hash(A),2)的得数。利用该余数值与集群路由配置信息比较,例如0(0,1)匹配成功,同时发现0集群下还有子集群,个数是2,则还需进一步计算hash,为了防止数据都集中在新的子集群00,需要增加分散因子,获取新的hash值。使用迭代次数作为分散因子,即字段A末尾连接迭代次数,这里是1,采用concat(A,1)表示。则子集群路由规则是mod(hash(concat(A,1)),2),以确定指定集群,得数是0则在新00集群,得数1在新的01集群。
作为本发明的一个实施例,如图10所示,所述装置还包括:
集群序号模块50,用于根据分布式系统中各集群的业务量及数据库容量,确定待分片集群的序号及集群拆分数;
规则更新模块60,用于根据所述待分片集群的序号及集群拆分数,对所述分布式系统中的集群路由配置规则进行更新。
作为本发明的一个实施例,如图11所示,所述集群拆分模块20包括:
待分片集群单元21,用于根据所述集群路由配置规则中的待分片集群序号,在所述分布式系统的多个集群中确定待分片集群;
子集群单元22,用于关闭所述待分片集群的服务开关,根据所述集群路由配置规则中的集群拆分数,对所述待分片集群进行拆分,得到待分片集群对应的子集群。
在本实施例中,如图12所示,所述装置还包括:服务开关模块70,用于将待分片集群中的备数据库作为所述子集群的主数据库,并打开所述待分片集群的服务开关。
其中,假设将0集群拆分为2个子集群后,即拆分为00集群及01集群。具体的,修改原0集群中的备库为新子集群的主库。集群拆分后,打开0集群服务开关,由此在接入网关后,开始接收0集群的数据请求。
在本实施例中,如图13所示,所述装置还包括:冗余数据模块80,用于删除所述分布式系统中各集群中的冗余数据。
作为本发明的一个实施例,如图14所示,所述数据路由模块40包括:
哈希值单元41,用于计算所述哈希值与所述集群个数的第一余数值,将所述第一余数值与所述集群路由配置规则进行匹配,确定所述第一余数值对应的第一集群;
指定集群单元42,用于将所述预设迭代次数作为分散因子,根据所述第一集群对应的子集群个数及所述分散因子进行哈希迭代计算,更新所述哈希值及其对应的余数值,直至达到所述预设迭代次数或当前集群不具有对应的子集群,则将当前集群作为所述外部数据请求对应的指定集群。
基于与上述一种分布式系统集群在线分片扩容方法相同的申请构思,本发明还提供了上述一种分布式系统集群在线分片扩容装置。由于该一种分布式系统集群在线分片扩容装置解决问题的原理与一种分布式系统集群在线分片扩容方法相似,因此该一种分布式系统集群在线分片扩容装置的实施可以参见一种分布式系统集群在线分片扩容方法的实施,重复之处不再赘述。
本发明通过基于哈希迭代的方式,实现在分布式系统下的分片扩容,通过迭代多次哈希取模,并利用迭代次数作为分散因子的方式防止数据分散不均,实现对指定性能容量不足的集群进行扩容,减少了扩容的节点及变更时间对业务系统造成的影响,节省了资源成本。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。
如图15所示,该电子设备600还可以包括:通信模块110、输入单元120、音频处理单元130、显示器160、电源170。值得注意的是,电子设备600也并不是必须要包括图15中所示的所有部件;此外,电子设备600还可以包括图15中没有示出的部件,可以参考现有技术。
如图15所示,中央处理器100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器100接收输入并控制电子设备600的各个部件的操作。
其中,存储器140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器100可执行该存储器140存储的该程序,以实现信息存储或处理等。
输入单元120向中央处理器100提供输入。该输入单元120例如为按键或触摸输入装置。电源170用于向电子设备600提供电力。显示器160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器140还可以是某种其它类型的装置。存储器140包括缓冲存储器141(有时被称为缓冲器)。存储器140可以包括应用/功能存储部142,该应用/功能存储部142用于存储应用程序和功能程序或用于通过中央处理器100执行电子设备600的操作的流程。
存储器140还可以包括数据存储部143,该数据存储部143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器140的驱动程序存储部144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块110即为经由天线111发送和接收信号的发送机/接收机110。通信模块(发送机/接收机)110耦合到中央处理器100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)110还经由音频处理器130耦合到扬声器131和麦克风132,以经由扬声器131提供音频输出,并接收来自麦克风132的音频输入,从而实现通常的电信功能。音频处理器130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器130还耦合到中央处理器100,从而使得可以通过麦克风132能够在本机上录音,且使得可以通过扬声器131来播放本机上存储的声音。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (14)

1.一种分布式系统集群在线分片扩容方法,其特征在于,所述方法包括:
获取分布式系统中的集群路由配置规则,并根据所述集群路由配置规则确定待分片集群;其中,所述集群路由配置规则包括集群个数、待分片集群序号及集群拆分数;
根据所述集群路由配置规则中的待分片集群序号及集群拆分数,对所述待分片集群进行拆分,得到待分片集群对应的子集群;
根据接收到的外部数据请求,利用哈希算法确定所述外部数据请求对应的哈希值;
根据所述哈希值、集群个数及所述分布式系统中的各子集群,利用预设迭代次数进行哈希迭代计算,确定所述外部数据请求对应的指定集群,并将所述外部数据请求对应的集群数据路由至所述指定集群。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据分布式系统中各集群的业务量及数据库容量,确定待分片集群的序号及集群拆分数;
根据所述待分片集群的序号及集群拆分数,对所述分布式系统中的集群路由配置规则进行更新。
3.根据权利要求1所述的方法,其特征在于,所述根据所述集群路由配置规则中的待分片集群序号及集群拆分数,对所述待分片集群进行拆分,得到待分片集群对应的子集群包括:
根据所述集群路由配置规则中的待分片集群序号,在所述分布式系统的多个集群中确定待分片集群;
关闭所述待分片集群的服务开关,根据所述集群路由配置规则中的集群拆分数,对所述待分片集群进行拆分,得到待分片集群对应的子集群。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:将待分片集群中的备数据库作为所述子集群的主数据库,并打开所述待分片集群的服务开关。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:删除所述分布式系统中各集群中的冗余数据。
6.根据权利要求1所述的方法,其特征在于,所述根据所述哈希值、集群个数及所述分布式系统中的各子集群,利用预设迭代次数进行哈希迭代计算,确定所述外部数据请求对应的指定集群包括:
计算所述哈希值与所述集群个数的第一余数值,将所述第一余数值与所述集群路由配置规则进行匹配,确定所述第一余数值对应的第一集群;
将所述预设迭代次数作为分散因子,根据所述第一集群对应的子集群个数及所述分散因子进行哈希迭代计算,更新所述哈希值及其对应的余数值,直至达到所述预设迭代次数或当前集群不具有对应的子集群,则将当前集群作为所述外部数据请求对应的指定集群。
7.一种分布式系统集群在线分片扩容装置,其特征在于,所述装置包括:
待分片集群模块,用于获取分布式系统中的集群路由配置规则,并根据所述集群路由配置规则确定待分片集群;其中,所述集群路由配置规则包括集群个数、待分片集群序号及集群拆分数;
集群拆分模块,用于根据所述集群路由配置规则中的待分片集群序号及集群拆分数,对所述待分片集群进行拆分,得到待分片集群对应的子集群;
哈希值模块,用于根据接收到的外部数据请求,利用哈希算法确定所述外部数据请求对应的哈希值;
数据路由模块,用于根据所述哈希值、集群个数及所述分布式系统中的各子集群,利用预设迭代次数进行哈希迭代计算,确定所述外部数据请求对应的指定集群,并将所述外部数据请求对应的集群数据路由至所述指定集群。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
集群序号模块,用于根据分布式系统中各集群的业务量及数据库容量,确定待分片集群的序号及集群拆分数;
规则更新模块,用于根据所述待分片集群的序号及集群拆分数,对所述分布式系统中的集群路由配置规则进行更新。
9.根据权利要求7所述的装置,其特征在于,所述集群拆分模块包括:
待分片集群单元,用于根据所述集群路由配置规则中的待分片集群序号,在所述分布式系统的多个集群中确定待分片集群;
子集群单元,用于关闭所述待分片集群的服务开关,根据所述集群路由配置规则中的集群拆分数,对所述待分片集群进行拆分,得到待分片集群对应的子集群。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:服务开关模块,用于将待分片集群中的备数据库作为所述子集群的主数据库,并打开所述待分片集群的服务开关。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:冗余数据模块,用于删除所述分布式系统中各集群中的冗余数据。
12.根据权利要求7所述的装置,其特征在于,所述数据路由模块包括:
哈希值单元,用于计算所述哈希值与所述集群个数的第一余数值,将所述第一余数值与所述集群路由配置规则进行匹配,确定所述第一余数值对应的第一集群;
指定集群单元,用于将所述预设迭代次数作为分散因子,根据所述第一集群对应的子集群个数及所述分散因子进行哈希迭代计算,更新所述哈希值及其对应的余数值,直至达到所述预设迭代次数或当前集群不具有对应的子集群,则将当前集群作为所述外部数据请求对应的指定集群。
13.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6任一项所述方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至6任一项所述方法的计算机程序。
CN202110773742.8A 2021-07-08 2021-07-08 分布式系统集群在线分片扩容方法及装置 Pending CN113505177A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110773742.8A CN113505177A (zh) 2021-07-08 2021-07-08 分布式系统集群在线分片扩容方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110773742.8A CN113505177A (zh) 2021-07-08 2021-07-08 分布式系统集群在线分片扩容方法及装置

Publications (1)

Publication Number Publication Date
CN113505177A true CN113505177A (zh) 2021-10-15

Family

ID=78012228

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110773742.8A Pending CN113505177A (zh) 2021-07-08 2021-07-08 分布式系统集群在线分片扩容方法及装置

Country Status (1)

Country Link
CN (1) CN113505177A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117081931A (zh) * 2023-10-17 2023-11-17 之江实验室 一种异构分布式存储系统在线扩容方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102855294A (zh) * 2012-08-13 2013-01-02 北京联创信安科技有限公司 一种智能哈希数据布局方法、集群存储系统及其方法
CN104615657A (zh) * 2014-12-31 2015-05-13 天津南大通用数据技术股份有限公司 一种节点支持多数据分片的分布式集群的扩容和缩容方法
US20160112516A1 (en) * 2013-07-02 2016-04-21 Huawei Technologies Co., Ltd. Distributed storage system, cluster node and range management method thereof
CN110222030A (zh) * 2019-05-13 2019-09-10 福建天泉教育科技有限公司 数据库动态扩容的方法、存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102855294A (zh) * 2012-08-13 2013-01-02 北京联创信安科技有限公司 一种智能哈希数据布局方法、集群存储系统及其方法
US20160112516A1 (en) * 2013-07-02 2016-04-21 Huawei Technologies Co., Ltd. Distributed storage system, cluster node and range management method thereof
CN104615657A (zh) * 2014-12-31 2015-05-13 天津南大通用数据技术股份有限公司 一种节点支持多数据分片的分布式集群的扩容和缩容方法
CN110222030A (zh) * 2019-05-13 2019-09-10 福建天泉教育科技有限公司 数据库动态扩容的方法、存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117081931A (zh) * 2023-10-17 2023-11-17 之江实验室 一种异构分布式存储系统在线扩容方法及装置
CN117081931B (zh) * 2023-10-17 2024-01-09 之江实验室 一种异构分布式存储系统在线扩容方法及装置

Similar Documents

Publication Publication Date Title
CN108628874B (zh) 迁移数据的方法、装置、电子设备和可读存储介质
CN102317923B (zh) 存储系统
CN108268501B (zh) 一种在线数据迁移过程中的业务处理方法及装置
US20140379656A1 (en) System and Method for Maintaining a Cluster Setup
CN102521289B (zh) 一种文件同步方法、装置及系统
JP2009009392A (ja) ソフトウェア更新方法および携帯端末装置
WO2015157904A1 (zh) 一种文件同步方法、服务器及终端
CN111291023A (zh) 一种数据迁移的方法、系统、设备以及介质
CN112612851B (zh) 多中心数据同步方法及装置
CN112162773A (zh) 差分升级方法及装置、存储介质、终端
CN114237519A (zh) 一种对象存储数据迁移的方法、装置、设备及介质
CN113505177A (zh) 分布式系统集群在线分片扩容方法及装置
CN115080515A (zh) 基于区块链的系统文件共享方法及系统
CN113507390A (zh) 分布式系统集群在线分片扩容方法及装置
CN115048181A (zh) 一种基于Kubernetes容器云平台的热部署方法、装置及应用
CN113505176A (zh) 分布式系统集群在线分片扩容方法及装置
CN115955488B (zh) 基于副本冗余的分布式存储副本跨机房放置方法与装置
US20200089801A1 (en) Disturbance-free partitioning and migration of data from one storage account to another storage account
CN111274192A (zh) 一种多bmc管理系统及刀片服务器
CN115495436A (zh) 数据库升级方法及装置
CN115421976A (zh) 异地备灾数据处理方法及装置
US11360761B2 (en) Operational file management and storage
CN111858765A (zh) 应用于数据库扩容场景的数据处理方法、装置及系统
CN110569231B (zh) 数据迁移方法、装置、设备和介质
CN114968963A (zh) 文件覆盖写方法、装置和电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination