分布式系统节点数量调整方法、装置和分布式系统与流程
未命名
10-08
阅读:106
评论:0

1.本说明书一个或多个实施例涉及分布式系统节点数量调整技术领域,尤其涉及一种分布式系统节点数量调整方法、装置和分布式系统。
背景技术:
2.oracle rac是基于共享磁盘的分布式系统,该分布式系统可以包括多个节点,每个节点可以包括redo日志并且其他节点可以访问,即通过多个节点写入来提升分布式系统的计算能力。
3.该分布式系统的一个重要能力是水平伸缩,通过在分布式系统中新增节点实现计算能力的扩展,在新增节点时需要新增一个或者多个日志流;在分布式系统中删除节点时,需要将多余的日志流的清理掉。
技术实现要素:
4.有鉴于此,本说明书一个或多个实施例提供一种分布式系统节点数量调整方法、装置和分布式系统。
5.为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
6.根据本说明书一个或多个实施例的第一方面,提出了一种分布式系统节点数量调整方法,适用于所述分布式系统,所述方法包括:
7.获取所述分布式系统的节点的初始数量和目标数量;
8.根据所述初始数量和所述目标数量确定日志流操作任务集合;所述日志流操作任务集合包括节点从初始数量调整到目标数量过程中操作日志流的各个任务所对应的操作指令;
9.执行所述日志流操作任务集合的各个操作任务,以将节点数量从初始数量调整到所述目标数量。
10.可选地,根据所述初始数量和所述目标数量确定日志流操作任务集合,包括:
11.当所述目标数量大于所述初始数量时,根据所述初始数量和所述目标数量确定每个节点的日志流中数据单元的第一数量;
12.根据所述第一数量获取将所述初始数量个节点内日志流的多个数据单元分配到所述目标数量个节点的操作任务;
13.获取各个操作任务的操作指令,得到包含具有先后顺序依赖关系的操作指令的所述日志流操作任务集合。
14.可选地,根据所述初始数量和所述目标数量确定每个节点的日志流中数据单元的第一数量,包括:
15.获取所述初始数量个节点内数据单元的总数量;
16.获取所述总数量与所述目标数量的比值;
17.对所述比值进行向下取整数处理,将得到的整数作为每个节点的日志流中数据单
元的第一数量。
18.可选地,根据所述第一数量获取将所述初始数量个节点内日志流的多个数据单元分配到所述目标数量个节点的操作任务,包括:
19.获取每个节点的日志流划分成包含第一数量个数据单元的数据单元组的第一分裂任务;
20.获取将各个数据单元组依次分配到各个节点的第一迁移任务。
21.可选地,所述方法还包括:
22.当存在未分配日志流的节点时,获取从所述初始数量个节点划分剩余数据单元的第二分裂任务;
23.获取合并至少两组剩余数据单元得到包含第一数量个数据单元的数据单元组的第二合并任务;
24.获取将合并得到的数据单元组分配给所述未分配日志流的节点的第三合并任务。
25.可选地,根据所述初始数量和所述目标数量确定日志流操作任务集合,包括:
26.当所述目标数量小于所述初始数量时,根据所述初始数量和所述目标数量确定待缩容的日志流的个数;
27.获取将所述待缩容的日志流分配到所述目标数量个目标节点的操作任务;所述目标节点是指所述分布式系统缩容后保留的节点;
28.获取各个操作任务的操作指令,得到包含具有先后顺序依赖关系的操作指令的所述日志流操作任务集合。
29.可选地,根据所述初始数量和所述目标数量确定待缩容的日志流的个数,包括:
30.获取所述初始数量和所述目标数量的差值;
31.获取所述差值和节点的日志流数量的乘积,得到待缩容的日志流的个数。
32.可选地,获取将所述待缩容的日志流分配到所述目标数量个目标节点的操作任务,包括:
33.获取将所述待缩容的日志流划分为所述目标数量个数据单元组的第三分裂任务;
34.获取将所述目标数量个数据单元组依次分配到所述目标数量个目标节点的第四合并任务。
35.可选地,所述方法还包括:
36.当待缩容的日志流存在剩余日志流时,获取将所述剩余日志流划分成目标数量个数据单元组的第四分裂任务;
37.获取将所述目标数量个数据单元组依次分配到所述目标数量个目标节点的第五合并任务。
38.根据本说明书一个或多个实施例的第二方面,提出了一种分布式系统节点数量调整装置,适用于所述分布式系统,所述装置包括:
39.节点数量获取模块,用于获取所述分布式系统的节点的初始数量和目标数量;
40.任务集合获取模块,用于根据所述初始数量和所述目标数量确定日志流操作任务集合;所述日志流操作任务集合包括节点从初始数量调整到目标数量过程中操作日志流的各个任务所对应的操作指令;
41.任务集合执行模块,用于执行所述日志流操作任务集合的各个操作任务,以将节
点数量从初始数量调整到所述目标数量。
42.可选地,所述任务集合获取模块包括:
43.第一数量获取子模块,用于当所述目标数量大于所述初始数量时,根据所述初始数量和所述目标数量确定每个节点的日志流中数据单元的第一数量;
44.操作任务获取子模块,用于根据所述第一数量获取将所述初始数量个节点内日志流的多个数据单元分配到所述目标数量个节点的操作任务;
45.任务集合获取子模块,用于获取各个操作任务的操作指令,得到包含具有先后顺序依赖关系的操作指令的所述日志流操作任务集合。
46.可选地,所述第一数量获取子模块包括:
47.总数量获取单元,用于获取所述初始数量个节点内数据单元的总数量;
48.比值获取单元,用于获取所述总数量与所述目标数量的比值;
49.第一数量获取单元,用于对所述比值进行向下取整数处理,将得到的整数作为每个节点的日志流中数据单元的第一数量。
50.可选地,所述操作任务获取子模块包括:
51.第一分裂任务获取单元,用于获取每个节点的日志流划分成包含第一数量个数据单元的数据单元组的第一分裂任务;
52.第一迁移任务获取单元,用于获取将各个数据单元组依次分配到各个节点的第一迁移任务。
53.可选地,所述操作任务获取子模块还包括:
54.第二分裂任务获取单元,用于当存在未分配日志流的节点时,获取从所述初始数量个节点划分剩余数据单元的第二分裂任务;
55.第二合并任务获取单元,用于获取合并至少两组剩余数据单元得到包含第一数量个数据单元的数据单元组的第二合并任务;
56.第三合并任务获取单元,用于获取将合并得到的数据单元组分配给所述未分配日志流的节点的第三合并任务。
57.可选地,所述任务集合获取模块包括:
58.日志流个数确定子模块,用于当所述目标数量小于所述初始数量时,根据所述初始数量和所述目标数量确定待缩容的日志流的个数;
59.操作任务获取子模块,用于获取将所述待缩容的日志流分配到所述目标数量个目标节点的操作任务;所述目标节点是指所述分布式系统缩容后保留的节点;
60.任务集合获取子模块,用于获取各个操作任务的操作指令,得到包含具有先后顺序依赖关系的操作指令的所述日志流操作任务集合。
61.可选地,所述日志流个数确定子模块包括:
62.差值获取单元,用于获取所述初始数量和所述目标数量的差值;
63.个数获取单元,用于获取所述差值和节点的日志流数量的乘积,得到待缩容的日志流的个数。
64.可选地,所述操作任务获取子模块包括:
65.第三分裂任务获取单元,用于获取将所述待缩容的日志流划分为所述目标数量个数据单元组的第三分裂任务;
66.第四合并任务获取单元,用于获取将所述目标数量个数据单元组依次分配到所述目标数量个目标节点的第四合并任务。
67.可选地,所述操作任务获取子模块还包括:
68.第四分裂任务获取单元,用于当待缩容的日志流存在剩余日志流时,获取将所述剩余日志流划分成目标数量个数据单元组的第四分裂任务;
69.第五合并任务获取单元,用于获取将所述目标数量个数据单元组依次分配到所述目标数量个目标节点的第五合并任务。
70.根据本说明书一个或多个实施例的第三方面,提出了一种分布式系统,包括多个节点,所述系统包括:
71.处理器;
72.用于存储处理器可执行指令的存储器;
73.其中,所述处理器通过运行所述可执行指令以实现如第一方面任一项所述的方法。
74.根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面任一项所述方法的步骤。
75.本说明书一个或多个实施例的方案可以包括以下有益效果:
76.本说明书一个或多个实施例的方案可以获取所述分布式系统的节点的初始数量和目标数量;然后,根据所述初始数量和所述目标数量确定日志流操作任务集合;所述日志流操作任务集合包括节点从初始数量调整到目标数量过程中操作日志流的各个任务所对应的操作指令;之后,执行所述日志流操作任务集合的各个操作任务,以将节点数量从初始数量调整到所述目标数量。这样,本说明书的方案根据节点变化前后确定日志流操作任务集合,再执行上述日志流操作任务集合中的各个操作任务,达到调整分布式系统中节点数量或者用户无感的情况下对集群进行水平伸缩的效果,有利于提升分布式系统的高可用性。
附图说明
77.图1是一示例性实施例提供的一种分布式系统节点数量调整方法的流程图。
78.图2是一示例性实施例提供的一种获取日志流操作任务集合的流程图。
79.图3是一示例性实施例提供的一种有向无环图的示意图。
80.图4是一示例性实施例提供的另一种获取日志流操作任务集合的流程图。
81.图5是一示例性实施例提供的一种扩容的示意图。
82.图6是一示例性实施例提供的一种分布式系统节点数量调整装置的框图。
具体实施方式
83.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
84.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
85.本公开实施例提供了一种分布式系统节点数量调整方法、装置和分布式系统。该分布式系统节点数量调整方法可以适用于分布式系统。该分布式系统包括多个节点,各个节点作用数据库存储计算节点使用,可以包括但不限于终端设备、服务器或者服务器集群等。可理解的是,每个节点可以包括至少一个日志流,该日志流是指多个redo日志的集合,且每个日志流的日志号连续且递增。各个节点上可以部署计算机程序,例如集群管理软件(gi),该计算机程序可以用于管理分布式系统的各个节点,或者向客户端提供相应的服务。
86.在一示例中,集群管理软件(gi)可以获取分布式系统调整节点数量后的节点数量,后续称之为节点的目标数量,并将分布式系统在调整节点数量之前的数量称之为初始数量;然后将分布式系统中节点数量从初始数量调整到目标节点,达到无感知水平伸缩的效果。参见图1,一种分布式系统节点数量调整方法,包括步骤11~步骤13。
87.在步骤11中,获取所述分布式系统的节点的初始数量和目标数量。
88.本步骤中,集群管理软件可以获取分布式系统的节点的初始数量。可理解的是,分布式系统中节点的初始数量可以存储在系统配置文件之内,集群管理软件可以从本地存储器或者其他节点读取上述系统配置文件,并从上述系统配置文件中读取节点的初始数量。集群管理软件可以获取分布式系统的节点的目标数量,该节点的目标数量与初始数量的获取方式类似,具体参见初始数量的获取方式,在此不再赘述。
89.在步骤12中,根据所述初始数量和所述目标数量确定日志流操作任务集合;所述日志流操作任务集合包括节点从初始数量调整到目标数量过程中操作日志流的各个任务所对应的操作指令。
90.本步骤中,集群管理软件可以根据所述初始数量和所述目标数量确定日志流操作任务集合。考虑到初始数量和目标数量的大小关系,可以存在以下场景,包括:场景1,初始数量小于目标数量,增加分布式系统的节点数量即对分布式系统进行扩容。场景2,初始数量大于目标数量,减少分布式系统的节点数量即对分布式系统进行缩容。可理解的是,当目标数量等于初始数量时,节点数量未变化,此时无需对节点数量进行调整,因此本公开不再赘述。
91.在一示例中,当初始数量小于目标数量即对分布式系统进行扩容时,集群管理软件根据所述初始数量和所述目标数量确定日志流操作任务集合,参见图2,包括步骤21~步骤23。
92.在步骤21中,根据所述初始数量和所述目标数量确定每个节点的日志流中数据单元的第一数量。
93.本步骤中,集群管理软件可以根据所述初始数量和所述目标数量确定每个节点的日志流中数据单元的第一数量。例如,集群管理软件可以获取初始数量个节点内数据单元的总数量。其中,数量单元是指日志流中不可拆分的数据块,例如一张数据表格可以作为一个数据单元。然后,集群管理软件可以获取总数量与目标数量的比值,该比值表示每个节点
可以分配到数据单元的平均数量。考虑到平均数量可能是一个小数值,集群管理软件可以对上述比值作向下取整数处理,例如比值是5.3,向下取整数处理的结果为5,并将得到的整数作为每个节点的日志流中数据单元的第一数量。需要说明的,本步骤中确定第一数量的目的在于保持分布式系统中调整节点前后,各个节点日志流的数据单元数量相近,从而保持负载均衡。
94.在步骤22中,根据所述第一数量获取将所述初始数量个节点内日志流的多个数据单元分配到所述目标数量个节点的操作任务。
95.本步骤中,集群管理软件可以根据所述第一数量获取将所述初始数量个节点内日志流的多个数据单元分配到所述目标数量个节点的操作任务。例如,集群管理软件可以将每个节点的日志流划分成第一数量个数据单元组,每个数据单元组包含第一数量个数据单元,即集群管理软件可以获取每个节点的日志流划分成包含第一数量个数据单元的数据单元组的第一分裂任务。然后,集群管理软件可以将各个数据单元组分配到各个节点,此时数据单元组可以作为所在节点更新后的日志流使用,即集群管理软件可以获取将各个数据单元组依次分配到各个节点的第一迁移任务。
96.在一些可能的实施例中,每个节点的日志流中划分出数据单元组后可能存在剩余的数据单元,这些剩余数据单元的数量小于第一数量。或者,存在节点没有分配到日志流。此时,集群管理软件可以从初始数量个节点划分剩余数据单元的分裂任务,后续称之为第二分裂任务。然后,集群管理软件可以合并至少两组剩余数据单元,得到包含第一数量个数据单元的数据单元组,即获取合并至少两组剩余数据单元得到包含第一数量个单元的数据单元组的第二合并任务。之后,集群管理软件可以将合并得到的数据单元组分配给未分配日志流的节点,得到第三合并任务。
97.在步骤23中,获取各个操作任务的操作指令,得到包含具有先后顺序依赖关系的操作指令的所述日志流操作任务集合。
98.分布式系统中的数据库可以采用oceanbase数据库实现。该数据库对于日志流的三种操作可以包括:
99.(1)分裂操作ls_split(a,b,datalist):从日志流a分裂出一个日志流b,并且将日志流a上的一组数据单元(即上述的数据单元组)转移到日志流b上。
100.(2)合并操作ls_merge(a,b):将日志流a合并到日志流b上,将a上所有的数据转移到日志流b上,然后日志流a生命期结束。
101.(3)迁移操作ls_migrate(a,server1):将日志流a从当前节点迁移到节点server1上。
102.本步骤中,考虑到分布式系统扩容时要执行多个操作任务,这些操作任务之间可能有先后顺序依赖关系,集群管理软件可以获取各个操作任务的操作指令,得到包含具有先后顺序依赖关系的操作指令的所述日志流操作任务集合。以第一分裂任务为例,集群管理软件可以将初始数量个节点的日志流进行分裂,得到第一分裂任务的操作指令,如ls_split(a,b,datalist)。可理解的是,第一分裂任务可以包括多个子任务,各个子任务分别对各个节点的日志流进行分裂操作,最终得到包含第一数量个数据单元的数据单元组。以第一迁移任务为例,集群管理软件可以采用迁移操作,将各个数据单元组所在的日志流迁移到相应节点,即获取到第一迁移任务的操作指令,如ls_migrate(a,server1)。第一迁移
任务要依赖于第一分裂任务的分裂结果,因此第一分裂任务先于第一迁移任务。同理,第二分裂任务先于第二合并任务,且第二合并任务先于第三合并任务。
103.在获取到各个操作任务的操作指令后,集群管理软件可以根据操作指令的先后顺序依赖关系,得到日志流操作任务集合。在一示例中,该日志流操作任务集合可以抽象成一个有向无环图,该有向无环图中的各个操作任务具有前驱任务和后继任务;当-个任务没有前驱任务时可以调度执行。以分布式系统从2个节点扩容到5个节点为例,日志流操作任务集合对应的有向无环图如图3所示。
104.参见图3,第一步,节点server1中的日志流ls1和节点server2中的日志流ls2的分裂任务可以并列执行,即ls_split(ls1,ls3)和ls_split(ls2,ls5)。其他任务均有前驱任务,暂时不能调度执行。第二步,节点ls1和节点ls2的第一个分裂任务ls_split执行完成后,可以并行执行4个任务,即将日志流ls3迁移到节点server3的迁移任务ls_migrate(ls3,server3),将日志流ls5迁移到节点server5的迁移任务ls_migrate(ls5,server5),第二次分裂日志流ls1的分裂任务ls_split(ls1,ls4)和第二次分裂日志流ls2的分裂任务ls_split(ls2,ls6)。第三步,并列执行将日志流ls4迁移到节点server5的迁移任务ls_migrate(ls4,server5)和将日志流ls6迁移到节点server5的迁移任务ls_migrate(ls6,server5)。第四步,执行合并日志流ls4和ls6的操作指令ls_merge(ls6,ls4)。这样,集群管理软件可以将节点server1和节点server2中的日志流分配到节点server1~节点server5之内。
105.在另一示例中,当初始数量小于目标数量即对分布式系统进行扩容时,集群管理软件根据所述初始数量和所述目标数量确定日志流操作任务集合,参见图4,包括步骤41~步骤43。
106.在步骤41中,根据所述初始数量和所述目标数量确定待缩容的日志流的个数。
107.本步骤中,集群管理软件可以根据所述初始数量和所述目标数量确定待缩容的日志流的个数。例如,获取初始数量和目标数量的差值;然后,获取该差值和节点的日志流数量的乘积,得到待缩容的日志流的个数。假设初始数量为m,目标数量为n,每个节点的日志流为1,并且m=kn+x,x《n,k大于或等于1,则待缩容的日志流的个数为:m-n=(k-1)n+x。
108.在步骤42中,获取将所述待缩容的日志流分配到所述目标数量个目标节点的操作任务;所述目标节点是指所述分布式系统缩容后保留的节点。
109.本步骤中,集群管理软件可以获取将所述待缩容的日志流划分为所述目标数量个数据单元组的第三分裂任务。然后,集群管理软件可以获取将所述目标数量个数据单元组依次分配到所述目标数量个目标节点的第四合并任务。
110.在另一示例中,当待缩容的日志流存在剩余日志流时,集群管理软件可以获取将所述剩余日志流划分成目标数量个数据单元组的第四分裂任务。然后,集群管理软件可以获取将所述目标数量个数据单元组依次分配到所述目标数量个目标节点的第五合并任务。
111.需要说明的是,步骤42的方案与步骤22的方案类似,具体参见步骤22的内容,在此不再赘述。
112.在步骤43中,获取各个操作任务的操作指令,得到包含具有先后顺序依赖关系的操作指令的所述日志流操作任务集合。
113.本步骤中,步骤43的方案与步骤23的方案类似,具体参见步骤22的内容,在此不再
赘述。
114.在步骤13中,执行所述日志流操作任务集合的各个操作任务,以将节点数量从初始数量调整到所述目标数量。
115.本步骤中,集群管理软件可以执行日志流操作任务集合的各个操作任务,以将节点数量从初始数量调整到所述目标数量。
116.至此,本说明书一个或多个实施例的方案可以获取所述分布式系统的节点的初始数量和目标数量;然后,根据所述初始数量和所述目标数量确定日志流操作任务集合;所述日志流操作任务集合包括节点从初始数量调整到目标数量过程中操作日志流的各个任务所对应的操作指令;之后,执行所述日志流操作任务集合的各个操作任务,以将节点数量从初始数量调整到所述目标数量。这样,本说明书的方案根据节点变化前后确定日志流操作任务集合,再执行上述日志流操作任务集合中的各个操作任务,达到调整分布式系统中节点数量或者用户无感的情况下对集群进行水平伸缩的效果,有利于提升分布式系统的高可用性。
117.下面结合实施例描述本公开实施例提供的一种分布式系统节点数量调整方法,参见图1~图5,包括:
118.(1)分布式系统扩容的场景
119.分布式系统扩容实质上是通过增加节点的数量,来扩容计算能力和存储容量,即将n个节点扩容为m个节点,其中m大于n且m和n均为正整数。
120.(11)假设n个节点每个节点有一个日志流;每个日志流的数据单元的数量为x个,并且x大于m。扩容为m个节点后,每个节点的数据单元的数量相同,均为
121.(12)扩容方法可以理解为:将x*n个数据单元重新分布在m个日志流上,每个日志流上有y个数据单元。通过n个日志流的分裂,以及新增日志流的合并操作可以实现新增m-n个日志流,并且每个日志流上有y个数据单元。
122.(13)执行步骤
123.(131)对n个日志流中各个日志流执行分裂操作:
124.(i)每个日志流保留y个数据单元,然后按照y个数据单元一组分裂新日志流;
125.(ii)分裂出每个日志流上剩余数据单元,剩余数据单元的数量小于y。
126.(132)如果存在节点未分配日志流,则继续扫描n个日志流。
127.(i)由于每个日志流上可分裂的数据单元个数小于y,因此需要从多个日志流上分裂数据单元,直到满足y个数据单元为止;之后将分裂出来的日志流合并为一个拥有y个数据单元的日志流,并分配到新的节点。
128.(ii)等所有节点分配日志流后,扩容结束。
129.以一个节点扩容两个节点为例,为使三个节点达到均衡状态,参见图5,操作如下:
130.第一,在节点s1上的日志流ls1先分裂出一个日志流ls2,日志流ls2上有日志流ls1原有数据单元的1/3。
131.第二,继续从日志流ls1分裂出日志流ls3,日志流ls3上有日志流ls1原有数据单元的1/3。
132.第三,将分裂出来的日志流ls2迁移到节点s2,并将分裂出来的日志流ls3迁移到
节点s3。
133.以上操作完成后,分布式系统可以实现扩容并且实现负载均衡。
134.(2)分布式系统缩容的场景
135.缩容是扩容的反操作。
136.针对m个节点缩容为n个节点的场景,操作如下:
137.第一,假设m=kn+x,其中x《n且k》=1,则待缩容的日志流数量为:m-n=(k-1)n+x。
138.第二,对于前(k-1)n个日志流,直接与不参与缩容的n个日志流进行匹配,执行日志流合并操作,即每个日志流上再合并k-1个数据单元。
139.第三,最后剩余x个待缩容的日志流,每个日志流分裂成n份,分别与不参与缩容的n个日志流进行匹配,执行合并操作。
140.本实施例中,在确定操作任务之后,集群管理软件可以根据各个操作任务的操作指令生成有向无环图。然后,集群管理软件可以根据上述有向无环图的各个操作任务,从而将分布式系统的节点调整为目标数量,可以分布式的水平伸缩、负载均衡且业务无感知。
141.根据本说明书一个或多个实施例,提出了一种分布式系统节点数量调整装置,参见图6,适用于分布式系统,所述装置包括:
142.节点数量获取模块61,用于获取所述分布式系统的节点的初始数量和目标数量;
143.任务集合获取模块62,用于根据所述初始数量和所述目标数量确定日志流操作任务集合;所述日志流操作任务集合包括节点从初始数量调整到目标数量过程中操作日志流的各个任务所对应的操作指令;
144.任务集合执行模块63,用于执行所述日志流操作任务集合的各个操作任务,以将节点数量从初始数量调整到所述目标数量。
145.在一些可能的示例中,所述任务集合获取模块包括:
146.第一数量获取子模块,用于当所述目标数量大于所述初始数量时,根据所述初始数量和所述目标数量确定每个节点的日志流中数据单元的第一数量;
147.操作任务获取子模块,用于根据所述第一数量获取将所述初始数量个节点内日志流的多个数据单元分配到所述目标数量个节点的操作任务;
148.任务集合获取子模块,用于获取各个操作任务的操作指令,得到包含具有先后顺序依赖关系的操作指令的所述日志流操作任务集合。
149.在一些可能的示例中,所述第一数量获取子模块包括:
150.总数量获取单元,用于获取所述初始数量个节点内数据单元的总数量;
151.比值获取单元,用于获取所述总数量与所述目标数量的比值;
152.第一数量获取单元,用于对所述比值进行向下取整数处理,将得到的整数作为每个节点的日志流中数据单元的第一数量。
153.在一些可能的示例中,所述操作任务获取子模块包括:
154.第一分裂任务获取单元,用于获取每个节点的日志流划分成包含第一数量个数据单元的数据单元组的第一分裂任务;
155.第一迁移任务获取单元,用于获取将各个数据单元组依次分配到各个节点的第一迁移任务。
156.在一些可能的示例中,所述操作任务获取子模块还包括:
157.第二分裂任务获取单元,用于当存在未分配日志流的节点时,获取从所述初始数量个节点划分剩余数据单元的第二分裂任务;
158.第二合并任务获取单元,用于获取合并至少两组剩余数据单元得到包含第一数量个数据单元的数据单元组的第二合并任务;
159.第三合并任务获取单元,用于获取将合并得到的数据单元组分配给所述未分配日志流的节点的第三合并任务。
160.在一些可能的示例中,所述任务集合获取模块包括:
161.日志流个数确定子模块,用于当所述目标数量小于所述初始数量时,根据所述初始数量和所述目标数量确定待缩容的日志流的个数;
162.操作任务获取子模块,用于获取将所述待缩容的日志流分配到所述目标数量个目标节点的操作任务;所述目标节点是指所述分布式系统缩容后保留的节点;
163.任务集合获取子模块,用于获取各个操作任务的操作指令,得到包含具有先后顺序依赖关系的操作指令的所述日志流操作任务集合。
164.在一些可能的示例中,所述日志流个数确定子模块包括:
165.差值获取单元,用于获取所述初始数量和所述目标数量的差值;
166.个数获取单元,用于获取所述差值和节点的日志流数量的乘积,得到待缩容的日志流的个数。
167.在一些可能的示例中,所述操作任务获取子模块包括:
168.第三分裂任务获取单元,用于获取将所述待缩容的日志流划分为所述目标数量个数据单元组的第三分裂任务;
169.第四合并任务获取单元,用于获取将所述目标数量个数据单元组依次分配到所述目标数量个目标节点的第四合并任务。
170.在一些可能的示例中,所述操作任务获取子模块还包括:
171.第四分裂任务获取单元,用于当待缩容的日志流存在剩余日志流时,获取将所述剩余日志流划分成目标数量个数据单元组的第四分裂任务;
172.第五合并任务获取单元,用于获取将所述目标数量个数据单元组依次分配到所述目标数量个目标节点的第五合并任务。
173.需要说明的是,本实施例中示出的装置与方法实施例的内容相匹配,可以参考上述方法实施例的内容,在此不再赘述。
174.在一个典型的实施例中,还提供了一种分布式系统,包括多个节点,所述系统包括:
175.处理器;
176.用于存储处理器可执行指令的存储器;
177.其中,所述处理器通过运行所述可执行指令以实现如上述的分布式系统节点数量调整方法。
178.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的
任意几种设备的组合。
179.在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
180.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
181.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
182.本公开实施例提供了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现上述的分布式系统节点数量调整方法。
183.本公开实施例提供了一种计算机程序产品,可以实现上述的分布式系统节点数量调整方法。
184.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
185.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
186.在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
187.应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
188.以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
技术特征:
1.一种分布式系统节点数量调整方法,适用于所述分布式系统,所述方法包括:获取所述分布式系统的节点的初始数量和目标数量;根据所述初始数量和所述目标数量确定日志流操作任务集合;所述日志流操作任务集合包括节点从初始数量调整到目标数量过程中操作日志流的各个任务所对应的操作指令;执行所述日志流操作任务集合的各个操作任务,以将节点数量从初始数量调整到所述目标数量。2.根据权利要求1所述的方法,根据所述初始数量和所述目标数量确定日志流操作任务集合,包括:当所述目标数量大于所述初始数量时,根据所述初始数量和所述目标数量确定每个节点的日志流中数据单元的第一数量;根据所述第一数量获取将所述初始数量个节点内日志流的多个数据单元分配到所述目标数量个节点的操作任务;获取各个操作任务的操作指令,得到包含具有先后顺序依赖关系的操作指令的所述日志流操作任务集合。3.根据权利要求2所述的方法,根据所述初始数量和所述目标数量确定每个节点的日志流中数据单元的第一数量,包括:获取所述初始数量个节点内数据单元的总数量;获取所述总数量与所述目标数量的比值;对所述比值进行向下取整数处理,将得到的整数作为每个节点的日志流中数据单元的第一数量。4.根据权利要求2所述的方法,根据所述第一数量获取将所述初始数量个节点内日志流的多个数据单元分配到所述目标数量个节点的操作任务,包括:获取每个节点的日志流划分成包含第一数量个数据单元的数据单元组的第一分裂任务;获取将各个数据单元组依次分配到各个节点的第一迁移任务。5.根据权利要求4所述的方法,所述方法还包括:当存在未分配日志流的节点时,获取从所述初始数量个节点划分剩余数据单元的第二分裂任务;获取合并至少两组剩余数据单元得到包含第一数量个数据单元的数据单元组的第二合并任务;获取将合并得到的数据单元组分配给所述未分配日志流的节点的第三合并任务。6.根据权利要求1所述的方法,根据所述初始数量和所述目标数量确定日志流操作任务集合,包括:当所述目标数量小于所述初始数量时,根据所述初始数量和所述目标数量确定待缩容的日志流的个数;获取将所述待缩容的日志流分配到所述目标数量个目标节点的操作任务;所述目标节点是指所述分布式系统缩容后保留的节点;获取各个操作任务的操作指令,得到包含具有先后顺序依赖关系的操作指令的所述日志流操作任务集合。
7.根据权利要求6所述的方法,根据所述初始数量和所述目标数量确定待缩容的日志流的个数,包括:获取所述初始数量和所述目标数量的差值;获取所述差值和节点的日志流数量的乘积,得到待缩容的日志流的个数。8.根据权利要求6所述的方法,获取将所述待缩容的日志流分配到所述目标数量个目标节点的操作任务,包括:获取将所述待缩容的日志流划分为所述目标数量个数据单元组的第三分裂任务;获取将所述目标数量个数据单元组依次分配到所述目标数量个目标节点的第四合并任务。9.根据权利要求8所述的方法,所述方法还包括:当待缩容的日志流存在剩余日志流时,获取将所述剩余日志流划分成目标数量个数据单元组的第四分裂任务;获取将所述目标数量个数据单元组依次分配到所述目标数量个目标节点的第五合并任务。10.一种分布式系统节点数量调整装置,适用于所述分布式系统,所述装置包括:节点数量获取模块,用于获取所述分布式系统的节点的初始数量和目标数量;任务集合获取模块,用于根据所述初始数量和所述目标数量确定日志流操作任务集合;所述日志流操作任务集合包括节点从初始数量调整到目标数量过程中操作日志流的各个任务所对应的操作指令;任务集合执行模块,用于执行所述日志流操作任务集合的各个操作任务,以将节点数量从初始数量调整到所述目标数量。11.一种分布式系统,包括多个节点,所述系统包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器通过运行所述可执行指令以实现如权利要求1-9中任一项所述的方法。12.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-9中任一项所述方法的步骤。
技术总结
本说明书一个或多个实施例提供一种分布式系统节点数量调整方法、装置和分布式系统。该方法包括:获取所述分布式系统的节点的初始数量和目标数量;根据所述初始数量和所述目标数量确定日志流操作任务集合;所述日志流操作任务集合包括节点从初始数量调整到目标数量过程中操作日志流的各个任务所对应的操作指令;执行所述日志流操作任务集合的各个操作任务,以将节点数量从初始数量调整到所述目标数量。本说明书的方案根据节点变化前后确定日志流操作任务集合,再执行上述日志流操作任务集合中的各个操作任务,达到调整分布式系统中节点数量或者用户无感的情况下对集群进行水平伸缩的效果,有利于提升分布式系统的高可用性。性。性。
技术研发人员:王万红 毛思语 韩富晟
受保护的技术使用者:北京奥星贝斯科技有限公司
技术研发日:2023.06.30
技术公布日:2023/10/5
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/