一种自动调整内存数据库空间大小的方法、装置及系统与流程

文档序号:16430333发布日期:2018-12-28 20:06阅读:192来源:国知局
一种自动调整内存数据库空间大小的方法、装置及系统与流程

本发明涉及多媒体网络技术领域,具体涉及一种自动调整内存数据库空间大小的方法以及一种自动调整内存数据库空间大小的装置。

背景技术

随着网络技术的快速发展,云技术的应用也越来越广;在现有的云平台中,常常需要利用到内存数据库对数据进行存储;各个与云平台相连接的应用程序在运行业务时也需要对内存数据库进行访问。

在现有的技术中,当大量应用程序同时访问内存数据库时会产生峰值业务流量,为了避免因峰值业务流量超出了内存数据库的处理能力,而导致服务的阻塞甚至是瘫痪的情况发生,云平台管理方均会将内存数据库的参数配置得比峰值业务流量要高一些;但是由于每天的峰值业务流量所产生的时间较短,故其为了满足短时间的峰值业务流量要求而使得内存数据库在每天绝大部分的时间均处于预留缓冲冗余过大的状态,其造成了极大的资源的浪费。



技术实现要素:

为克服上述缺陷,本发明的目的即在于提供一种根据业务访问流量进行自动化、动态自动调整内存数据库空间大小的方法及其装置。

本发明的目的是通过以下技术方案来实现的:

本发明是一种自动调整内存数据库空间大小的方法,包括:

运行内存数据库同时监测所述内存数据库的业务访问量,并按时间顺序记录所述业务访问量;

根据两份以上在最近时间记录的业务访问量,对下一时刻的业务访问量进行预测;

判断所预测到的业务访问量是否在预定的范围之内,如不在预定的范围之内,则根据所预测到的业务访问量对内存数据库的参数进行调整,并按调整后的参数对所述内存数据库进行设置。

本发明是一种自动调整内存数据库空间大小的装置,包括:

云平台监控模块,所述云平台监控模块用于在内存数据库运行时监测所述内存数据库的业务访问量,并按时间顺序记录所述业务访问量;

容量评估模块,所述容量评估模块与所述云平台监控模块相连接,用于根据两份以上在最近时间记录的业务访问量,对下一时刻的业务访问量进行预测;

云平台管理模块,所述云平台管理模块与所述容量评估模块相连接,用于判断所预测到的业务访问量是否在预定的范围之内,如不在预定的范围之内,则根据所预测到的业务访问量对内存数据库的参数进行调整,并按调整后的参数对所述内存数据库进行设置。

本发明是一种自动调整内存数据库空间大小的系统,包括:云主机、应用程序以及如上所述的装置,所述云主机中配置有内存数据库、管理端口和数据端口;所述管理端口与所述装置相连接,所述数据端口与所述应用程序相连接。

本发明根据业务访问流量对内存数据库的参数进行自动调整,使得内存数据库能适应于当前的最大业务流量值,有效地防止因内存数据库的处理能力低于最大业务流量值而导致流量击穿的现象产生的同时,也有效地防止了因内存数据库的预留缓冲冗余过大而造成的资源浪费的现象发生。

附图说明

为了易于说明,本发明由下述的较佳实施例及附图作详细描述。

图1为本发明自动调整内存数据库空间大小的方法一个实施例的工作流程示意图;

图2为本发明自动调整内存数据库空间大小的方法另一个实施例的工作流程示意图;

图3为本发明中生成新的云主机并运行新的内存数据库的工作流程示意图;

图4为本发明自动调整内存数据库空间大小的系统在一个状态下的逻辑结构示意图;

图5为本发明自动调整内存数据库空间大小的系统在另一个状态下的的逻辑结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”、“顺时针”、“逆时针”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接。可以是机械连接,也可以是电连接。可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

下面以一个实施例对本发明的一种自动调整内存数据库空间大小的方法进行具体描述,请参阅图1,其包括:

s101.监测内存数据库的业务访问量

