掌桥专利:专业的专利平台
掌桥专利
首页

云数据库的伸缩方法、装置、设备以及存储介质

文献发布时间:2023-06-19 18:32:25


云数据库的伸缩方法、装置、设备以及存储介质

技术领域

本申请涉及云数据库技术领域,尤其涉及一种云数据库的伸缩方法、装置、设备以及存储介质。

背景技术

云数据库是指被优化或部署到一个虚拟计算环境中的数据库。在实际应用中,云数据库可以按需付费或按需扩展,并且还具有高可用性以及存储整合等优势,因此受到中小企业的广泛追捧。通常能够提供云数据库的订购、删除、数据库管理、数据库服务暴露等服务的系统称为云数据库系统。用户可以在云数据库系统的订购界面选择具体的云数据库实例规格。

然而,当用户的业务需求发生变化时,如果需要调整云数据库实例的规格来伸缩云数据库,这时候用户需要手动在云数据库系统中重新选取规格,以进行云数据库规格的变更,给用户带来了不便。

发明内容

本申请提供了一种云数据库的伸缩方法、装置、设备以及存储介质,可以实现对云数据库服务能力的动态伸缩。

本申请的技术方案是这样实现的:

第一方面,本申请实施例提供了一种云数据库的伸缩方法,该方法包括:

确定云数据库的至少一资源类型的当前资源计数值,其中,每一资源类型的当前资源计数值用于反映所述云数据库的所述资源类型的资源使用率连续满足预设条件的次数;

在所述至少一资源类型的当前资源计数值满足预设伸缩条件的情况下,根据所述至少一资源类型的当前资源规格,对所述云数据库的资源池进行伸缩调整,其中,所述至少一资源类型的所述当前资源规格的更新与所述当前资源计数值的更新具有关联关系。

第二方面,本申请实施例提供了一种云数据库的伸缩装置,该伸缩装置包括确定单元和伸缩单元;其中,

所述确定单元,配置为确定云数据库的至少一资源类型的当前资源计数值,其中,每一资源类型的当前资源计数值用于反映所述云数据库的所述资源类型的资源使用率连续满足预设条件的次数;

所述伸缩单元,配置为在所述至少一资源类型的当前资源计数值满足预设伸缩条件的情况下,根据所述至少一资源类型的当前资源规格,对所述云数据库的资源池进行伸缩调整,其中,所述至少一资源类型的所述当前资源规格的更新与所述当前资源计数值的更新具有关联关系。

第三方面,本申请实施例还提供了一种电子设备,该电子设备包括存储器和处理器,其中,

所述存储器,用于存储能够在所述处理器上运行的计算机程序;

所述处理器,用于在运行所述计算机程序时,执行如第一方面所述的云数据库的伸缩方法。

第四方面,本申请实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时实现如第一方面所述的云数据库的伸缩方法。

本申请实施例所提供的一种云数据库的伸缩方法、装置、设备以及存储介质,通过确定云数据库的至少一资源类型的当前资源计数值,其中,每一资源类型的当前资源计数值用于反映云数据库的资源类型的资源使用率连续满足预设条件的次数;在至少一资源类型的当前资源计数值满足预设伸缩条件的情况下,根据至少一资源类型的当前资源规格,对云数据库的资源池进行伸缩调整,其中,至少一资源类型的当前资源规格的更新与当前资源计数值的更新具有关联关系。这样,通过对云数据库的资源计数值进行监测,即确定云数据库的资源池中的资源使用率连续满足预设条件的次数;在资源计数值满足预设伸缩条件的情况下,触发对云数据库的资源池进行伸缩调整,从而不仅可以避免业务抖动导致的误判现象,而且还可以实现云数据库服务能力的智能化伸缩,进而实现云数据库资源的自动“吞吐”,使得在满足用户业务需求的同时,用户不需要为闲置的云资源付费买单。

附图说明

图1为本申请实施例提供的一种云数据库的伸缩方法的流程示意图;

图2为本申请实施例提供的另一种云数据库的伸缩方法的流程示意图;

图3为本申请实施例提供的一种云数据库系统的整体架构示意图;

图4为本申请实施例提供的又一种云数据库的伸缩方法的流程示意图;

图5为本申请实施例提供的一种云数据库的伸缩过程中的云数据库系统状态示意图;

图6为本申请实施例提供的一种云数据库的伸缩完成后的云数据库系统状态示意图;

图7为本申请实施例提供的一种云数据库的伸缩装置的组成结构示意图;

图8为本申请实施例提供的一种电子设备的具体硬件结构示意图;

图9为本申请实施例提供的一种云数据库系统的组成结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅仅用于解释相关申请,而非对该申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关申请相关的部分。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

随着用户业务需求的变化,如果需要调整云数据库实例规格,伸缩云数据库服务,这时候,用户可以在云数据库系统中手动重新选取规格进行云数据库规格变更,比如用户在云数据库系统的变更界面重新选择中央处理器(Central Processing Unit,CPU)、内存、硬盘等的规格;这里,伸缩云数据库服务可以是指对云数据库的资源池容量进行调整,例如,云数据库的资源池容量可以包括CPU个数、内存容量和硬盘容量等,“伸”就是对云数据库的一项或者多项资源的容量进行扩大,比如将CPU从48个扩充到60个;“缩”就是对云数据库的一项或者多项资源的容量进行减小,比如将内存从640G减小到576G。当云数据库系统接收到用户的云数据库规格变更请求后,可以通过向Kubernetes重新提交资源请求,重启用户订购的云数据库实例,来实现云数据库规格变更,实现云数据库服务能力的伸缩,其中,Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用。

也就是说,在相关技术中,通过用户手动调整云数据库规格,来实现云数据库服务能力的伸缩。而且,云数据库系统通过修改资源请求,重启用户订购的云数据库,来实现云数据库规格变更,这个过程通常还需要短暂的停服,无法实现服务伸缩用户无感知。因此,本申请实施例需要解决的主要技术问题是如何实现云数据库服务能力的自动伸缩和如何做到伸缩无感知。

基于此,本申请实施例提供了一种云数据库的伸缩方法,该方法的基本思想是:确定云数据库的至少一资源类型的当前资源计数值,其中,每一资源类型的当前资源计数值用于反映云数据库的资源类型的资源使用率连续满足预设条件的次数;在至少一资源类型的当前资源计数值满足预设伸缩条件的情况下,根据至少一资源类型的当前资源规格,对云数据库的资源池进行伸缩调整,其中,至少一资源类型的当前资源规格的更新与当前资源计数值的更新具有关联关系。这样,通过对云数据库的资源计数值进行监测,即确定云数据库的至少一资源类型的资源使用率连续满足预设条件的次数;在资源计数值满足预设伸缩条件的情况下,触发对云数据库的资源池进行伸缩调整,根据至少一资源类型的当前资源规格对云数据库的资源池自动进行动态伸缩调整,从而不仅可以避免业务抖动导致的误判现象,而且还可以实现云数据库服务能力的智能化伸缩,进而实现云数据库资源的自动“吞吐”,使得在满足用户业务需求的同时,用户不需要为闲置的云资源付费买单。

下面将结合附图对本申请各实施例进行详细说明。

本申请的一实施例中,参见图1,其示出了本申请实施例提供的一种云数据库的伸缩方法的流程示意图。如图1所示,该方法可以包括:

S101、确定云数据库的至少一资源类型的当前资源计数值,其中,每一资源类型的当前资源计数值用于反映云数据库的资源类型的资源使用率连续满足预设条件的次数。

需要说明的是,本申请实施例提供的云数据库的伸缩方法可以应用于云数据库的伸缩装置,或者集成有该装置的设备、系统等。其中,对于设备而言,其可以是诸如计算机、智能手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(Personal DigitalAssistant,PDA)、导航装置、服务器等等,本申请实施例对此不作具体限定。

