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

分布式数据库弹性伸缩方法、装置、设备和存储介质与流程

2022-02-20 06:51:09 来源:中国专利 TAG:


1.本技术涉及分布式数据库技术领域,特别是涉及一种分布式数据库弹性伸缩方法、装置、设备和存储介质。


背景技术:

2.在用户量及数据量呈现井喷式增长的情况下,传统关系型数据库难以满足越来越大的并发量和复杂多变的业务流量,为此,引入了分布式数据库。
3.传统技术中,为了应对业务流量的激增,需要有数据库管理员(database administrator,简称dba)等专业人员通过观察监控或接收到系统告警后对运行中的数据库系统进行性能方面的排查,在确定需要进行扩容或后通过人工、脚本、平台操作等方式对分布式数据库进行扩容,业务洪峰过后还需要进行缩容,导致运行成本高且扩、缩容不及时。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种能够提高扩、缩容及时性且降低运行成本的分布式数据库弹性伸缩方法、装置、计算机设备和存储介质。
5.一种分布式数据库弹性伸缩方法,所述方法包括:
6.获取容器集群的每一个容器中所部署实例对应的cpu使用率;其中,每一个容器中部署分布式数据库中的一个实例;
7.根据cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容。
8.在其中一个实施例中,在获取容器集群的每一个容器中所部署实例对应的cpu使用率之前,方法还包括:
9.根据分布式数据库中的每一个实例的实例规格配置容器集群中的每一个容器,实例规格包括cpu核数、内存和存储容量;
10.将分布式数据库中的每一个实例部署在容器集群的每一个容器中。
11.在其中一个实施例中,在获取容器集群的每一个容器中所部署实例对应的cpu使用率之后,方法还包括:
12.确定分布式数据库的每一个实例对应的cpu使用率的平均值,得到平均cpu使用率;
13.根据分布式数据库中的每一个实例的实例规格,确定分布式数据库的每一个实例对应的cpu核数以及每种实例规格对应的cpu核数;
14.确定分布式数据库的每种实例规格对应的最大实例数;
15.根据cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容包括:
16.根据cpu使用率和平均cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容。
17.在其中一个实施例中,根据cpu使用率和平均cpu使用率,对分布式数据库进行同
构扩容、异构扩容或缩容包括:
18.若平均cpu使用率大于最大使用率阈值,对分布式数据库进行同构扩容;
19.若平均cpu使用率不大于最大使用率阈值,且存在cpu使用率大于最大使用率阈值,对分布式数据库进行异构扩容;
20.若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,对分布式数据库进行缩容;
21.最小使用率阈值小于最大使用率阈值。
22.在其中一个实施例中,若平均cpu使用率大于最大使用率阈值,对分布式数据库进行同构扩容,包括:
23.根据最大使用率阈值和最小使用率阈值获取目标cpu使用率;
24.根据目标cpu使用率和平均cpu使用率获取需要扩容的实例数;
25.根据需要扩容的实例数,同构扩容出多个新实例。
26.在其中一个实施例中,若平均cpu使用率不大于最大使用率阈值,且存在cpu使用率大于最大使用率阈值,对分布式数据库进行异构扩容,包括:
27.根据最大使用率阈值和最小使用率阈值获取目标cpu使用率;
28.根据目标cpu使用率、每个实例对应的cpu核数和cpu使用率获取需要扩容的cpu核数;
29.根据目标cpu使用率、需要扩容的cpu核数和每种实例规格的cpu核数获取每种实例规格需要扩容的实例数;
30.根据每种实例规格需要扩容的实例数和每种实例规格对应的最大实例数,异构扩容出多个新实例。
31.在其中一个实施例中,若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,对分布式数据库进行缩容,包括:
32.若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,获取标有异构扩容标签的实例;
33.获取标有异构扩容标签的实例,缩容一个标有异构扩容标签的实例;
34.缩容一个实例后,获取分布式数据库中的每一个实例对应的cpu使用率,若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,则再次缩容一个标有异构扩容标签的实例;若分布式数据库中至少有一个实例对应的cpu使用率不小于最小使用率阈值,则停止缩容。
35.一种分布式数据库弹性伸缩装置,所述装置包括:
36.实例监控模块,用于获取容器集群的每一个容器中所部署实例对应的cpu使用率;其中,每一个容器中部署分布式数据库中的一个实例;
37.伸缩控制模块,用于根据cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容。
38.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
39.获取容器集群的每一个容器中所部署实例对应的cpu使用率;其中,每一个容器中部署分布式数据库中的一个实例;
40.根据cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容。
41.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
42.获取容器集群的每一个容器中所部署实例对应的cpu使用率;其中,每一个容器中部署分布式数据库中的一个实例;
43.根据cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容。
44.上述分布式数据库弹性伸缩方法、装置、计算机设备和存储介质,获取容器集群的每一个容器中所部署实例对应的cpu使用率;其中,每一个容器中部署分布式数据库中的一个实例;根据cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容。通过预先将分布式数据库的每一个实例部署到容器集群管理系统的每一个容器中,监控分布式数据库中每一个实例对应的cpu使用率,根据cpu使用率判断当前业务负载的情况,然后对分布式数据库进行弹性伸缩,弹性伸缩包括同构扩容、异构扩容或缩容。能够提高分布式数据库的扩、缩容及时性且降低运行成本。
附图说明
45.图1为一个实施例中分布式数据库弹性伸缩方法的流程示意图;
46.图2为一个实施例中分布式数据库弹性伸缩装置的结构框图;
47.图3为一个实施例中计算机设备的内部结构图。
具体实施方式
48.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
49.在一个实施例中,如图1所示,提供了一种分布式数据库弹性伸缩方法,本实施例以该方法应用于终端进行举例说明,可以理解的是,该方法也可以应用于服务器,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。本实施例中,该方法包括以下步骤:
50.步骤102,获取容器集群的每一个容器中所部署实例对应的cpu使用率;其中,每一个容器中部署分布式数据库中的一个实例。
51.其中,容器集群构建在容器集群管理系统中,容器集群管理系统是一个动态的系统,在系统中可以放置多个容器,这些容器的状态以及容器之间的通信都可以被系统所监控。常见的容器集群管理系统有docker-swarm、fleet-core os、kubernetes-google、mesos-apache等。一个容器集群是由一个监控系统和一系列计算结点(不论是物理服务器或者是虚拟机)所组成的。实例(instance)是“内存”和“后台进程”的集合,是位于物理内存里的数据结构,由线程和内存池组成,实例其实就是指的操作系统中一系列的进程以及为这些进程所分配的内存块。数据库的应用如果想实现,数据库和实例是缺一不可的,如果只有数据库,只能代表数据存储在数据库的文件中,但是无法直接进行操作,而如果只有实例,只能知道要执行急性操作,但是不知道具体操作什么数据,操作生成的数据也无法保存。
52.具体的,预先将分布式数据库的每一个实例部署到容器集群管理系统的每一个容器中,容器集群管理系统监控分布式数据库中每一个实例对应的cpu使用率,一个分布式数据库通常包括多个实例。
53.步骤104,根据cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容。
54.具体的,预先设定最大使用率阈值和最小使用率阈值,容器集群管理系统将每个实例的cpu使用率和平均cpu使用率与最大使用率阈值和最小使用率阈值进行比较,根据不同情况,对分布式数据库进行同构扩容、异构扩容或缩容,扩、缩容操作主要通过添加或删除分布式数据库中的实例来完成。
55.上述分布式数据库弹性伸缩方法中,获取容器集群的每一个容器中所部署实例对应的cpu使用率;其中,每一个容器中部署分布式数据库中的一个实例;根据cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容。通过预先将分布式数据库的每一个实例部署到容器集群管理系统的每一个容器中,监控分布式数据库中每一个实例对应的cpu使用率,根据cpu使用率判断当前业务负载的情况,然后对分布式数据库进行弹性伸缩,弹性伸缩包括同构扩容、异构扩容或缩容。能够提高分布式数据库的扩、缩容及时性且降低运行成本。
56.在一个实施例中,在获取容器集群的每一个容器中所部署实例对应的cpu使用率之前,方法还包括:根据分布式数据库中的每一个实例的实例规格配置容器集群中的每一个容器,实例规格包括cpu核数、内存和存储容量;将分布式数据库中的每一个实例部署在容器集群的每一个容器中。
57.具体的,通过容器集群管理系统构建容器集群,根据分布式数据库中的每一个实例的实例规格配置容器集群中的每一个容器,然后将分布式数据库中的每一个实例部署在容器集群的每一个容器中。
58.进一步的,例如,容器集群管理系统可以选用kubernetes,kubernetes简称k8s,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。将分布式数据库运行在kubernetes中,每个租户拥有独立的分布式数据库且运行在单独的namespace中,kubernetes中的每一个容器就是一个pod,分布式数据库的每个实例部署在kubernetes中一个pod中,以statefulset的方式运行,可为pod设定其可用的cpu、内存、磁盘存储容量等资源,多个租户的多个分布式数据库由管理组件来统一维护。该管理组件称为operator,也运行在kubernetes中,通过自定义资源定义(custom resource definition,简称crd)来管理容器集群管理系统,通过监控组件对分布式数据库进行监控。
59.在一个实施例中,在获取容器集群的每一个容器中所部署实例对应的cpu使用率之后,方法还包括:确定分布式数据库的每一个实例对应的cpu使用率的平均值,得到平均cpu使用率;根据分布式数据库中的每一个实例的实例规格,确定分布式数据库的每一个实例对应的cpu核数以及每种实例规格对应的cpu核数;确定分布式数据库的每种实例规格对应的最大实例数;根据cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容包括:根据cpu使用率和平均cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容。
60.其中,每种实例规格对应的最大实例数是用户通过配置文件设定的,设定的标准通常根据实际物理机的性能、数量以及运行的实例的规格、数量等综合决定,该配置文件由crd读取并生效。
61.具体的,接上例,kubernetes的管理组件中可配置cpu使用率的最小使用率阈值以及最大使用率阈值,管理组件不断监控分布式数据库运行状态,确定分布式数据库的每一个实例对应的cpu核数以及每种实例规格对应的cpu核数,确定分布式数据库的每种实例规格对应的最大实例数,获取每个实例的cpu使用率和所有实例的平均cpu使用率,当有实例的cpu使用率超过用户设定的最大使用率阈值时,触发扩容操作,通过比较平均cpu使用率和最大使用率阈值判断进行同构扩容或异构扩容,当每一个实例的cpu使用率均低于用户设定的最小使用率阈值时,触发缩容操作,当所有实例的cpu使用率处于最大使用率阈值和最小使用率阈值二者之间时不进行任何动作,每次扩容后的实例数总和不超过物理节点的数量,避免无效扩容。
62.在一个实施例中,根据cpu使用率和平均cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容包括:若平均cpu使用率大于最大使用率阈值,对分布式数据库进行同构扩容;若平均cpu使用率不大于最大使用率阈值,且存在cpu使用率大于最大使用率阈值,对分布式数据库进行异构扩容;若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,对分布式数据库进行缩容;最小使用率阈值小于最大使用率阈值。
63.具体的,接上例,kubernetes的管理组件不断监控分布式数据库运行状态,获取每个实例的cpu使用率和所有实例的平均cpu使用率,若平均cpu使用率大于最大使用率阈值,对分布式数据库进行同构扩容;若平均cpu使用率不大于最大使用率阈值,且存在cpu使用率大于最大使用率阈值,对分布式数据库进行异构扩容;若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,对分布式数据库进行缩容。
64.本实施例中,持续监控每个实例的cpu使用率和所有实例的平均cpu使用率,若平均cpu使用率大于最大使用率阈值,对分布式数据库进行同构扩容;若平均cpu使用率不大于最大使用率阈值,且存在cpu使用率大于最大使用率阈值,对分布式数据库进行异构扩容;若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,对分布式数据库进行缩容。能够根据每个实例的cpu使用率和所有实例的平均cpu使用率判断当前业务负载的情况,然后对分布式数据库及时进行同构扩容或者异构扩容或者缩容,从而降低运行成本。
65.在一个实施例中,若平均cpu使用率大于最大使用率阈值,对分布式数据库进行同构扩容,包括:根据最大使用率阈值和最小使用率阈值获取目标cpu使用率;根据目标cpu使用率和平均cpu使用率获取需要扩容的实例数;根据需要扩容的实例数,同构扩容出多个新实例。
66.具体的,同构扩容时先计算出需要扩容的实例数,计算方法为需要扩容的实例数=(平均cpu使用率/目标cpu使用率-1)*当前实例数,其中目标cpu使用率=1/2*(最大使用率阈值 最小使用率阈值)。
67.进一步的,kubernetes中,当一个分布式数据库中所有实例的平均cpu使用率超过最大使用率阈值,触发同构扩容。同构扩容即扩容出来的实例的cpu、内存、磁盘存储等资源的大小与用户配置无关,仅与扩容前的普通实例的实例规格有关,同构扩容通常认为是因业务量增长而需要扩容系统资源,同构实例仅会扩容,不会缩容,这样可避免因刚创建集群尚未有业务负载进而触发错误的缩容,也可避免夜晚等业务低峰期缩容后,白天的业务高峰又需要扩容,导致需要频繁的扩缩容,造成业务不稳定等情况。扩容目标为扩容后的集群
实例平均cpu使用率低于cpu_usage_target,cpu_usage_target=(min_threshold max_threshold)/2,需要扩容的实例数满足如下公式:count=max(1,current_instance_num*(avg_cpu_usage/cpu_usage_target-1)),其中count表示需要扩容的实例数,max_threshold为最大使用率阈值,min_threshold为最小使用率阈值,current_instance_num为分布式数据库中的当前实例数,avg_cpu_usage为集群中所有实例的平均cpu使用率,cpu_usage_target为扩容后的目标cpu使用率,max为取1与后者的最大值,即当cpu使用率超过最大阈值时,至少扩容1个实例。
68.本实施例中,通过根据最大使用率阈值和最小使用率阈值获取目标cpu使用率;根据目标cpu使用率和平均cpu使用率获取需要扩容的实例数;根据需要扩容的实例数,同构扩容出多个新实例。能够根据所有实例的平均cpu使用率判断当前业务负载的情况,然后根据业务负载对分布式数据库及时进行同构扩容。
69.在一个实施例中,若平均cpu使用率不大于最大使用率阈值,且存在cpu使用率大于最大使用率阈值,对分布式数据库进行异构扩容,包括:根据最大使用率阈值和最小使用率阈值获取目标cpu使用率;根据目标cpu使用率、每个实例对应的cpu核数和cpu使用率获取需要扩容的cpu核数;根据目标cpu使用率、需要扩容的cpu核数和每种实例规格的cpu核数获取每种实例规格需要扩容的实例数;根据每种实例规格需要扩容的实例数和每种实例规格对应的最大实例数,异构扩容出多个新实例。
70.具体的,异构扩容时先计算出需要扩容的实例数,由于异构实例的实例规格可能不同,因此先计算出需要扩容的cpu核数,计算方法为对每一个超过了最大使用率阈值的实例进行如下计算并对结果进行累加:(实例cpu使用率-目标cpu使用率)*该实例的cpu核数,其中目标cpu使用率=1/2*(最大使用率阈值 最小使用率阈值),记该累加值为scaleoutsize。由于用户可以配置多种规格的异构实例,因此按照cpu核数的大小进行降序排序建立实例规格列表。循环实例规格列表以计算出每种实例规格需要扩容的实例数,计算方法如下:
71.a)该种实例规格需要扩容的实例数=scaleoutsize/该种实例规格的cpu核数/目标cpu使用率,其中目标cpu使用率=1/2*(最大使用率阈值 最小使用率阈值)。
72.b)如果该种实例规格需要扩容的实例数未超过用户指定的该种实例规格对应的最大实例数,则扩容计算完成,退出循环。
73.c)令availablecount=该种实例规格对应的最大实例数-已存在的该种实例规格的实例数,如果该种实例规格需要扩容的实例数超过了availablecount,则仅扩容availablecount,并且令scaleoutsize=scaleoutsize-(该种实例规格的cpu核数*availablecount)。
74.继续循环实例规格列表,并使用新的实例规格计算需要扩容的实例数,直至满足需要扩容的实例数或循环完实例规格列表种全部的实例规格为止。
75.进一步的,kubernetes中,当分布式数据库中所有实例的平均cpu使用率未超过最大使用率阈值但有部分实例的cpu使用率超过了最大使用率阈值,触发异构扩容。异构扩容通常认为是存在部分热点,当热点过去后,需要进行缩容。异构扩容出来的实例通过对实例打标签的方式进行标记,表明该实例是异构实例。扩容目标为扩容后cpu超过了最大使用率阈值的部分实例的cpu使用率低于cpu_usage_target,异构扩容出来的实例的实例规格需
要进行自定义配置,当用户配置了多个实例规格时,先按照cpu核数进行降序排序,扩容时优先使用cpu核数比较大的实例规格,当某个实例规格达到最大实例数时,使用下一档位的实例规格,直至满足扩容目标或无可扩容实例为止,每个规格的扩容实例数可用如下公式表示:countrt=max(1,cpu_scale_size/cpu_numrt/cpu_usage_target),其中cpu_scale_size为需要扩容的cpu时间,cpu_numrt为该实例规格的cpu核数,cpu_usage_target为扩容后希望处于的cpu使用率,max为取1与后者的最大值,即至少扩容1个实例,cpu_scale_size满足如下公式:cpu_scale_size=sum((cpu_usagehigh-cpu_usage_target)*cpu_numhigh),其中cpu_usagehigh为cpu使用率超过最大阈值的实例的cpu使用率,cpu_usage_target为扩容后的目标cpu使用率,cpu_numhigh为cpu使用率超过最大阈值的实例的cpu核数,sum为对括号内的值进行求和。当一种实例规格数量无法完全满足扩容需求时,会先把该实例规格的可用实例全部用于扩容,扣减对应的cpu_scale_size后,继续使用下一个实例规格进行扩容,扩容时还要对新扩容出来的实例打上异构扩容标签,以便之后可能发生的缩容使用。
76.本实施例中,通过根据最大使用率阈值和最小使用率阈值获取目标cpu使用率;根据目标cpu使用率、每个实例对应的cpu核数和cpu使用率获取需要扩容的cpu核数;根据目标cpu使用率、需要扩容的cpu核数和每种实例规格的cpu核数获取每种实例规格需要扩容的实例数;根据每种实例规格需要扩容的实例数和每种实例规格对应的最大实例数,异构扩容出多个新实例。能够根据每个实例的cpu使用率和所有实例的平均cpu使用率判断当前业务负载的情况,然后对分布式数据库及时进行异构扩容。
77.在一个实施例中,若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,对分布式数据库进行缩容,包括:若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,获取标有异构扩容标签的实例;获取标有异构扩容标签的实例,缩容一个标有异构扩容标签的实例;缩容一个实例后,获取分布式数据库中的每一个实例对应的cpu使用率,若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,则再次缩容一个标有异构扩容标签的实例;若分布式数据库中至少有一个实例对应的cpu使用率不小于最小使用率阈值,则停止缩容。
78.具体的,kubernetes中,当分布式数据库中的所有实例的cpu使用率均低于最小使用率阈值时,触发缩容。缩容仅针对异构扩容出来的实例,管理组件可根据异构扩容标签来判断该实例是否属于异构扩容实例。为了防止因缩容速度过快而业务负载高低反复,每次缩容时仅缩容一个实例,缩容时先对用户配置的实例规格按照cpu核数升序排序,优先缩容cpu核数较小的异构扩容实例。
79.本实施例中,通过若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,对分布式数据库进行缩容,包括:若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,获取标有异构扩容标签的实例;获取标有异构扩容标签的实例,缩容一个标有异构扩容标签的实例;缩容一个实例后,获取分布式数据库中的每一个实例对应的cpu使用率,若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,则再次缩容一个标有异构扩容标签的实例;若分布式数据库中至少有一个实例对应的cpu使用率不小于最小使用率阈值,则停止缩容。能够根据每个实例的cpu使用率判断当前业务负载的情况,然后对分布式数据库及时进行缩容。
80.在一个实施例中,一种分布式数据库弹性伸缩方法,以应用于基于kubernetes的容器运行环境为例,方法具体包括:
81.将分布式数据库运行在kubernetes中,每个租户拥有独立的分布式数据库且运行在单独的namespace中,分布式数据库的每个实例部署在kubernetes中一个pod中,以statefulset的方式运行,可为pod设定其可用的cpu、内存、磁盘存储等资源,多个租户的多个分布式数据库由管理组件来统一维护。kubernetes的管理组件中可配置cpu使用率的最小使用率阈值以及最大使用率阈值,管理组件不断监控分布式数据库运行状态,获取每个实例的cpu使用率和所有实例的平均cpu使用率。
82.当一个分布式数据库中所有实例的平均cpu使用率超过最大使用率阈值,触发同构扩容。同构扩容即扩容出来的实例的cpu、内存、磁盘存储等资源的大小与用户配置无关,仅与扩容前的普通实例的实例规格有关,同构扩容通常认为是因业务量增长而需要扩容系统资源,同构实例仅会扩容,不会缩容,这样可避免因刚创建集群尚未有业务负载进而触发错误的缩容,也可避免夜晚等业务低峰期缩容后,白天的业务高峰又需要扩容,导致需要频繁的扩缩容,造成业务不稳定等情况。扩容目标为扩容后的集群实例平均cpu使用率低于cpu_usage_target,cpu_usage_target=(min_threshold max_threshold)/2,需要扩容的实例数满足如下公式:count=max(1,current_instance_num*(avg_cpu_usage/cpu_usage_target-1)),其中count表示需要扩容的实例数,max_threshold为最大使用率阈值,min_threshold为最小使用率阈值,current_instance_num为分布式数据库中的当前实例数,avg_cpu_usage为集群中所有实例的平均cpu使用率,cpu_usage_target为扩容后的目标cpu使用率,max为取1与后者的最大值,即当cpu使用率超过最大阈值时,至少扩容1个实例。
83.当分布式数据库中所有实例的平均cpu使用率未超过最大使用率阈值但有部分实例的cpu使用率超过了最大使用率阈值,触发异构扩容。异构扩容通常认为是存在部分热点,当热点过去后,需要进行缩容。异构扩容出来的实例通过对实例打标签的方式进行标记,表明该实例是异构实例。扩容目标为扩容后cpu超过了最大使用率阈值的部分实例的cpu使用率低于cpu_usage_target,异构扩容出来的实例的实例规格需要进行自定义配置,当用户配置了多个实例规格时,先按照cpu核数进行降序排序,扩容时优先使用cpu核数比较大的实例规格,当某个实例规格达到最大实例数时,使用下一档位的实例规格,直至满足扩容目标或无可扩容实例为止,每个规格的扩容实例数可用如下公式表示:countrt=max(1,cpu_scale_size/cpu_numrt/cpu_usage_target),其中cpu_scale_size为需要扩容的cpu时间,cpu_numrt为该实例规格的cpu核数,cpu_usage_target为扩容后的目标cpu使用率,max为取1与后者的最大值,即至少扩容1个实例,cpu_scale_size满足如下公式:cpu_scale_size=sum((cpu_usagehigh-cpu_usage_target)*cpu_numhigh),其中cpu_usagehigh为cpu使用率超过最大阈值的实例的cpu使用率,cpu_usage_target为扩容后希望处于的cpu使用率,cpu_numhigh为cpu使用率超过最大阈值的实例的cpu核数,sum为对括号内的值进行求和。当一种实例规格数量无法完全满足扩容需求时,会先把该实例规格的可用实例全部用于扩容,扣减对应的cpu_scale_size后,继续使用下一个实例规格进行扩容,扩容时还要对新扩容出来的实例打上异构扩容标签,以便之后可能发生的缩容使用。
84.当分布式数据库中的所有实例的cpu使用率均低于最小使用率阈值时,触发缩容。
缩容仅针对异构扩容出来的实例,管理组件可根据异构扩容标签来判断该实例是否属于异构扩容实例。为了防止因缩容速度过快而业务负载高低反复,每次缩容时仅缩容一个实例,缩容时先对用户配置的实例规格按照cpu核数升序排序,优先缩容cpu核数较小的异构扩容实例。
85.弹性伸缩(扩、缩容)时不仅要在kubernetes中创建相应pod、service等资源,还要在分布式数据库层面进行数据库实例的注册或删除。每次进行弹性伸缩后根据用户配置在指定的时间段内不再触发弹性伸缩,避免频繁进行扩、缩容导致系统不稳定。
86.应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
87.在一个实施例中,如图2所示,提供了一种分布式数据库弹性伸缩装置200,包括:实例监控模块201和伸缩控制模块202,其中:
88.实例监控模块201,用于获取容器集群的每一个容器中所部署实例对应的cpu使用率;其中,每一个容器中部署分布式数据库中的一个实例;
89.伸缩控制模块202,用于根据cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容。
90.在一个实施例中,装置还包括:
91.实例部署模块203,用于根据分布式数据库中的每一个实例的实例规格配置容器集群中的每一个容器,实例规格包括cpu核数、内存和存储容量;将分布式数据库中的每一个实例部署在容器集群的每一个容器中。
92.在一个实施例中,实例监控模块201还用于确定分布式数据库的每一个实例对应的cpu使用率的平均值,得到平均cpu使用率;根据分布式数据库中的每一个实例的实例规格,确定分布式数据库的每一个实例对应的cpu核数以及每种实例规格对应的cpu核数;确定分布式数据库的每种实例规格对应的最大实例数;伸缩控制模块202还用于根据cpu使用率和平均cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容。
93.在一个实施例中,伸缩控制模块202还用于若平均cpu使用率大于最大使用率阈值,对分布式数据库进行同构扩容;若平均cpu使用率不大于最大使用率阈值,且存在cpu使用率大于最大使用率阈值,对分布式数据库进行异构扩容;若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,对分布式数据库进行缩容;最小使用率阈值小于最大使用率阈值。
94.在一个实施例中,伸缩控制模块202还用于根据最大使用率阈值和最小使用率阈值获取目标cpu使用率;根据目标cpu使用率和平均cpu使用率获取需要扩容的实例数;根据需要扩容的实例数,同构扩容出多个新实例。
95.在一个实施例中,伸缩控制模块202还用于根据最大使用率阈值和最小使用率阈值获取目标cpu使用率;根据目标cpu使用率、每个实例对应的cpu核数和cpu使用率获取需要扩容的cpu核数;根据目标cpu使用率、需要扩容的cpu核数和每种实例规格的cpu核数获
取每种实例规格需要扩容的实例数;根据每种实例规格需要扩容的实例数和每种实例规格对应的最大实例数,异构扩容出多个新实例。
96.在一个实施例中,伸缩控制模块202还用于若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,获取标有异构扩容标签的实例;获取标有异构扩容标签的实例,缩容一个标有异构扩容标签的实例;缩容一个实例后,获取分布式数据库中的每一个实例对应的cpu使用率,若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,则再次缩容一个标有异构扩容标签的实例;若分布式数据库中至少有一个实例对应的cpu使用率不小于最小使用率阈值,则停止缩容。
97.关于分布式数据库弹性伸缩装置的具体限定可以参见上文中对于分布式数据库弹性伸缩方法的限定,在此不再赘述。上述分布式数据库弹性伸缩装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
98.在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过wifi、运营商网络、nfc(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种分布式数据库弹性伸缩方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
99.本领域技术人员可以理解,图3中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
100.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
101.获取容器集群的每一个容器中所部署实例对应的cpu使用率;其中,每一个容器中部署分布式数据库中的一个实例;
102.根据cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容。
103.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
104.根据分布式数据库中的每一个实例的实例规格配置容器集群中的每一个容器,实例规格包括cpu核数、内存和存储容量;
105.将分布式数据库中的每一个实例部署在容器集群的每一个容器中。
106.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
107.确定分布式数据库的每一个实例对应的cpu使用率的平均值,得到平均cpu使用率;
108.根据分布式数据库中的每一个实例的实例规格,确定分布式数据库的每一个实例
对应的cpu核数以及每种实例规格对应的cpu核数;
109.确定分布式数据库的每种实例规格对应的最大实例数;
110.根据cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容包括:
111.根据cpu使用率和平均cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容。
112.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
113.若平均cpu使用率大于最大使用率阈值,对分布式数据库进行同构扩容;
114.若平均cpu使用率不大于最大使用率阈值,且存在cpu使用率大于最大使用率阈值,对分布式数据库进行异构扩容;
115.若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,对分布式数据库进行缩容;
116.最小使用率阈值小于最大使用率阈值。
117.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
118.根据最大使用率阈值和最小使用率阈值获取目标cpu使用率;
119.根据目标cpu使用率和平均cpu使用率获取需要扩容的实例数;
120.根据需要扩容的实例数,同构扩容出多个新实例。
121.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
122.根据最大使用率阈值和最小使用率阈值获取目标cpu使用率;
123.根据目标cpu使用率、每个实例对应的cpu核数和cpu使用率获取需要扩容的cpu核数;
124.根据目标cpu使用率、需要扩容的cpu核数和每种实例规格的cpu核数获取每种实例规格需要扩容的实例数;
125.根据每种实例规格需要扩容的实例数和每种实例规格对应的最大实例数,异构扩容出多个新实例。
126.在一个实施例中,处理器执行计算机程序时还实现以下步骤:
127.若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,获取标有异构扩容标签的实例;
128.获取标有异构扩容标签的实例,缩容一个标有异构扩容标签的实例;
129.缩容一个实例后,获取分布式数据库中的每一个实例对应的cpu使用率,若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,则再次缩容一个标有异构扩容标签的实例;若分布式数据库中至少有一个实例对应的cpu使用率不小于最小使用率阈值,则停止缩容。
130.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
131.获取容器集群的每一个容器中所部署实例对应的cpu使用率;其中,每一个容器中部署分布式数据库中的一个实例;
132.根据cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容。
133.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
134.根据分布式数据库中的每一个实例的实例规格配置容器集群中的每一个容器,实
例规格包括cpu核数、内存和存储容量;
135.将分布式数据库中的每一个实例部署在容器集群的每一个容器中。
136.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
137.确定分布式数据库的每一个实例对应的cpu使用率的平均值,得到平均cpu使用率;
138.根据分布式数据库中的每一个实例的实例规格,确定分布式数据库的每一个实例对应的cpu核数以及每种实例规格对应的cpu核数;
139.确定分布式数据库的每种实例规格对应的最大实例数;
140.根据cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容包括:
141.根据cpu使用率和平均cpu使用率,对分布式数据库进行同构扩容、异构扩容或缩容。
142.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
143.若平均cpu使用率大于最大使用率阈值,对分布式数据库进行同构扩容;
144.若平均cpu使用率不大于最大使用率阈值,且存在cpu使用率大于最大使用率阈值,对分布式数据库进行异构扩容;
145.若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,对分布式数据库进行缩容;
146.最小使用率阈值小于最大使用率阈值。
147.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
148.根据最大使用率阈值和最小使用率阈值获取目标cpu使用率;
149.根据目标cpu使用率和平均cpu使用率获取需要扩容的实例数;
150.根据需要扩容的实例数,同构扩容出多个新实例。
151.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
152.根据最大使用率阈值和最小使用率阈值获取目标cpu使用率;
153.根据目标cpu使用率、每个实例对应的cpu核数和cpu使用率获取需要扩容的cpu核数;
154.根据目标cpu使用率、需要扩容的cpu核数和每种实例规格的cpu核数获取每种实例规格需要扩容的实例数;
155.根据每种实例规格需要扩容的实例数和每种实例规格对应的最大实例数,异构扩容出多个新实例。
156.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
157.若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,获取标有异构扩容标签的实例;
158.获取标有异构扩容标签的实例,缩容一个标有异构扩容标签的实例;
159.缩容一个实例后,获取分布式数据库中的每一个实例对应的cpu使用率,若分布式数据库中的每一个实例对应的cpu使用率小于最小使用率阈值,则再次缩容一个标有异构扩容标签的实例;若分布式数据库中至少有一个实例对应的cpu使用率不小于最小使用率阈值,则停止缩容。
160.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以
通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。
161.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
162.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

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

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

相关文献