运行当前的内存数据库,同时监测所述内存数据库的业务访问量,并按时间顺序记录所述业务访问量;其中,在初次启动时,当前的内存数据库可以通过预设的参数进行设定;内存数据库的预设阈值参数包括:最大并发连接数上限pmax_con、最大并发数据量上限等。分别对应的实际指标测量值ccon和cdat需要分别小于上述最大上限值。在运行内存数据库前,先对最大的并发连接数pmax_con和最大的并发数据量pmax_dat进行设定;在内存数据库运行时,依次记录下当前时刻下的并发连接数ccon和并发数据量cdat;如:预设的内存数据库最大上限pmax_con为2000,pmax_dat为500m,而在第t1时,测量值ccon为1000,cdat为200m;在第t2时,ccon为1300,cdat为280m;第t3时,ccon为1500,cdat为350m;在第t4时,ccon为1700,cdat为400m等。

s102.预测下一时刻的业务访问量

根据两份以上在最近时间记录的业务访问量,对下一时刻的业务访问量进行预测;如果当前时刻为第t4,那么其将根据最近的几秒中的并发连接数和并发数据量对下一秒的并发连接数和并发数据量进行预测;其可根据之前时间所记录的历史业务访问量,获取到业务访问量的发展趋势值。

s103.判断业务访问是否在预定的范围之内

判断所预测到的业务访问量是否在预定的范围之内,该预定的范围为报警范围,其参数范围会小于当前的内存数据库的最大处理能力,即最大并发连接数和最大并发数据量;以防业务访问量的超出内存数据库的最大处理能力;如:当前的内存数据库最大的pmax_con为2000,pmax_dat为500m时,则其所设定预定的并发连接数上限阈值tmax_con为1800,并发数据量上限阈值tmax_dat为450m,若当前的预测到的业务访问量大于该上限阈值,即定义为不在预定的范围之内。

s104.调整内存数据库的参数

如不在预定的范围之内,则根据所预测到的业务访问量对内存数据库的参数进行调整,并按调整后的参数对所述内存数据库进行设置;如果预测到第t5的econ为1900,edat为460m;故其已经超出了预定的范围之内,故需要将内存数据库的参数进行调整用以适应所预测到的业务访问量,即将内存数据库的参数进行增大,以避免下一时刻的并发连接数和/或并发数据量超出其能处理的范围,而所其增加的量将根据预测到的业务访问量来进行设定,其具体的增加方式可包括:在预测到的业务访问量上乘以预定的系数或加上预定的数值;如在第t5的econ和edat的基础上分别增加500和100m,得到新的内存数据库的最大的pmax_con为2400,pmax_dat为560m。由于新的内存数据库的参数是根据所预测到的业务访问量来设定的,其有效地避免因盲目设置而导致新的内存数据库的参数过大,而造成资源浪费的情况发生;而在新的内存数据库的参数被设定好后,其将按新的内存数据库的参数运行当前的内存数据库,并继续监测所述内存数据库的业务访问量。

为了能更好地理解本发明,下面以另一个实施例对本发明的一种自动调整内存数据库空间大小的方法进行具体描述,请参阅图2,其包括:

s201.预设定云主机和内存数据库的参数

在初次启动时,先在公有云或私有云上对云主机进行部署,初始部署时,根据业务平稳期的内存数据库业务流量预估值进行云主机的规格配置。

将初始部署的云主机的参数包括:初始cpu核数icpu、初始内存大小imem、数据平面的虚拟网卡初始最大可用带宽ibw等。

在云主机启动后,在其中部署内存数据库并对其进行启动;而内存数据库的常用配置参数包括最大并发连接数、最大并发数据访问量等。将内存数据库的初始参数分别记为:初始最大连接数设置值pmax_con、初始最大数据量设置值pmax_dat等。

其具体为:先对最大的并发连接数和最大的并发数据量进行设定,再根据该参数生成相应的内存数据库;如:将当前的内存数据库最大的pmax_con设置为2000,pmax_dat设置为500m。

s202.监测内存数据库的业务访问量

运行当前的内存数据库,同时监测云主机当前资源使用量和内存数据库的业务访问量,并按时间顺序记录所述业务访问量;其所监测指标项包括资源层和服务层两个维度的数据;资源层监控数据是指云主机当前资源使用量,其包括:cpu核数ccpu、内存占用cmem、数据平面的虚拟网卡当前占用的网络带宽cbw等参数;而服务层监控数据是指的业务访问量其包括:当前的并发连接数ccon、并发数据量cdat等;其具体为:在监测的同时,依次记录下每一时刻下的并发连接数和并发数据量;而在第t1时,ccon为1000,cdat为200m;在第t2时,ccon为1300,cdat为280m;第t3时,ccon为1500,cdat为350m;在第t4时,ccon为1700,cdat为400m等。