对于系统而言,其可以是云数据库系统。这里,本申请实施例主要以应用于云数据库系统来对云数据库的伸缩方法进行说明。在云数据库系统中,至少可以包括管理平面和资源平面两个层面,其中,管理平面至少可以包括用于实现本申请实施例提供的云数据库的伸缩方法的单元或者模块等,而资源平面则可以包括多个云数据库实例,通过每个具体的云数据库实例为用户业务系统提供一系列业务功能。

还需要说明的是,云数据库的资源类型包括至少一种,例如CPU、内存和硬盘等其中的一种或多种。本申请实施例首先确定云数据库的至少一资源类型的当前资源计数值,某一资源类型的当前资源计数值用于反映云数据库的该项资源的资源使用率在当前已经连续满足预设条件的次数。

例如:如果以从0开始加一计数的方式确定资源计数值,在这种示例下,如果第一次计数时,资源使用率满足预设条件,则资源计数值为1,如果第二次计数时,资源使用率仍满足预设条件,则资源计数值为2,即资源使用率已经连续两次满足预设条件。另外,这里从0开始加一计数的方式仅为示例性地,本领域技术人员可以结合实际,使用任意计数方式,例如,从5开始加一计数,那么资源计数值和5的差值就代表了资源使用率连续满足预设条件的次数;又例如,从0开始加二计数,那么资源计数值除以2所得的商值就代表了资源使用率连续满足预设条件的次数;又例如,还可以从N(N为任意自然数)开始减一计数的方式进行计数,那么资源计数值与N的差值的绝对值就代表了资源使用率连续满足预设条件的次数。即一种资源类型的当前资源计数值可以反映云数据库的该项资源的资源使用率当前已经连续满足预设条件的次数,其可以通过多种可行的方式进行确定,本申请实施例对此不作具体限定。

确定至少一资源类型的当前资源计数值之后,根据至少一资源类型的当前资源计数值是否满足预设伸缩条件确定是否需要根据至少一资源类型的当前资源规格对云数据库的资源池进行伸缩调整。

还需要说明的是,本申请实施例提供的云数据库的伸缩方法也可以看作是基于服务热升级机制,所谓热升级,就是在服务/程序不停止的前提下,完成对服务/程序的升级。这样,用户的正在执行的任务不会被打断,无需重启服务/程序,且升级过程用户是无感知的。

还需要说明的是,本申请实施例可以通过对云数据库的至少一资源类型资源使用率进行监测,以确定是否需要对云数据库进行服务伸缩管理。具体来说,可以同时或不同时地对云数据库系统中的每一云数据库实例的各项资源使用情况进行监测,对云数据库系统中的每一云数据库实例均按照本申请实施例所描述的方法步骤来进行。对于每一个云数据库实例,其资源类型可以包括下述的一种或多种:CPU、内存以及硬盘。优选地,本申请实施例同时监测云数据库系统中各云数据库实例的CPU使用率、内存使用率以及硬盘使用率。

在一些实施例中,在所述确定云数据库的至少一资源类型的当前资源计数值之前,该方法还可以包括:

监测云数据库的至少一资源类型的资源使用率;

根据至少一资源类型的资源使用率,对云数据库的至少一资源类型的资源计数值和/或资源规格进行更新。

需要说明的是,在确定至少一资源类型的当前资源计数值之前,本申请实施例对云数据库的至少一资源类型的资源使用率进行检测,然后根据监测的结果对至少一资源类型的资源计数值和/或资源规格进行更新。

需要说明的是,在本申请实施例中,资源规格指一个数据库实例的资源池所包括的资源的容量等具体数据,例如,一个云数据库实例的资源池的CPU资源规格为CPU个数,内存资源规格和硬盘资源规格则分别为其内存容量和硬盘容量。

在一些实施例中,资源计数值包括第一计数值和第二计数值,其中,第一计数值反映资源使用率连续大于第一资源阈值的次数,第二计数值反映资源使用率连续小于第二资源阈值的次数,其中,第一资源阈值大于第二资源阈值。

需要说明的是,在本申请实施例中,资源计数值具体可以包括第一计数值和第二计数值,第一计数值反映资源使用率连续大于第一资源阈值的次数,第二计数值反映资源使用率连续小于第二资源阈值的次数,且第一资源阈值大于第二资源阈值。即资源使用率大于第一资源阈值表示资源使用率过高,资源使用率小于第二资源阈值表示资源使用率过低。

也就是说,在本申请实施例中,对资源计数值和/或资源规格进行更新的条件可以包括:资源使用率大于第一资源阈值和资源使用率小于第二资源阈值;且第一资源阈值大于第二资源阈值。这里,第一资源阈值表示资源使用率过高的临界值,当资源使用率大于第一资源阈值时,说明资源使用率过高;第二资源阈值表示资源使用率过低的临界值,当资源使用率小于第二资源阈值时,说明资源使用率过低。

还需要说明的是,这里的过高或者过低是相对于资源使用率的正常范围而言的,可以结合实际情况进行具体设置,本申请实施例对此不作具体限定。

示例性地,资源使用率在30%~70%之间表示资源使用率为正常状态,即第一资源阈值可以为70%,第二资源阈值可以为30%,那么,当获取到的资源使用率大于70%时,例如为80%,就说明资源使用率过高;当获取到的资源使用率小于30%时,例如为20%,就说明资源使用率过低。

还需要说明的是,在本申请实施例中,优选地,对CPU、内存以及硬盘的资源使用率都进行监控,对于这三者而言,其分别对应的第一资源阈值以及第二资源阈值可以是相同的,也可以是不同的,本申请实施例对此不作具体限定。

例如,对于CPU资源,其资源使用率在30%~50%之间表示其资源使用率为正常状态,即CPU资源的第一资源阈值可以为50%,第二资源阈值可以为30%;对于内存资源,其资源使用率在40%~60%之间表示其资源使用率为正常状态,即内存资源的第一资源阈值可以为60%,第二资源阈值可以为40%;对于硬盘资源,其资源使用率在40%~80%之间表示其资源使用率为正常状态,即硬盘资源的第一资源阈值可以为80%,第二资源阈值可以为40%。

在一些实施例中,所述资源使用率满足预设条件的情况下,所述根据至少一资源类型的资源使用率,对云数据库的至少一资源类型的资源计数值和/或资源规格进行更新,可以包括:

若至少一资源类型的资源使用率大于第一资源阈值,则扩大云数据库的至少一资源类型的资源规格,增大至少一资源类型的第一计数值,以及对至少一资源类型的第二计数值执行初始化操作;或者,

若至少一资源类型的资源使用率小于第二资源阈值,则缩小云数据库的至少一资源类型的资源规格,增大至少一资源类型的第二计数值,对至少一资源类型的第一计数值执行初始化操作。

需要说明的是,某一资源类型的资源使用率大于第一资源阈值,说明此资源类型的资源使用率过高,有对云数据库的资源池进行“伸”的必要,因此将其资源规格进行扩大,并增大其对应的第一计数值,并将其对应的第二计数值进行初始化,即将第二计数值恢复为初始值。

某一资源类型的资源使用率小于第二资源阈值,说明此资源类型的资源使用率过低,有对云数据库的资源池进行“缩”的必要,因此将其资源规格进行缩小,并增大其对应的第二计数值,并将其对应的第一计数值进行初始化,即将第一计数值恢复为初始值。

这里,以资源类型的资源使用率每满足一次预设条件,都对该资源类型对应的资源计数值进行加一为例,在一些具体的实施例中,所述根据至少一资源类型的资源使用率,对云数据库的至少一资源类型的资源计数值和/或资源规格进行更新,可以包括:

若至少一资源类型的资源使用率大于第一资源阈值,则扩大云数据库的至少一资源类型的资源规格,对至少一资源类型的第一计数值执行加一操作,以及对至少一资源类型的第二计数值执行清零操作;或者,

若至少一资源类型的资源使用率小于第二资源阈值,则缩小云数据库的至少一资源类型的资源规格,对至少一资源类型的第二计数值执行加一操作,以及对至少一资源类型的第一计数值执行清零操作。

