一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分布式数据库中无状态计算层快速扩容或缩容的方法与流程

2021-12-04 02:38:00 来源:中国专利 TAG:


1.本发明是关于一种分布式数据库中无状态计算层快速扩容或缩容的方法,涉及分布式数据库技术领域。


背景技术:

2.目前,分布式数据库通常采用存储与计算绑定的结构。即计算实例与存储分片部署在同一个节点上。这种结构虽然有利于计算实例对于数据的读写,但是不利于应对存储与计算资源需求的快速变化。对于扩容缩容的操作,同样很难应对。
3.如图1所示,当前数据库存在两个计算节点,每个计算节点上各有一个计算实例(一个节点上通常有多个实例,这里为了简化,此处只列举一个实例)。当需要再扩容一个计算节点时,除了要在新增加的计算节点上启动一个计算实例以外,还需要对数据分片1,数据分片2重新计算hash,以便重新生成三个计算分片分为对应三个计算实例。这种扩容操作涉及大量的计算和io操作,会耗费很多时间。


技术实现要素:

4.针对上述问题,本发明的目的之一是提供一种无需数据重新分布的分布式数据库中无状态计算层快速扩容或缩容的方法。
5.本发明的目的之二是提供一种分布式数据库中无状态计算层快速扩容或缩容的系统。
6.本发明的目的之三是提供一种电子设备。
7.本发明的目的之四是提供一种计算机存储介质。
8.为实现上述目的,本发明采取以下技术方案:
9.第一方面,一种分布式数据库中无状态计算层快速扩容或缩容的方法,其特征在于包括扩容过程或缩容过程,其中:扩容过程:不增加数据库计算实例,将已存在的计算实例调度至集群新增的计算节点上;或者,增加数据库中的计算实例,将原先映射给其它计算实例的数据分片重新划拨给新增加的计算实例;缩容过程:不减少计算实例,将某些节点上的计算实例全部调度至剩余的节点中;或者,减少计算实例,将被缩掉的计算实例所对应的存储分片划拨给剩余的计算实例。
10.所述的分布式数据库中无状态计算层快速扩容或缩容的方法,进一步地,不增加数据库计算实例,将已存在的计算实例调度至集群新增的计算节点上,包括:
11.调度计算实例,即将一个计算实例从一个计算节点转移到新的计算节点;
12.仅修改计算实例与数据分片的映射关系,无需对存储层进行修改。
13.所述的分布式数据库中无状态计算层快速扩容或缩容的方法,进一步地,不增加数据库计算实例,将已存在的计算实例调度至集群新增的计算节点上的具体过程包括:
14.安装新的计算节点;
15.在集群元数据中创建新的计算实例与数据分片的映射关系,将已存在的计算实例
调度至新的计算节点上;
16.在新的计算节点上启动新调度的计算实例;
17.通知所有计算实例更新映射关系缓存,其中在新的映射关系中,新调度的计算实例仍访问原来的数据分片;
18.通知所有协调实例更新映射关系缓存,此时如果集群有新的sql执行,协调实例会将执行调度到新的计算节点上的计算实例;
19.等待依赖旧的映射关系的sql执行结束;
20.执行结束后,计算实例和协调实例清理各自的映射关系缓存,同时更新集群元数据中的映射关系的引用计数;
21.将运行在原计算节点上已调度的计算实例停止掉。
22.所述的分布式数据库中无状态计算层快速扩容或缩容的方法,进一步地,增加数据库中的计算实例,并将原先映射给其它计算实例的数据分片重新划拨给新增加的实例包括:
23.增加新的计算节点,并在新的计算节点上增加新的计算实例;
24.仅修改计算实例与数据分片的映射关系,无需对存储层进行修改。
25.所述的分布式数据库中无状态计算层快速扩容或缩容的方法,进一步地,增加数据库中的计算实例,并将原先映射给其它计算实例的数据分片重新划拨给新增加的实例的具体过程为:
26.安装新的计算节点;
27.在集群元数据中创建新的计算实例与数据分片的映射关系;
28.在新的计算节点上启动新的计算实例;
29.通知所有计算实例更新映射关系缓存,此时,如果集群有新的sql执行,计算实例会按照新的映射关系去访问对应的数据分片;
30.通知所有协调实例更新映射关系缓存,此时,如果集群有新的sql执行,协调实例会将新的计算实例纳入执行实例集合中;
31.等待依赖旧的映射关系的sql执行结束,执行结束后,计算实例和协调实例清理各自的映射关系缓存,同时更新集群元数据中的映射关系的引用计数。
32.第二方面,本发明还提供一种分布式数据库中无状态计算层快速扩容或缩容的系统,包括扩容单元或缩容单元;所述扩容单元被配置为:不增加数据库计算实例,将已存在的计算实例调度至集群新增的计算节点上;或者增加数据库中的计算实例,并将原先映射给其它计算实例的数据分片重新划拨给新增加的实例;所述缩容单元被配置为:不减少计算实例,将某些节点上的计算实例全部调度至剩余的节点中;或者减少计算实例,将被缩掉的计算实例所对应的存储分片划拨给剩余的计算实例。
33.第三方面,本发明还提供一种电子设备,所述电子设备至少包括处理器和存储器,所述存储器上存储有计算机程序,其特征在于,所述处理器运行所述计算机程序时执行以实现所述的方法。
34.第四方面,本发明还提供一种计算机存储介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现所述的方法。
35.本发明由于采取以上技术方案,其具有以下优点:
36.1、本发明在云计算日益流行的背景下,基于分布式数据库日益流行的存储与计算相分离的架构的基础上,提出的对于计算层快速扩容或缩容的方法,本发明无需对数据进行重新分布,就可以对数据库中的计算实例进行扩容或者缩容,大幅提升计算层的扩容或缩容速度;
37.2、本发明的数据库中存储多份计算实例与数据分片的映射关系,不同的sql可采用不同的映射关系,在计算层扩容或缩容的同时,可以执行业务操作,不用停机;
38.综上,本发明可以广泛用于分布式数据库中。
附图说明
39.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。在整个附图中,用相同的附图标记表示相同的部件。在附图中:
40.图1为现有技术的分布式数据库结构示意图;
41.图2为本发明实施例在扩容之前数据库的结构图;
42.图3为本发明实施例使用方法1对计算层进行扩容后的数据库结构图;
43.图4为本发明实施例使用方法2对计算层进行扩容后的数据库结构图;
44.图5为本发明实施例的电子设备硬件结构图。
具体实施方式
45.下面将参照附图更详细地描述本发明的示例性实施方式。虽然附图中显示了本发明的示例性实施方式,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
46.应理解的是,文中使用的术语仅出于描述特定示例实施方式的目的,而无意于进行限制。除非上下文另外明确地指出,否则如文中使用的单数形式“一”、“一个”以及“所述”也可以表示包括复数形式。术语“包括”、“包含”、“含有”以及“具有”是包含性的,并且因此指明所陈述的特征、步骤、操作、元件和/或部件的存在,但并不排除存在或者添加一个或多个其它特征、步骤、操作、元件、部件、和/或它们的组合。文中描述的方法步骤、过程、以及操作不解释为必须要求它们以所描述或说明的特定顺序执行,除非明确指出执行顺序。还应当理解,可以使用另外或者替代的步骤。
47.尽管可以在文中使用术语第一、第二、第三等来描述多个元件、部件、区域、层和/或部段,但是,这些元件、部件、区域、层和/或部段不应被这些术语所限制。这些术语可以仅用来将一个元件、部件、区域、层或部段与另一区域、层或部段区分开。除非上下文明确地指出,否则诸如“第一”、“第二”之类的术语以及其它数字术语在文中使用时并不暗示顺序或者次序。因此,以下讨论的第一元件、部件、区域、层或部段在不脱离示例实施方式的教导的情况下可以被称作第二元件、部件、区域、层或部段。
48.为了便于描述,可以在文中使用空间相对关系术语来描述如图中示出的一个元件或者特征相对于另一元件或者特征的关系,这些相对关系术语例如为“内部”、“外部”、“内侧”、“外侧”、“下面”、“上面”等。这种空间相对关系术语意于包括除图中描绘的方位之外的
在使用或者操作中装置的不同方位。
49.实施例一
50.数据库存储按照hash划分为多个分片,一个计算实例可以对应若干个数据分片,计算实例与对应的数据分片可以在相同的节点上,也可以在不同的节点上。计算实例与数据分片的映射关系存储于数据库的元数据中。
51.本实施例提供的分布式数据库中无状态计算层快速扩容方法包括两种:
52.方法1:不增加数据库计算实例,而是将已存在的计算实例调度至集群新增的计算节点上,那么每个实例就拥有了更多的计算资源;
53.方法2:增加数据库中的计算实例,并将原先映射给其它计算实例的数据分片重新划拨给新增加的实例,每个计算实例就减少了对应的数据分片,相对增加了计算资源。
54.与扩容相对应,实施例提供的分布式数据库中无状态计算层快速缩容也有两种方法:
55.方法1:不减少计算实例,仅将某些节点上的计算实例全部调度至剩余的节点中;
56.方法2:减少计算实例,并将这些被缩掉的计算实例所对应的存储分片划拨给剩余的计算实例,这两种方法都减少了计算资源。
57.集群协调节点和计算节点都持有映射关系的缓存。当因扩缩容导致映射关系发生变化后,协调节点和计算节点会创建新的映射关系的缓存。只有一个缓存是最新的。执行时,使用当前最新的缓存。缓存被事务所引用,如果一个缓存已经不是最新的,同时没有事务引用它时,就将该缓存清除掉。
58.数据库的元数据中的映射关系也采用引用来管理。当创建新的映射关系时,引用数初始化为协调实例数与计算实例数之和。当协调节点或计算节点在清理映射关系缓存时,也会减少集群元数据中对应的映射关系的引用计数。当集群元数据中的映射关系没有被引用时,就会被清理掉。
59.下面以分布式数据库中无状态计算层快速扩容作为具体实施例对方法1和方法2进行详细说明,缩容的过程与扩容原理相同,不做赘述。
60.方法1的具体实施过程包括:
61.调度计算实例,即将一个计算实例从一个计算节点转移到另外一个计算节点;
62.仅修改计算实例与数据分片的映射关系,无需对存储层进行修改。
63.具体地,如图3所示,本实施例提供的分布式数据库中无状态计算层快速扩容缩容的方法,包括:
64.s1、安装计算节点3,部署好计算实例的执行档及执行环境。
65.s2、在集群元数据中创建新的计算实例与数据分片的映射关系,在新的映射关系中,计算实例2在计算节点3上。
66.s3、在计算节点3上启动新的计算实例2。
67.s4、通知所有计算实例更新映射关系缓存,它们都从集群元数据中读取最新的映射关系,并将映射关系添加到自己的映射关系缓存列表中。在新的映射关系中,计算实例2仍访问数据分片5、6、7、8。
68.s5、通知所有协调实例更新映射关系缓存。它们都从集群元数据中读取最新的映射关系,并将映射关系添加到自己的映射关系缓存列表中。此时,如果集群有新的sql执行,
协调实例会将执行调度到计算节点3上的计算实例2。
69.s6、等待依赖旧的映射关系的sql执行结束。执行结束后,计算实例和协调实例清理各自的映射关系缓存,同时更新集群元数据中的映射关系的引用计数。
70.s7、将之前运行在计算节点1上旧的计算实例2停止掉。
71.方法2的具体实施过程包括:
72.增加计算节点,并在新的计算节点上增加计算实例。
73.仅修改计算实例与数据分片的映射关系,无需对存储层进行修改。
74.具体地,如图4所示,本实施例提供的分布式数据库中无状态计算层快速扩容缩容的方法,包括:
75.s1、安装计算节点3,部署好计算实例的执行档及执行环境。
76.s2、在集群元数据中创建新的计算实例与数据分片的映射关系。
77.在新的映射关系中,计算实例1对应数据分片1、2、3,计算实例2对应数据分片4、5、6,计算实例3对应数据分片7、8、9,新加入的计算实例4对应数据分片10、11、12。
78.s3、在计算节点3上启动新的计算实例4。
79.s4、通知所有计算实例更新映射关系缓存。它们都从集群元数据中读取最新的映射关系,并将映射关系添加到自己的映射关系缓存列表中。此时,如果集群有新的sql执行,计算实例会按照新的映射关系去访问对应的数据分片。
80.s5、通知所有协调实例更新映射关系缓存。它们都从集群元数据中读取最新的映射关系,并将映射关系添加到自己的映射关系缓存列表中。此时,如果集群有新的sql执行,协调实例会将计算实例4纳入执行实例集合中。
81.s5、等待依赖旧的映射关系的sql执行结束。执行结束后,计算实例和协调实例清理各自的映射关系缓存,同时更新集群元数据中的映射关系的引用计数。
82.实施例二
83.上述实施例一提供了分布式数据库中无状态计算层快速扩容或缩容的方法,与之相对应地,本实施例提供一种分布式数据库中无状态计算层快速扩容或缩容的系统。本实施例提供的系统可以实施实施例一的分布式数据库中无状态计算层快速扩容或缩容的方法,该系统可以通过软件、硬件或软硬结合的方式来实现。为了描述的方便,描述本实施例时以功能分为各种单元分别描述。当然,在实施时可以把各单元的功能在同一个或多个软件和/或硬件中实现。例如,该系统可以包括集成的或分开的功能模块或功能单元来执行实施例一各方法中的对应步骤。由于本实施例的系统基本相似于方法实施例,所以本实施例描述过程比较简单,相关之处可以参见实施例一的部分说明即可,本发明提供的分布式数据库中无状态计算层快速扩容或缩容的系统的实施例仅仅是示意性的。
84.具体地,本实施例提供的分布式数据库中无状态计算层快速扩容或缩容的系统,包括扩容单元或缩容单元;
85.扩容单元被配置为:不增加数据库计算实例,将已存在的计算实例调度至集群新增的计算节点上;或者增加数据库中的计算实例,并将原先映射给其它计算实例的数据分片重新划拨给新增加的实例;
86.缩容单元被配置为:不减少计算实例,将某些节点上的计算实例全部调度至剩余的节点中;或者减少计算实例,将被缩掉的计算实例所对应的存储分片划拨给剩余的计算
实例。
87.实施例三
88.本实施例提供一种与本实施例一所提供的分布式数据库中无状态计算层快速扩容或缩容的方法对应的电子设备,电子设备可以是用于客户端的电子设备,例如手机、笔记本电脑、平板电脑、台式机电脑等,以执行实施例一的方法。
89.如图5所示,电子设备包括处理器、存储器、通信接口和总线,处理器、存储器和通信接口通过总线连接,以完成相互间的通信。总线可以是工业标准体系结构(isa,industry standard architecture)总线,外部设备互连(pci,peripheral component)总线或扩展工业标准体系结构(eisa,extended industry standard component)总线等等。存储器中存储有可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行本实施例一所提供的分布式数据库中无状态计算层快速扩容或缩容的方法。本领域技术人员可以理解,图5中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算设备的限定,具体的计算设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
90.在一些实现中,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、光盘等各种可以存储程序代码的介质。
91.在另一些实现中,处理器可以为中央处理器(cpu)、数字信号处理器(dsp)等各种类型通用处理器,在此不做限定。
92.实施例四
93.本实施例一的分布式数据库中无状态计算层快速扩容或缩容的方法可被具体实现为一种计算机程序产品,计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本实施例一所述的分布式数据库中无状态计算层快速扩容或缩容的方法的计算机可读程序指令。
94.计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意组合。
95.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实现”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书实施例的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示
例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
96.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
97.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
98.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
99.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献