s203.预测下一时刻的业务访问量

根据两份以上在最近时间记录的业务访问量,对下一时刻的业务访问量进行预测;如果当前时刻为第t4,那么其将根据最近的几秒中的并发连接数和并发数据量对下一秒的并发连接数和并发数据量进行预测;其可根据之前时间所记录的历史业务访问量,获取到业务访问量的发展趋势值。

对下一时刻的业务访问量进行预测所得到的参数包括:预计并发连接数econ、预计并发数据量edat等。

以并发连接数为例,时间点tn的预计并发连接数ecpu(tn)需要综合之前的m次采样时间点的监控数值——即ccon(tn-1),ccon(tn-2),ccon(tn-3)...,ccon(tn-m)进行加权计算:

其中ki为每个时间段连接数差值的加权系数。

类似的,tn时刻的预计并发数据量计算方法为:

其中k’i为每个时间段数据量差值的加权系数。

s204.判断所监测的数据是否在预定的范围之内

判断云主机当前资源使用量和所预测到的业务访问量是否在预定的范围之内,该预定的范围为报警范围,其参数范围会小于当前的内存数据库的最大处理能力,即最大并发连接数和最大并发数据量;以防业务访问量的超出内存数据库的最大处理能力;如在预定的范围之内,则继续进行步骤s202.监测内存数据库的业务访问量。

s205.判断云主机的参数是否需要调整

获取所述内存数据库所在的云主机的当前资源占用率,判断所述当前资源占用率是否与所述内存数据库所在的云主机的处理能力相匹配,其具体为:判断当前资源占用率是否达到预设的云主机的处理能力的百分比上限或百分比下限;若达到所述百分比上限或百分比下限,则表示为不匹配,若未达到所述百分比上限或百分比下限,则表示为匹配;若匹配,则判断是否需要对内存数据库的参数进行调整;若不匹配,判断是否需要对云主机的硬件参数进行调整。

所述云主机的当前资源占用率包括:cpu、内存、带宽的参数,每一个监控项预设一个需要进行扩容的资源占用百分比上限和需要进行缩容的资源占用百分比下限,例如cpu上限百分比pmax_cpu=80%,cpu下限百分比pmin_cpu=40%,内存上限百分比pmax_mem=75%,内存下限百分比pmin_mem=20%,带宽上限百分比pmax_bw=75%,带宽下限百分比pmin_bw=10%;

如果其中任意一个条件成立,则需要从资源层进行扩容;

反之,如果其中任意一个条件成立,则需要从资源层进行缩容;

当判定结果为需要进行云主机资源扩容或缩容时,需要进一步计算出扩缩容后新的资源规格:

i’cpu(资源扩缩容后的cpu核数)、i’mem(资源扩缩容后的内存大小)、i’bw(资源扩缩容后数据平面的虚拟网卡初始最大可用带宽)等。计算的方法为:

i’cpu=icpu*(1+δcpu)

i’mem=imem*(1+δmem)

i’bw=ibw*(1+δbw)

其中δcpu、δmem、δbw为要进行扩容或缩容的比率,如20%为扩容,-60%为缩容。即可以根据之前若干个采样周期的cpu、内存、带宽偏差值进行动态计算,也可以简单地使用预置静态常量。

s206.判断内存数据库的参数是否需要调整

判断是否需要对内存数据库的参数进行调整,当预测到的并发连接数和并发数据量大于预定的范围,则其判断为需要对内存数据库的参数进行调整;若不需要对内存数据库的参数进行调整,则继续进行步骤s202.监测内存数据库的业务访问量。

其具体的判断过程可以为:

为内存数据库的每一个监控项预设一个报警的上限阈值,例如并发连接数上限阈值tmax_con,并发数据量上限阈值tmax_dat,当连续多个采样时间点监控值均超过上限阈值时,对内存数据库的参数进行调整。具体可以描述为:

如果则需要重新评估连接数参数,新的评估值记为p’con;

如果则需要重新评估连接数参数,新的评估值记为p’dat;