需要说明的是,由于在本申请实施例中,优选地,对云数据库的CPU、内存以及硬盘的资源使用率(即CPU使用率、内存使用率以及硬盘使用率)均进行监测。

因此,第一资源阈值具体可以包括,第一CPU阈值、第一内存阈值以及第一硬盘阈值。其中,第一CPU阈值表示CPU使用率过高的临界值,第一内存阈值表示内存使用率过高的临界值,第一硬盘阈值表示硬盘使用率过高的临界值。

第二资源阈值具体可以包括,第二CPU阈值、第二内存阈值以及第二硬盘阈值。其中,第二CPU阈值表示CPU使用率过低的临界值,第二内存阈值表示内存使用率过低的临界值,第二硬盘阈值表示硬盘使用率过低的临界值。

第一计数值可以包括,第一CPU计数值、第一内存计数值以及第一硬盘计数值。其中,第一CPU计数值反映CPU使用率连续大于第一CPU阈值的次数,第一内存计数值反映内存使用率连续大于第一内存阈值的次数,第一硬盘计数值反映硬盘使用率连续大于第一硬盘阈值的次数。

第二计数值可以包括,第二CPU计数值、第二内存计数值以及第二硬盘计数值。其中,第二CPU计数值反映CPU使用率连续小于第二CPU阈值的次数,第二内存计数值反映内存使用率连续小于第二内存阈值的次数,第二硬盘计数值反映硬盘使用率连续小于第二硬盘阈值的次数。

那么,对于CPU资源、内存资源以及硬盘资源,根据至少一资源类型的资源使用率,对云数据库的至少一资源类型的资源计数值和/或资源规格进行更新,具体的方式为:

在本方法流程开始后,在第一次进行计数之前,首先进行初始化操作,在本示例中,初始化即将第一CPU计数值、第二CPU计数值、第一内存计数值、第二内存计数值、第二硬盘计数值以及第二硬盘计数值的值均设置为零,然后循环执行后续步骤。具体地:

(1)对于CPU资源,若CPU使用率大于第一CPU阈值,就扩大数据库实例的CPU资源规格。例如,对数据库实例当前的CPU资源规格与CPU扩大比率进行乘法运算,所得到的乘积确定为当前CPU资源规格。并对第一CPU计数值执行加一操作,对第二CPU计数值执行清零操作。

若CPU使用率小于第二CPU阈值,就缩小数据库实例的CPU资源规格。例如,对数据库实例当前的CPU资源规格与CPU缩小比率进行乘法运算,所得到的乘积确定为当前CPU资源规格。并对第二CPU计数值执行加一操作,对第一计数值执行清零操作。

(2)对于内存资源,若内存使用率大于第一内存阈值,就扩大数据库实例的内存资源规格。例如,对数据库实例当前的内存资源规格与内存扩大比率进行乘法运算,所得到的乘积确定为当前内存资源规格。并对第一内存计数值执行加一操作,对第二内存计数值执行清零操作。

若内存使用率小于第二内存阈值,就缩小数据库实例的内存资源规格。例如,对数据库实例当前的内存资源规格与内存缩小比率进行乘法运算,所得到的乘积确定为当前内存资源规格。并对第二内存计数值执行加一操作,对第一计数值执行清零操作。

(3)对于硬盘资源,若硬盘使用率大于第一硬盘阈值,就扩大数据库实例的硬盘资源规格。例如,对数据库实例当前的硬盘资源规格与硬盘扩大比率进行乘法运算,所得到的乘积确定为当前硬盘资源规格。并对第一硬盘计数值执行加一操作,对第二硬盘计数值执行清零操作。

若硬盘使用率小于第二硬盘阈值,就缩小数据库实例的硬盘资源规格。例如,对数据库实例当前的硬盘资源规格与硬盘缩小比率进行乘法运算,所得到的乘积确定为当前硬盘资源规格。并对第二硬盘计数值执行加一操作,对第一计数值执行清零操作。

这样,分别完成了对CPU资源规格、内存资源规格和硬盘资源规格以及各资源计数值的更新。还需要注意的是,对CPU资源规格、内存资源规格和硬盘资源规格以及各资源计数值的更新可以是同时进行,也可以以任意可能的方式进行,本申请实施例对此不做具体限定。

还需要说明的是,这里,对各项资源类型的资源规格进行的更新仅是根据资源使用率的监测结果对资源规格的数值进行的更新,实际还没有真实更改云数据库实例各项内存的大小,而是在确定当前资源计数值满足预设伸缩条件之后,才会根据资源规格对云数据库的资源池进行伸缩调整。

另外,在本申请实施例中,优选地,第一CPU阈值=第一内存阈值=第一硬盘阈值;第二CPU阈值=第二内存阈值=第二硬盘阈值;扩大CPU比率=扩大内存比率=扩大硬盘比率;缩小CPU比率=缩小内存比率=缩小硬盘比率;但是,这些值也可以不相等或者部分相等,可以结合实际情况进行具体设置,本申请实施例对此不作具体限定。

还需要说明的是,对于任一项资源,CPU/内存/硬盘扩大比率是预设对CPU/内存/硬盘资源规格进行扩大的倍数,可以为一固定值,也可以根据CPU/内存/硬盘使用率设置对应的值。

以CPU资源为例,当CPU使用率超出第一CPU阈值较少时,CPU扩大比率可以设置较小值例如1.2,当CPU使用率超出第一CPU阈值较多时,CPU扩大比率可以设置为较大值1.5,当CPU使用率超出第一CPU阈值更多时,CPU扩大比率可以设置为更大值2。也就是说,可以在CPU使用率超出第一CPU阈值时,将其划分为多个CPU使用率区间,每个区间对应不同的合适的CPU扩大比率。

对于内存、硬盘等资源也可以按照此方式划分区间对应不同的扩大比率,实施方法类似,具体划分方式可以根据实际情况确定,此处不再赘述。

CPU/内存/硬盘缩小比率是预设的对CPU/内存/硬盘资源规格进行缩小的倍数,可以为一固定值,同样也可以根据CPU/内存/硬盘使用率设置对应的值。

同样以CPU资源为例,当CPU使用率小于第二CPU阈值较少时,CPU缩小比率可以设置较大值例如0.9,当CPU使用率小于第二CPU阈值较多时,CPU缩小比率可以设置为较小值0.6等。也就是说,可以在CPU使用率小于第二CPU阈值时,将其划分为多个CPU使用率区间,每个区间对应不同的合适的CPU缩小比率。

对于内存、硬盘等资源也可以按照此方式划分区间对应不同的缩小比率,实施方法类似,具体划分方式可以根据实际情况确定,此处不再赘述。

在一些实施例中,所述根据至少一资源类型的资源使用率,对云数据库的至少一资源类型的资源计数值和/或资源规格进行更新,还可以包括:

若至少一资源类型的资源使用率处于第二资源阈值与第一资源阈值之间,则对至少一资源类型的第一计数值以及第二计数值均执行初始化操作。

需要说明的是,如果某一资源类型的资源使用率处于第二资源阈值与第一资源阈值之间,说明在当前情况下,该资源类型的资源使用率处于正常状态,也就是不满足预设条件,则将第一计数值和第二计数值都进行初始化,即恢复为初始值,且不对资源规格进行更新,资源规格仍然是云数据库实例在当前状态下的实际规格。

示例性地,以初始化操作为清零为例,该方法还可以包括:

若至少一资源类型的资源使用率处于第二资源阈值与第一资源阈值之间,则对第一计数值以及第二计数值均执行清零操作。

具体如下:

(1)对于CPU资源,如果CPU使用率既不大于第一CPU阈值也不小于第二CPU阈值,而是处于第二CPU阈值与第一CPU阈值之间的范围之内,即CPU使用率为正常状态,就对第一CPU计数值和第二CPU计数值均执行清零操作。

(2)对于内存资源,如果内存使用率既不大于第一内存阈值也不小于第二内存阈值,而是处于第二内存阈值与第一内存阈值之间的范围之内,即内存使用率为正常状态,就对第一内存计数值和第二内存计数值均执行清零操作。

(3)对于硬盘资源,如果硬盘使用率既不大于第一硬盘阈值也不小于第二硬盘阈值,而是处于第二硬盘阈值与第一硬盘阈值之间的范围之内,即硬盘资源使用率为正常状态,就对第一硬盘计数值和第二硬盘计数值均执行清零操作。

也就是说,在这里,如果资源类型的资源使用率为正常状态,这次就不进行计数,且将计数值清零,即本申请实施例只对资源类型的资源使用率满足预设条件的连续次数进行计数。

S102、在至少一资源类型的当前资源计数值满足预设伸缩条件的情况下,根据至少一资源类型的当前资源规格,对云数据库的资源池进行伸缩调整,其中,至少一资源类型的当前资源规格的更新与当前资源计数值的更新具有关联关系。

需要说明的是,在至少一资源类型的当前资源计数值满足预设伸缩条件的情况下,说明需要对云数据库的资源池进行伸缩调整。

其中,至少一资源类型的当前资源规格的更新与当前资源计数值的更新具有关联关系,根据前述陈述,由于资源计数值具体可以包括第一计数值和第二计数值,根据任一项资源类型的资源使用率,可以确定是扩大资源规格还是缩小资源规格,以及第一计数值和第二计数值如何变化,例如,在资源计数值大于第一资源阈值时,就在扩大资源规格的同时增大第一计数值,在资源计数值小于第二资源阈值时,就在缩小资源规格的同时增大第二计数值。也就是说,资源计数值可以分为“伸”的方向的第一计数值和“缩”的方向的第二计数值,在第一计数值变化时,资源规格会同时进行“伸”,在第二计数值变化时,资源规格会同时进行“缩”。可见,至少一资源类型的当前资源规格的更新与当前资源计数值的的更新具有关联关系。

在一些实施例中,该方法还可以包括:

判断至少一资源类型的当前资源计数值中是否存在任一资源类型的当前资源计数值大于预设阈值;

若判断结果为是,则确定至少一资源类型的当前资源计数值满足预设伸缩条件;

若判断结果为否,则确定至少一资源类型的当前资源计数值不满足预设伸缩条件。

需要说明的是,在本申请实施例中,当至少一资源类型中的任一资源类型的当前资源计数值(第一计数值或者第二计数值)大于预设阈值时,就说明至少一资源类型的当前资源计数值满足预设伸缩条件,则可以根据至少一资源类型的当前资源规格,对云数据库的资源池进行伸缩调整;否则,说明至少一资源类型的当前资源计数值不满足预设伸缩条件,则无需对云数据库的资源池进行伸缩调整。

示例性地,假设某一资源类型的资源计数值的初始值为0,预设阈值为5,每满足一次预设条件,就对资源计数值进行加一,那么早当前资源计数值达到5,即资源计数值连续5次满足预设伸缩条件时,资源计数值即满足预设伸缩条件。

示例性地,假设某一资源类型的资源计数值的初始值为5,预设阈值为0,每满足一次预设条件,就对资源计数值进行减一,那么当资源计数值达到0,即资源计数值连续5次满足预设伸缩条件时,资源计数值即满足预设伸缩条件。需要说明的是,在这种情况下,虽然资源计数值不直接等于资源使用率连续满足预设条件的次数,但是资源计数值与初始值之差的绝对值即代表资源使用率连续满足预设条件的次数。因此,在这种情况下,资源计数值也可以清晰地反映资源使用率满足预设条件的次数。

在一些实施例中,所述根据至少一资源类型的资源规格,对云数据库的资源池进行伸缩调整,可以包括:

根据至少一资源类型的当前资源规格,创建目标云数据库的实例;

控制云数据库的实例与目标云数据库的实例进行数据同步;

在云数据库的实例与目标云数据库的实例之间的全量数据全部同步后,利用目标云数据库的实例向外提供服务,并删除所述云数据库的实例。

也就是说,在对云数据库进行服务伸缩管理时,根据至少一项资源类型的当前资源规格来创建目标云数据库的实例;在创建目标云数据库的实例之后,可以根据预设同步方式,例如数据库领域中的异步或者半异步技术,控制云数据库的实例与目标云数据库的实例进行数据同步,即将原数据库中数据全部都同步到目标云数据库的实例中,在进行数据同步期间,仍然由原数据库的实例对外提供各项业务如读写服务;当在目标云数据库和原始云数据库的实例之间的全量数据都同步完成之后,就由目标云数据库的实例向外提供服务,并删除原数据库的实例。至此,目标云数据库的实例完全取代了原云数据库的实例,完成对云数据库的伸缩。

这样,由于在数据同步过程中,原云数据库的实例仍然向外提供服务,在数据同步完成后,则由目标云数据库的实例向外继续提供服务,使得在对云数据库进行服务伸缩的过程中,无需进行重启,且本身的服务也不会停止,从而实现了云数据库伸缩无感知。

另外,还需要说明的是,在根据至少一资源类型的当前资源规格,对云数据库的资源池进行伸缩调整时,可以是只对满足当前资源计数值大于预设阈值的资源类型进行“伸”或“缩”,其它种类的资源类型则不进行伸缩。也就是说,对于满足当前资源计数值大于预设阈值的资源类型,其当前资源规格表示最近一次进行更行之后的资源规格,而对于不满足当前资源计数值大于预设阈值的资源类型,其当前资源规格表示其初始资源规格,即没有进行更新的资源规格。

还需要说明的是,在一些实施例中,至少一资源类型包括下述一项或多项:CPU、内存以及硬盘;所述至少一资源类型的当前资源计数值满足预设伸缩条件通过以下步骤确定:

若云数据库的CPU、内存及硬盘中任意一者的当前第一计数值或当前第二计数值达到预设阈值,则确定至少一资源类型的当前资源计数值满足预设伸缩条件。

在一些实施例中,该方法还可以包括:

若云数据库的CPU、内存及硬盘的当前第一计数值和当前第二计数值均未达到预设阈值,则确定至少一资源类型的当前资源计数值不满足预设伸缩条件。

也就是说,在至少一资源类型包括下CPU、内存以及硬盘中的一个或者多个时,只要CPU、内存及硬盘中任意一者的当前第一计数值或当前第二计数值达到预设阈值,即可以确定至少一资源类型的当前资源计数值满足预设伸缩条件。如果CPU、内存以及硬盘三者的当前第一技术值和当前第二计数值均未达到预设阈值,则说明至少一资源类型的当前资源计数值不满足预设伸缩条件。

更具体地,在这种情况下,该方法还可以包括:

若CPU类型对应的当前第一计数值和当前第二计数值均未达到预设阈值,则设置CPU类型对应的当前资源规格为云数据库的CPU初始资源规格;

若内存类型对应的当前第一计数值和当前第二计数值均未达到预设阈值,则设置内存类型对应的当前资源规格为云数据库的内存初始资源规格;

若硬盘类型对应的当前第一计数值和当前第二计数值均未达到预设阈值,则设置硬盘类型对应的当前资源规格为云数据库的硬盘初始资源规格。

这样,根据CPU类型对应的当前资源规格、内存类型对应的当前资源规格和硬盘类型对应的当前资源规格,对云数据库进行服务伸缩管理。