然后,根据新的服务评估参数p’con、p’dat等,评估当前资源层云主机规格是否满足需求。如果超出了原云主机规格,则主动触发资源层扩容,给出新的资源规格评估值i’cpu、i’mem、i′bw等。

s207.对内存数据库的参数进行调整

若需要对内存数据库的参数进行调整,则进行根据所预测到的业务访问量对内存数据库的参数进行调整。即将内存数据库的参数进行增大,以避免下一时刻的并发连接数和/或并发数据量超出其能处理的范围,而所其增加的量将根据预测到的业务访问量来进行设定,其具体的增加方式可包括:在预测到的业务访问量上乘以预定的系数或加上预定的数值;如在第t5的econ和edat的基础上分别增加500和100m,得到新的内存数据库的最大上限值pmax_con为2400,pmax_dat为560m。由于新的内存数据库的参数是根据所预测到的业务访问量来设定的,其有效地避免因盲目设置而导致新的内存数据库的参数过大,而造成资源浪费的情况发生;而在新的内存数据库的参数被设定好后,其将按新的内存数据库的参数运行当前的内存数据库,并继续监测所述内存数据库的业务访问量。

s208.判断是否需要对云主机的硬件参数进行调整

判断是否需要对云主机的硬件参数进行调整,如果需要对云主机的硬件参数进行调整,则进行步骤s209.生成新的云主机并运行新的内存数据库;若不需要对云主机的硬件参数进行调整,则进行步骤s210.判断是否需要对云主机的带宽参数进行调整。

s209.生成新的云主机并运行新的内存数据库

云主机的参数包括:硬件参数和带宽参数;而对云主机的参数的调整方式也分为两类,1)不用重启云主机即可使新的资源配额/配置生效

如:openstack平台下对虚拟网卡的带宽调整可以在不重启云主机的情况下就生效。

2)需要重启或新建云主机

如:openstack/阿里云等平台下,变更cpu的核数需要以新的资源规格新建云主机实例;

aws、azure等平台下,对虚拟网络的调整必须重启云主机才能生效;

对于第一类情况,处理比较简单,直接通过云管理模块把云主机的资源规格进行调整即可(如:openstack平台中,通过云管理模块调用云api把ibw更新为i’bw)。

对于第二类情况,为了减少或者避免业务访问的中断时间,不能直接采用重启云主机的方式。需要先以新的资源规格评估值(i’cpu、i’mem、i′bw等)创建出新的云主机实例,然后在新云主机实例上创建内存数据库实例、以新的服务配置参数(p’max_con、p’max_dat)启动服务后,把业务连接的ip地址和端口从原云主机上的服务收回,附着到新云主机里的服务上。切换完成后,由云管理模块下发释放原云主机实例的指令,并且把云监控模块的地址从原云主机切换到新云主机上。故需要对硬件参数和带宽参数是否需要进行调整分别进行判断;若需要对云主机的硬件参数进行调整,则根据所预测到的业务访问量设定与生成新的云主机,再在所述云主机中生成新的内存数据库,并运行该新的内存数据库。

其中,步骤s209.生成新的云主机并运行新的内存数据库具体由以下步骤组成,请参看图3,其包括:

s2091.生成现有云主机的镜像文件

获取现今内存数据库所在的云主机的硬件数据信息,并根据所述硬件数据信息生成镜像文件;其具体为:对原有的云主机进行快照,并以此为镜像、根据容量评估模块给出的新机器规格(i’cpu、i’mem、i′bw等)创建出新的云主机。由于云主机需要包含两个虚拟网卡,分别负责与管理网络平面的通信以及数据网络平面的通信。例如,原有的云主机中的veth0为管理平面的虚拟网卡,分配的ip地址为192.168.10.11,云平台监控模块通过veth0来监控原有的云主机上的云主机资源以及内存数据库的服务参数;veth1为数据平面的虚拟网卡,初始分配10.18.210.87的ip,并且把新的内存数据库r’1的端口也绑定到了该网卡上。在发生切换前,应用程序都是通过veth1进行内存数据库的业务访问。一般来说,对虚拟网卡的带宽扩缩容也只针对数据网络平面的虚拟网卡。

s2092.生成新的云主机及内存数据库