也就是说,只要有任一资源类型的资源计数值满足预设伸缩条件,就需要对云数据库进行服务伸缩管理。至少一资源类型的当前资源计数值满足预设伸缩条件表示任一项资源类型的资源使用率连续过高或者过低的次数达到了预设的次数;例如,在资源使用率每满足一次预设条件,就对资源计数值进行加一的示例下,预设阈值就代表了资源使用率连续过高或者过低的次数上限,对于不同类型的资源,以及相同类型资源的第一计数值和第二计数值,均可以对应相同或者不同的预设阈值,因此预设阈值可以包括,预设CPU上限阈值、预设CPU下限阈值、预设内存上限阈值、预设内存下限阈值、预设硬盘上限阈值以及预设硬盘下限阈值;其中,预设CPU上限阈值表示第一CPU计数值的门限值,预设CPU下限阈值表示第二CPU计数值的门限值,预设内存上限阈值表示第一内存计数值的门限值,预设内存下限阈值表示第二内存计数值的门限值,预设硬盘上限阈值表示第一硬盘计数值的门限值,预设硬盘下限阈值表示第二硬盘计数值的门限值。示例性地,可以对所有的预设阈值均设置相同的值,例如8、10等值;另外,上述提到的所有预设阈值也可以是部分相同或者完全不同的值,可以结合具体情况进行设置,本申请实施例对此不作具体限定。

因此,资源计数值达到预设阈值的情况可以包括下述条件之一:第一CPU计数值达到预设CPU上限阈值,或者第二CPU计数值达到预设CPU下限阈值,或者第一内存计数值达到预设内存上限阈值,或者第二内存计数值达到预设内存下限阈值,或者第一硬盘计数值达到预设硬盘上限阈值,或者第二硬盘计数值达到预设硬盘下限阈值。

需要说明的是,本申请实施例需要根据资源使用率确定是否需要创建新的数据库实例(即目标云数据库实例),目标云数据库的规格(即目标云数据库所需的CPU、内存以及硬盘等资源量)也需要结合资源使用率来确定,示例性地,具体的确定方式可以为:

如果CPU资源的第一CPU计数值未达到CPU上限阈值且第二CPU计数值未达到CPU下限阈值,则设置CPU资源对应的当前资源规格为云数据库的CPU初始资源规格。

如果内存资源的第一内存计数值未达到内存上限阈值且第二内存计数值未达到内存下限阈值,则设置内存资源对应的当前资源规格为云数据库的内存初始资源规格。

如果硬盘资源的第一硬盘计数值未达到硬盘上限阈值且第二硬盘计数值未达到硬盘下限阈值,则设置硬盘资源对应的当前资源规格为云数据库的硬盘初始资源规格。

也就是说,如果某一资源类型的资源使用率连续过高或者过低的次数达到了其所对应的预设阈值,那么该项资源的在目标云数据库中的资源规格即为前述步骤中进行更新后的当前资源规格;如果某一资源的资源使用率连续过高或者过低的次数并未达到预设阈值,那么虽然在前述步骤中,有可能对该项资源的资源规格进行了更新,但是此时并不需要对该项资源进行伸缩,该项资源在目标云数据库中的资源规格仍然为云数据库中该项资源的原始资源规格。

然后,根据最终确定出的当前资源规格创建目标云数据库的实例。

在一些实施例中,在至少一资源类型的当前资源计数值不满足预设伸缩条件的情况下,该方法还可以包括:

开启定时器并进行计时;

若计数器的计时时长达到预设时长,则则执行所述监测所述云数据库的所述至少一资源类型的资源使用率的步骤。

需要说明的是,在至少一资源类型的当前资源计数值不满足预设伸缩条件时,无需对云数据库的资源池进行伸缩调整。此时,可以开启一个定时器进行计时,然后在定时器的计时时长达到预设时长时,继续监测云数据库的资源使用情况,确定云数据库的至少一资源类型的资源使用率,从而继续判断至少一资源类型的资源使用率是否满足预设条件,以确定是否需要更新资源计数值和资管规格。示例性地,预设时长可以为30分钟,60分钟或者其它更长或者更短的时间等,本申请实施例对此不作具体限定。

这样,在至少一资源类型的当前资源计数值不满足预设伸缩条件时,不会立即再次确定云数据库的资源池的资源使用率,而是在间隔预设时长之后再继续监测云数据库的资源使用情况,确定资源使用率。这样,在有效确定云数据库的资源池的资源使用率的同时,还可以降低系统的能耗,节省资源,有利于云数据库系统的性能更佳。

本实施例提供了一种云数据库的伸缩方法,通过确定云数据库的至少一资源类型的当前资源计数值,其中,每一资源类型的当前资源计数值用于反映云数据库的资源类型的资源使用率连续满足预设条件的次数;在至少一资源类型的当前资源计数值满足预设伸缩条件的情况下,根据至少一资源类型的当前资源规格,对云数据库的资源池进行伸缩调整,其中,至少一资源类型的当前资源规格的更新与当前资源计数值的更新具有关联关系。这样,通过对云数据库的资源使用率进行监测,根据监测结果判断是否对云数据库的资源规格进行动态更新;在确定云数据库的资源规格需要更新且资源计数值,满足预设伸缩条件时,触发对云数据库的资源池进行伸缩调整,从而不仅可以避免业务抖动导致的误判现象,而且还可以实现云数据库服务能力的智能化伸缩,进而实现云数据库资源的自动“吞吐”,使得在满足用户业务需求的同时,用户不需要为闲置的云资源付费买单。另外,在对云数据库进行伸缩时,通过新建云数据库实例与原云数据库实例进行数据同步,在此期间,原云数据库实例继续对外提供服务,待完成所有数据的同步之后,再通过新的云数据库实例对外提供服务,将原云数据库实例进行删除,即新的云数据库实例完全取代原云数据库实例,从而在云数据库的动态伸缩过程中,用户的正常业务不会受到影响,还实现了伸缩无感知。

本申请的另一实施例中,参见图2,其示出了本申请实施例提供的另一种云数据库的伸缩方法的流程示意图。如图2所示,该方法可以包括:

S201、启动云数据库系统的服务伸缩管理功能。

需要说明的是,本申请实施例可以基于Kubernetes进行云数据库系统开发,以此为例,如图3所示,其示出了本申请实施例提供的一种云数据库系统的整体架构示意图。

在图3中,云数据库系统(也称为云数据库共有云平台)的管理平面Master(或称为Kubernetes Master)部署有云数据库管理模块和服务伸缩管理模块,根据管理平面的调度在资源平面节点(Node,或称为Kubernetes Node)进行云数据库订购、删除、数据库管理、伸缩等。其中,云数据库管理模块主要用于向用户提供云数据库订购、删除、数据库管理服务,数据库管理服务包括数据库(Database,DB)管理、账号管理、参数设置、日志管理、备份恢复等常见功能。服务伸缩管理模块负责实时监测用户云数据库实例的负载情况,监测项可以包括CPU负载、内存负载、硬盘负载,当某一监测项长期负载过高或过低时则进行用户云数据库动态伸缩。

云数据库系统通过网络向外暴露云数据库管理模块,用户通过互联网访问云数据库管理模块进行云数据库订购、删除、数据库管理。接收到用户订购云数据库的请求后,云数据库系统将会在资源平面创建一个云数据库实例,通过网络暴露服务提供读写服务等。客户业务系统通过访问对应云数据库实例暴露的数据库服务来进行数据库读写等操作。

本申请实施例提供的云数据库的服务伸缩方法可以基于图3所示的云数据库系统来实现。如图3所示,服务伸缩管理模块可以同时对一个或者多个节点如节点1、节点2、节点3以及节点4等(Node1、Node2、Node3以及Node4等)的云数据库实例的资源使用率进行监测,即本申请所述的云数据库的服务伸缩主要是指对云数据库系统中的云数据库实例(如DB1、DB2、DB3或者DB4等)的各项资源进行“伸”或“缩”。

在本申请实施例中,以图3中的云数据库实例DB1为例对本申请实施例提供的云数据库的服务伸缩方法进行详细描述。

另外,本申请实施例还可以结合实际需求确定是否需要对云数据库实例自动进行服务伸缩管理,即管理人员可以自定义启动/不启动云数据库系统的服务伸缩管理功能,只有启动了该功能,才会自动对云数据库实例进行服务伸缩管理。因此,在本申请实施例中,首先启动云数据库系统的服务伸缩管理功能。

S202、对资源计数值进行初始化。

需要说明的是,本申请实施例可以对云数据库实例的一项或多项资源类型的负载情况进行监测以实现对云数据库实例动态伸缩管理。在本申请实施例中,优选地,对云数据库实例的资源类型的负载情况进行监测包括对云数据库实例的CPU、内存和硬盘的使用率进行监控。资源计数值是对资源使用率满足预设条件的次数的计数值,即这里的资源计数值为变量。

这里,对资源计数值进行初始化(也可以称为变量初始化)即:CountCPU1=0、CountCPU2=0、CountMem1=0、CountMem2=0、CountDisk1=0、CountDisk2=0。

其中,CountCPU1表示DB1的CPU使用率过高(即CPU使用率大于第一CPU阈值)的连续次数,即前述实施例中的第一CPU计数值;CountCPU2表示DB1的CPU使用率过低(即CPU使用率小于第二CPU阈值)的连续次数,即前述实施例中的第二CPU计数值;CountMem1表示DB1的内存使用率过高(即内存使用率大于第一内存阈值)的连续次数,即前述实施例中的第一内存计数值;CountMem2表示DB1的内存使用率过低(即内存使用率小于第二内存阈值)的连续次数,即前述实施例中的第二内存计数值;CountDisk1表示DB1的硬盘使用率过高(即硬盘使用率大于第一硬盘阈值)的连续次数,即前述实施例中的第一硬盘计数值;CountDisk2表示DB1的硬盘使用率过低(即硬盘使用率小于第二硬盘阈值)的连续次数,即前述实施例中的第二硬盘计数值。

在本申请实施例中,优选地,第一CPU阈值=第一内存阈值=第一硬盘阈值=T1,即T1即为前述实施例中的第一资源阈值;但是需要注意,这几个值也可以不相等,即将第一CPU阈值、第一内存阈值以及第一硬盘阈值设置相同的值或者不同的值是可以结合云数据库的实际情况进行设定的,本申请实施例对此不作具体限定。

优选地,第二CPU阈值=第二内存阈值=第二硬盘阈值=T2,即T2即为前述实施例中的第二资源阈值,其中,T1>T2。但是需要注意,这几个值也可以不相等,即将第二CPU阈值、第二内存阈值以及第二硬盘阈值设置相同的值或者不同的值是可以结合云数据库的实际情况进行设定的,本申请实施例对此不作具体限定。

S203、监测DB1的CPU使用率、内存使用率以及硬盘使用率。

S204、判断CPU使用率是否大于T1。

如果CPU使用率大于T1,即判断结果为是,那么执行步骤S205;否则,执行步骤S206。

S205、NewCPU=DB1.CPU×C1;CountCPU1++;CountCPU2=0。

其中,NewCPU即更新后的CPU资源规格,DB1.CPU为DB1的CPU初始资源规格,也就是现有的DB1的CPU资源规格。其中,CPU资源规格可以指DB1的CPU个数。

C1为预设的阈值,即前述实施例中的扩大CPU比率,是一个大于1的数值,代表对云数据库的CPU资源规格进行“伸”的倍率,其值可以为1.5、1.8等预设值,或者也可以根据CPU使用率来确定,例如当CPU使用率较大时,C1值相应取较大值。

还需要说明的是,在本申请实施例中,优选地,扩大CPU比率=扩大内存比率=扩大硬盘比率=C1。但是需要注意,这几个值也可以不相等,即将扩大CPU比率、扩大内存比率以及扩大硬盘比率设置相同的值或者不同的值是可以结合云数据库的实际情况进行设定的,本申请实施例对此不作具体限定。

当CPU使用率大于T1时,设置NewCPU=DB1.CPU×C1,且CountCPU1计数加1,CountCPU2改为初始值0,然后执行步骤S209。

S206、判断CPU使用率是否小于T2。

如果CPU使用率小于T2,即判断结果为是,那么执行步骤S207;否则,执行步骤S208。

S207、NewCPU=DB1.CPU×C2;CountCPU2++;CountCPU1=0。

C2也为预设的阈值,即前述实施例中的缩小CPU比率,是一个小于1的数值,代表对DB1的CPU资源规格进行“缩”的倍率,其值可以为0.8、0.9等预设值,或者也可以根据CPU使用率来确定,例如当CPU使用率较小时,C2值相应取较小值。

还需要说明的是,在本申请实施例中,优选地,缩小CPU比率=缩小内存比率=缩小硬盘比率=C2。但是需要注意,这几个值也可以不相等,即将缩小CPU比率、缩小内存比率以及缩小硬盘比率设置相同的值或者不同的值是可以结合云数据库的实际情况进行设定的,本申请实施例对此不作具体限定。

当CPU使用率小于T2时,设置NewCPU=DB1.CPU×C2,且CountCPU2计数加1,CountCPU1改为初始值0,然后执行步骤S209。

S208、CountCPU1=0;CountCPU2=0。

当CPU使用率既不大于T1也不小于T2时,说明当前CPU使用率处于正常状态,无需对云数据库实例的CPU资源规格进行调整,此时,将CountCPU1和CountCPU2均清零。

S209、判断内存使用率是否大于T1。

如果内存使用率大于T1,即判断结果为是,那么执行步骤S2010;否则,执行步骤S2011。

S2010、NewMem=DB1.Mem×C1;CountMem1++;CountMem2=0。

其中,NewMem即更新后的内存资源规格,DB1.Mem为DB1的内存初始资源规格,也就是现有的DB1的内存资源规格。其中,内存资源规格可以为DB1的内存总容量。

当内存使用率大于T1时,设置NewMem=DB1.Mem×C1,且CountMem1计数加1,CountMem2改为初始值0,然后执行步骤S2014。

S2011、判断内存使用率是否小于T2。

如果内存使用率小于T2,即判断结果为是,那么执行步骤S2012;否则,执行步骤S2013。

S2012、NewMem=DB1.Mem×C2;CountMem2++;CountMem1=0。

当内存使用率小于T2时,设置NewMem=DB1.Mem×C2,且CountMem2计数加1,CountMem1改为初始值0,然后执行步骤S2014。

S2013、CountMem1=0;CountMem2=0。

当内存使用率既不大于T1也不小于T2时,说明当前内存使用率处于正常状态,无需对云数据库实例的内存资源规格进行调整,此时,将CountMem1和CountMem2均清零。

S2014、判断硬盘使用率是否大于T1。

如果硬盘使用率大于T1,即判断结果为是,那么执行步骤S2015;否则,执行步骤S2016。

S2015、NewDisk=DB1.Disk×C1;CountDisk1++;CountDisk2=0。

其中,NewDisk即更新后的硬盘资源规格,DB1.Disk为DB1的硬盘初始资源规格,也就是现有的DB1的硬盘资源规格。其中,硬盘资源规格可以为DB1的硬盘总容量。

当硬盘使用率大于T1时,设置NewDisk=DB1.Disk×C1,且CountDisk1计数加1,CountDisk2改为初始值0,然后执行步骤S2019。

S2016、判断硬盘使用率是否小于T2。

如果硬盘使用率小于T2,即判断结果为是,那么执行步骤S2017;否则,执行步骤S2018。

S2017、NewDisk=DB1.Disk×C2;CountDisk2++;CountDisk1=0。

当硬盘使用率小于T2时,设置NewDisk=DB1.Disk×C2,且CountDisk2计数加1,CountDisk1改为初始值0,然后执行步骤S2019。

S2018、CountDisk1=0;CountDisk2=0。

当硬盘使用率既不大于T1也不小于T2时,说明当前硬盘使用率处于正常状态,无需对云数据库实例的硬盘资源规格进行调整,此时,将CountDisk1和CountDisk2均清零。

S2019、判断是否满足伸缩条件。

判断是否满足伸缩条件(即前述实施例中的预设伸缩条件)即判断是否有达到预设阈值的计数值,即伸缩条件为:满足CountCPU1=N,或者CountCPU2=N,或者CountMem1=N,或者CountMem2=N,或者CountDisk1=N,或者CountDisk2=N,N即为前述实施例中的预设阈值。也就是说,只要任一项资源使用率连续过高或者过低的次数达到预设阈值,就满足伸缩条件。