根据所述镜像文件生成新的云主机,并根据所述当前资源占用率对新的云主机的硬件数据信息进行设定,以及在新的云主机中生成新的内存数据库;新的云主机创建完成后,由于是使用快照创建的云主机实例,新的内存数据库r’1在新的云主机启动后默认已经部署完毕,且包含了之前快照时的内存数据库r1的持久化数据。根据容量评估模块给出的内存数据库的参数值(p’max_con、p’max_dat等)进行参数配置。

启动新的内存数据库r’1后,将r’1设置为r1的只读复制实例,这样应用程序的增量写入数据也都能同步到新的内存数据库r’1上来。

s2093.与新的云主机建立连接

在生成新的云主机后,与所述新的云主机建立连接;并在与新的云主机的连接建立完成后,解除与原有的云主机之间的连接。其具体为:r’1服务准备就绪后,即可进行业务访问端口的切换。云平台管理模块负责把业务层访问ip(10.118.210.87)从原有的云主机解绑,并把它绑定到新的云主机中的veth1网卡上。这样应用程序的访问流量就都指向了r’1实例。此时可以拆除r1与r’1间的主从复制关系。云平台管理模块负责删除原有的云主机。同时,把云平台监控模块对云主机的监听地址进行刷新,其从192.168.10.11变更为192.168.10.12,开始对新的资源及服务的监控。

s210.判断是否需要对云主机的带宽参数进行调整

若不需要对云主机的硬件参数进行调整,则判断是否需要对云主机的带宽参数进行调整;若不需要对云主机的带宽参数进行调整,则继续进行步骤s202.监测内存数据库的业务访问量。

s211.对云主机的带宽参数进行调整

若需要对云主机的带宽参数进行调整,则对云主机的带宽参数进行调整,并在调整带宽后,继续进行步骤s202.监测内存数据库的业务访问量。

在实际应用中,如果内存数据库初始预设的处理能力较小,而在业务高峰来临时再临时更换高规格机器的话,其会存在以下问题:

1.切换时间较长,且有业务连接中断。因为需要运维人员临时部署新的机器,在其上启动新的内存数据库服务,再手工把业务导流到新服务的地址上,操作过程复杂、占用时间长、且需要中断业务与内存数据库的连接再重连。

2.预先容量评估的数据经常会不准确。当监测到容量不足,进行扩容时,如果扩容所选的机器资源不够大,容易在下一次更大的流量来临时被击穿;

3.仍然存在资源浪费的情况。当业务扩容、顶住峰值流量之后,进入业务平稳期或低峰期时,对资源的占用实际小于业务所需用量,会造成资源的浪费;同样地,评估值高于实际最大峰值也会造成资源的浪费。

而本发明将对实时的业务访问数据和实时的资源占用率进行监测,并根据历史的监测数据和实时的资源占用率对内存数据库和/或云主机的参数进行适应性的调整,其有效地适应当前的资源占用情况,避免了流量击穿或资源浪费情况的发生,且其对更换云主机的时间进行了预测,并提前生成新的云主机,使其能实现无缝地替换。

请参看图4及图5,本发明是一种自动调整内存数据库空间大小的系统,其包括:云主机101、应用程序以及一种自动调整内存数据库空间大小的装置,所述云主机101中配置有内存数据库102、管理端口和数据端口;所述管理端口与所述装置相连接,所述数据端口与所述应用程序301相连接。

其中,所述一种自动调整内存数据库空间大小的装置,包括:

云平台监控模块201,所述云平台监控模块201用于在内存数据库102运行时监测所述内存数据库102的业务访问量,并按时间顺序记录所述业务访问量;

容量评估模块202,所述容量评估模块202与所述云平台监控模块201相连接,用于根据两份以上在最近时间记录的业务访问量,对下一时刻的业务访问量进行预测;

云平台管理模块203,所述云平台管理模块203与所述容量评估模块202相连接,用于判断所预测到的业务访问量是否在预定的范围之内,如不在预定的范围之内,则根据所预测到的业务访问量对内存数据库102的参数进行调整,并按调整后的参数对所述内存数据库102进行设置。

当在本系统中需要对云主机101进行替换时,其先生成一个新的云主机101,在新的云主机101被设置好后,建立该装置与云主机101之间的连接,并在连接建立好后,即断开原有的云主机101与该装置之间的连接,并对原有的云主机101进行删除,其有效地释放资源。

在本说明书的描述中,参考术语“一个实施方式”、“一些实施方式”、“示意性实施方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1