示例性地,N值可以设置为8、10等数值,对N的取值不作具体限定。本申请实施例通过将N值设置为大于1的数值可以只在云数据库的资源负载长期过高或者过低时才会触发对云数据库进行服务伸缩管理,能够有效避免业务抖动引发的误判。

还需要说明的是,在本申请实施例中,优选地,对于各项资源的资源使用率连续过高过着过低的次数都设置相同的预设阈值N,但是也可以结合实际设置不同或者部分相同的预设阈值。

例如,伸缩条件也可以为:满足CountCPU1=N1,或者CountCPU2=N2,或者CountMem1=N3,或者CountMem2=N4,或者CountDisk1=N5,或者CountDisk2=N6,本申请实施例对此不作具体限定。

如果满足伸缩条件,即判断结果为是,那么执行步骤S2020;否则执行步骤S2021。

S2020、对云数据库进行服务伸缩管理。

需要说明的是,当满足伸缩条件时,就要对云数据库进行服务伸缩管理。具体地,参见图4,其示出了本申请实施例提供的又一种云数据库的伸缩方法的流程示意图。如图4所示,该方法可以包括:

S401、创建NewDB1。

在满足伸缩条件后,开始一次对云数据库实例进行服务伸缩管理的过程。首先创建新的云数据库实例NewDB1,NewDB1即前述实施例中的目标云数据库。具体地,对于资源计数值达到对应的预设阈值的资源类型,在NewDB1中,其资源规格为NewR(即NewCPU、NewMem或NewDisk);而对于计数值并未达到对应的预设阈值或者为零的资源,在NewDB1中,其资源规格仍为DB1.R(即DB1.CPU、DB1.Mem或DB1.Disk)。

即:如果CountCPU1≠N且CountCPU2≠N,则设置NewCPU为原云数据库实例资源规格值DB1.CPU,如果CountMem1≠N且CountMem2≠N,则设置NewMem为原云数据库实例资源规格值DB1.Mem,如果CountDisk1≠N且CountDisk2≠N,则设置NewDisk为原云数据库实例资源规格值DB1.Disk。然后按照规格NewCPU、NewMem、NewDisk创建新的云数据库实例NewDB1。

S402、NewDB1向原DB1进行数据同步。

在这里,NewDB1采用数据库领域的异步或者半同步技术向原DB1进行数据同步,直至同步完全量数据,即将DB1的所有数据都同步至NewDB1。在数据同步期间,DB1继续对外提供各项服务如读写服务,具体如图5所示。

S403、NewDB1替代原DB1向外提供服务。

当数据同步完成之后,调整新的云数据库实例NewDB1对外提供各项服务,并重命名NewDB1为DB1。

S404、清理原DB1。

将原DB1进行删除,至此,NewDB1已经完全替代原DB1,完成了对DB1的一次服务伸缩管理,具体如图6所示。

需要说明的是,虽然在图6中,新的云数据库实例DB1被创建在了节点2,但是在实际应用中,DB1可以被创建在任意可以满足创建数据库实例要求的节点,本申请实施例对此不做具体限定。

还需要说明的是,在完成云数据库服务伸缩后,返回执行步骤S202,继续执行本方法步骤。

S2021、睡眠预设时长。

在本申请实施例中,并非是时刻都对云数据库实例的负载情况进行监测,而是设置有一定的周期,即如果暂时没有满足伸缩条件,服务伸缩管理模块会睡眠预设时长,在达到预设时长之后,再返回执行步骤S203,继续执行本方法步骤。另外,在对云数据库进行伸缩之后,也可以先睡眠预设时长再执行步骤S203以及之后的步骤;或者将资源计数值进行初始化之后,再睡眠预设时长然后执行步骤S203以及之后的步骤。

在云数据库系统中,最重要也是最难解决的就是服务按需伸缩问题,业界主流做法都需要用户在云数据库系统中手动重新选取规格,通过手动调整云数据库实例的规格,来实现云数据库服务能力的伸缩。但是这种方式不仅无法做到自动化,还需要短暂的停服,无法做到服务伸缩无感知,对用户来说非常不友好。本申请实施例提供的云数据库的服务伸缩的方法应用的云数据库系统,相较于传统云数据库系统设计新增了服务伸缩模块,用于实现云数据库服务能力的动态伸缩。通过监测用户云数据库实例的负载情况(CPU、内存、硬盘等使用率),来判断是否需要动态调整用户云数据库实例。当需要调整云数据库实例时,首先新建云数据库实例跟原云数据库实例进行数据同步,在此期间原云数据库实例继续对外提供读写服务,待数据同步完成后,调整新的云数据库实例对外提供读写服务,新的云数据库实例替代原云数据库实例,删除原云数据库实例。

简言之,本申请实施例描述的服务伸缩管理模块的工作过程,具体处理步骤如下:

步骤1:启动云数据库系统的服务伸缩管理功能。

步骤2:进行变量初始化,CountCPU1=0、CountCPU2=0、CountMem1=0、CountMem2=0、CountDisk1=0、CountDisk2=0。

步骤3:监测云数据库DB1主节点CPU、内存(Memory,Mem)、硬盘(Disk)使用率。

步骤4:如果CPU使用率>T1,执行步骤5,否则执行步骤6,T1为阈值。

步骤5:设置NewCPU=DB1.CPU*C1,CountCPU1计数加1,CountCPU2改为初始值0,其中C1为大于1的阈值,然后执行步骤9。

步骤6:如果CPU使用率

步骤7:设置NewCPU=DB1.CPU*C2,CountCPU2计数加1,CountCPU1改为初始值0,其中C2为小于1的阈值,然后执行步骤9。

步骤8:CountCPU1改为初始值0,CountCPU2改为初始值0。

步骤9:如果Mem使用率>T1,执行步骤10,否则执行步骤11。

步骤10:设置NewMem=DB1.Mem*C1,CountMem1计数加1,CountMem2改为初始值0,然后执行步骤14。

步骤11:如果Mem使用率

步骤12:设置NewMem=DB1.Mem*C2,CountMem2计数加1,CountMem1改为初始值0,然后执行步骤14。

步骤13:CountMem1改为初始值0,CountMem2改为初始值0。

步骤14:如果Disk使用率>T1,执行步骤15,否则执行步骤16。

步骤15:设置NewDisk=DB1.Disk*C1,CountDisk1计数加1,CountDisk2改为初始值0,然后执行步骤19。

步骤16:如果Disk使用率

步骤17:设置NewDisk=DB1.Disk*C2,CountDisk2计数加1,CountDisk1改为初始值0,然后执行步骤19。

步骤18:CountDisk1改为初始值0,CountDisk2改为初始值0。

步骤19:判断是否满足伸缩条件,如果CountCPU1==N||CountCPU2==N||CountMem1==N||CountMem2==N||CountDisk1==N||CountDisk2==N为true,则满足伸缩条件,执行步骤20,否则执行步骤22,其中N为阈值。

步骤20:进行云数据库服务伸缩。然后返回执行步骤2。

步骤21:睡眠D分钟,即每个负载监测周期为D分钟,D为阈值,然后执行步骤3。

进一步地,服务伸缩管理模块中的云数据库服务伸缩过程,具体处理步骤如下:

步骤1:开始一次云数据库服务伸缩过程。

步骤2:如果CountCPU1!=N&&CountCPU2!=N,设置NewCPU为原实例资源值DB1.CPU;如果CountMem1!=N&&CountMem2!=N,设置NewMem为原实例资源值DB1.Mem;如果CountDisk1!=N&&CountDisk2!=N,设置NewDisk为原云数据库实例资源值DB1.Disk。按照规格NewCPU、NewMem、NewDisk创建新的云数据库实例NewDB1。

步骤3:NewDB1采用数据库领域的异步或者半同步技术向原DB1进行数据同步,直至同步完全量数据。

步骤4:NewDB1替代DB1向外提供服务。

步骤5:清理原云数据库实例DB1,并重命名NewDB1为DB1。

步骤6:调整结束。

本实施例提供了一种云数据库的服务伸缩方法,根据本实施例对前述实施例的具体实现进行详细阐述,从中可以看出,基于服务热升级机制对云数据库服务能力进行动态伸缩,这样在不需要用户干预的情况下,自动根据负载情况进行云数据库规格变更,实现能力动态伸缩,且做到伸缩过程用户无感知。其主要优势体现在两个方面:第一,通过该方法,将用户解放了出来,用户不再需要关心云数据规格伸缩的问题,只需要关注自己的业务实现;第二,该方法使得用户的使用云数据库的使用成本得到有效的降低,无需用户感知资源,能够随着用户业务负载的增加和减少,做到服务智能化伸缩,实现资源的自动“吞吐”,用户不再需要为闲置的云资源付费买单。

本申请的再一实施例中,参见图7,其示出了本申请实施例提供的一种云数据库的伸缩装置70的组成结构示意图。如图7所示,该伸缩装置70可以包括确定单元701和伸缩单元702;其中,

确定单元701,配置为确定云数据库的至少一资源类型的当前资源计数值,其中,每一资源类型的当前资源计数值用于反映所述云数据库的所述资源类型的资源使用率连续满足预设条件的次数;

伸缩单元702,配置为在所述至少一资源类型的当前资源计数值满足预设伸缩条件的情况下,根据所述至少一资源类型的当前资源规格,对所述云数据库的资源池进行伸缩调整,其中,所述至少一资源类型的所述当前资源规格的更新与所述当前资源计数值的更新具有关联关系。

在一些实施例中,确定单元701,还配置为监测所述云数据库的所述至少一资源类型的资源使用率;以及根据所述至少一资源类型的资源使用率,对所述云数据库的所述至少一资源类型的资源计数值和/或资源规格进行更新。

在一些实施例中,所述资源计数值包括第一计数值和第二计数值,其中,所述第一计数值反映所述资源使用率连续大于第一资源阈值的次数,所述第二计数值反映所述资源使用率连续小于第二资源阈值的次数,其中,所述第一资源阈值大于所述第二资源阈值。

在一些实施例中,确定单元701,具体配置为若所述至少一资源类型的资源使用率大于所述第一资源阈值,则扩大所述云数据库的所述至少一资源类型的资源规格,增大所述至少一资源类型的第一计数值,以及对所述至少一资源类型的第二计数值执行初始化操作;或者,若所述至少一资源类型的资源使用率小于所述第二资源阈值,则缩小所述云数据库的所述至少一资源类型的资源规格,增大所述至少一资源类型的第二计数值,对所述至少一资源类型的第一计数值执行初始化操作。

在一些实施例中,确定单元701,还配置为若所述至少一资源类型的资源使用率处于所述第二资源阈值与所述第一资源阈值之间,则对所述至少一资源类型的所述第一计数值以及所述第二计数值均执行初始化操作。

在一些实施例中,确定单元701,还配置为判断至少一资源类型的当前资源计数值中是否存在任一资源类型的当前资源计数值大于预设阈值;以及若判断结果为是,则确定至少一资源类型的当前资源计数值满足预设伸缩条件;以及若判断结果为否,则确定至少一资源类型的当前资源计数值不满足预设伸缩条件。

在一些实施例中,伸缩单元702,具体配置为根据所述至少一资源类型的当前资源规格,创建目标云数据库的实例;以及控制所述云数据库的实例与所述目标云数据库的实例进行数据同步;以及在所述云数据库的实例与所述目标云数据库的实例之间的全量数据全部同步后,利用所述目标云数据库的实例向外提供服务,并删除所述云数据库的实例。

在一些实施例中,所述至少一资源类型包括下述一项或多项:中央处理器CPU、内存以及硬盘;确定单元701,还配置为若所述云数据库的CPU、内存及硬盘中任意一者的当前第一计数值或当前第二计数值达到预设阈值,则确定所述至少一资源类型的当前资源计数值满足预设伸缩条件。

在一些实施例中,确定单元701,还配置为若CPU类型对应的当前第一计数值和当前第二计数值均不满足预设伸缩条件,则设置CPU类型对应的当前资源规格为所述云数据库的CPU初始资源规格;以及若内存类型对应的当前第一计数值和当前第二计数值均不满足预设伸缩条件,则设置内存类型对应的当前资源规格为所述云数据库的内存初始资源规格;以及若硬盘类型对应的当前第一计数值和当前第二计数值均不满足预设伸缩条件,则设置硬盘类型对应的当前资源规格为所述云数据库的硬盘初始资源规格。

在一些实施例中,确定单元701,还配置为若所述云数据库的CPU、内存及硬盘的当前第一计数值和当前第二计数值均未达到所述预设阈值,则确定所述至少一资源类型的当前资源计数值不满足所述预设伸缩条件。

在一些实施例中,如图7所示,该伸缩装置70还可以包括计时单元703,配置为开启定时器并进行计时;以及若所述定时器的计时时长达到预设时长,则执行所述监测所述云数据库的所述至少一资源类型的资源使用率的步骤。

可以理解地,在本实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

因此,本实施例提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时实现前述实施例中任一项所述的云数据库的服务伸缩的方法。

基于上述的一种云数据库的伸缩装置70的组成以及计算机存储介质,参见图8,其示出了本申请实施例提供的一种电子设备80的具体硬件结构示意图。如图8所示,该电子设备80可以包括:通信接口801、存储器802和处理器803;各个组件通过总线系统804耦合在一起。可理解,总线系统804用于实现这些组件之间的连接通信。总线系统804除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图8中将各种总线都标为总线系统804。其中,通信接口801,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;

存储器802,用于存储能够在处理器803上运行的计算机程序;

处理器803,用于在运行所述计算机程序时,执行:

确定云数据库的至少一资源类型的当前资源计数值,其中,每一资源类型的当前资源计数值用于反映云数据库的资源类型的资源使用率连续满足预设条件的次数;

在至少一资源类型的当前资源计数值满足预设伸缩条件的情况下,根据至少一资源类型的当前资源规格,对云数据库的资源池进行伸缩调整,其中,至少一资源类型的当前资源规格的更新与当前资源计数值的更新具有关联关系。

可以理解,本申请实施例中的存储器802可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步链动态随机存取存储器(Synchronous link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本文描述的系统和方法的存储器802旨在包括但不限于这些和任意其它适合类型的存储器。

而处理器803可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器803中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器803可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器802,处理器803读取存储器802中的信息,结合其硬件完成上述方法的步骤。

可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。

对于软件实现,可通过执行本文所述功能的模块(例如过程、函数等)来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。

可选地,作为另一个实施例,处理器803还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法的步骤。

基于上述云数据库的伸缩装置70的组成,参见图9,其示出了本申请实施例提供的一种云数据库系统90的组成结构示意图。如图9所示,该云数据库系统90至少包括前述实施例中任一项所述的云数据库的伸缩装置70。

对于云数据库系统90而言,由于通过对云数据库的资源使用率进行监测,根据监测结果判断是否对云数据库的资源规格进行动态更新;在确定云数据库的资源规格需要更新且资源计数值达到预设阈值时,触发对云数据库进行服务伸缩管理,从而不仅可以避免业务抖动导致的误判现象,而且还可以实现云数据库服务能力的智能化伸缩,进而实现云数据库资源的自动“吞吐”,使得在满足用户业务需求的同时,用户不需要为闲置的云资源付费买单。

以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。

需要说明的是,在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。

本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。

本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

相关技术
  • 云数据库的测试方法及其装置、设备和存储介质
  • 存储设备在线检测方法、装置、设备及可读存储介质
  • 一种后端存储设备的管理方法、装置、设备以及存储介质
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 一种数据存储方法及装置、一种计算设备及存储介质
  • 云数据库资源的处理方法及装置、电子设备、存储介质
  • 个性化云数据库的建立方法、装置、设备及存储介质
技术分类

06120115602674