首页> 中国专利> 数据库集群系统负载均衡方法和数据库集群系统

数据库集群系统负载均衡方法和数据库集群系统

摘要

本发明公开了一种数据库集群系统负载均衡方法和数据库集群系统,属于信息技术领域。本发明方法包括:a)集群控制器采集各个数据库后端的各个指标值组成决策矩阵;b)根据决策矩阵计算带权重的归一化矩阵;c)计算各个数据库后端和正负理想解之间的距离;d)按距离差值由大到小排序,集群控制器根据此序列调用数据库后端。本发明系统包括一个集群控制器和一个或多个数据库后端,前者包括负载均衡决策组件、后端检测组件、用户请求分发组件和负载信息表;后者包括通信组件、数据库服务器和负载测量组件。本发明可用于数据库集群系统。

著录项

  • 公开/公告号CN101841565A

    专利类型发明专利

  • 公开/公告日2010-09-22

    原文格式PDF

  • 申请/专利权人 中国科学院软件研究所;

    申请/专利号CN201010154901.8

  • 申请日2010-04-20

  • 分类号H04L29/08(20060101);G06F17/30(20060101);

  • 代理机构北京君尚知识产权代理事务所(普通合伙);

  • 代理人余功勋

  • 地址 100190 北京市海淀区中关村南四街4号

  • 入库时间 2023-12-18 00:48:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-04-14

    未缴年费专利权终止 IPC(主分类):H04L29/08 授权公告日:20130731 终止日期:20190420 申请日:20100420

    专利权的终止

  • 2013-07-31

    授权

    授权

  • 2010-11-10

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20100420

    实质审查的生效

  • 2010-09-22

    公开

    公开

说明书

技术领域

本发明涉及数据库集群系统,尤其涉及数据库集群系统中的负载均衡方法和相应的数据库集群系统,属于信息技术领域。

背景技术

数据库集群系统是指将一组数据库服务器以集群的方式组合起来,使用统一的接口向用户提供服务。数据库集群系统利用保存在多个数据库后端节点上的数据副本获得更高的可用性;并利用多个数据库后端节点提供单一数据库系统所无法提供的更强大的数据管理能力和更高的查询响应效率。

数据库集群系统使用多种数据分布方式,包括:全集冗余模式、子集划分模式和子集交叠模式。其中:全集冗余模式(也称对等冗余模式)是指,多个后端节点中所保存的数据完全相同;子集划分模式是指,多个后端节点各保存数据全集的一部分数据,节点间没有数据交叠;子集交叠模式是指,各结点各保存数据全集的一部分数据,节点间有数据交叠。为了获得更高可用性和响应效率,集群系统大都采用全集冗余模式。

集群数据库系统在全集冗余模式下工作时,由于各个数据库后端节点是等价的,用户查询可仅由一个后端节点执行并应答即可。在这种场景下,如何选取效率最高的节点执行用户查询,是决定整个集群系统应答效率的关键技术。目前普遍使用的数据库集群系统负载均衡方法包括:

(1)随机选择法。在后端中随机选择一个节点来执行用户查询请求。

(2)轮询法。轮流选取后端节点执行用户查询请求。

(3)加权轮询法。给不同的数据库节点赋予不同的权值,权值大的节点被轮询到的次数大于权值小的节点,比如权值为2的节点被轮询到的次数是权值为1的节点的2倍。

然而,上述负载均衡方法,均没有考虑到不同计算机节点的差异性。随机选择法总是随机选择数据库节点完全不了解后端状态也完全没有可控性,轮询法和加权轮询法在各个后端数据库之间按顺序循环执行,这虽然可以使每个后端都有任务,但并不能做到各个后端任务的最优分配。

发明内容

本发明的目的在于克服现有技术中存在的问题,提供一种数据库集群系统中进行动态负载均衡的方法和相应的数据库集群系统。本发明通过对数据库后端节点的运行状态进行测量,实时获得后端节点的响应效率评价值,从而选择效率评价值最高的后端节点进行执行,以避免后端节点的过热和故障,从整体上提升数据库集群系统的运行效率。

本发明的数据库集群系统负载均衡方法包括下列步骤:

a)集群控制器采集各个数据库后端的各个设定指标的值,组成决策矩阵;

b)对决策矩阵进行归一化;计算各个指标的权重向量;并根据vij=wjbij计算带权重的归一化矩阵,其中bij表示归一化后的决策矩阵单元,wj表示指标的权重向量,i表示数据库后端序号,j表示指标序号;

c)分别计算各个数据库后端和负理想解之间的距离di-,以及和正理想解之间的距离di+

d)按di--di+的差值由大到小对各个数据库后端进行排序,集群控制器根据此序列调用数据库后端。

各具体步骤的优选实现方式将在下面具体描述。

本发明提供的数据库集群系统包括一个集群控制器和一个或多个数据库后端节点,在数据库后端节点中保存完全相同的数据集合,数据库后端节点是同构或异构的数据库后端节点。

如图1所示,集群控制器包含负载均衡决策组件、后端检测组件、用户请求分发组件和负载信息表,其中,负载均衡决策组件用于执行负载均衡决策过程;后端检测组件用于执行后端负载检测过程;负载信息表用于保存后端负载检测过程所得出的测量值;用户请求分发组件用于暂存用户请求、发起后端负载检测过程、发起负载均衡决策过程、并将用户请求发至决策结果确定的数据库后端节点执行。

数据库后端节点包含通信组件、数据库服务器和负载测量组件,其中,通信组件用于接收后端检测请求、发起负载测量、将负载测量值存入集群控制器中的负载信息表中,并接收集群控制器发来的用户请求,将其发给数据库服务器执行,将得到的结果集返回至集群控制器;数据库服务器用于接收通信组件发来的用户请求并作出应答;负载测量组件用于接收通信组件发来的负载测量请求并作出应答。负载测量组件又进一步包含:CPU使用率检测模块、内存使用率检测模块、磁盘已占用空间检测模块、磁盘可用空间比例检测模块、磁盘IO延迟检测模块和网络延迟检测模块。

在上述数据库集群系统中,当用户将数据库查询请求发送至集群控制器时,集群控制器中的用户请求分发组件负责将数据库查询请求暂存,通过后端检测组件执行1次后端负载检测过程,通过负载均衡决策组件执行1次负载均衡决策过程,用户请求分发组件根据负载决策过程得出的结果将数据库查询请求转发至相应的数据库后端节点执行。

后端负载检测过程的执行流程为:后端检测组件向数据库后端发起后端检测请求,由数据库后端节点中的通信组件接受后端检测请求,驱动负载测量组件进行负载测量,负载测量完成后,再由通信组件将获得的负载值返回至集群控制器,并将测量值存储于负载信息表中。其中,负载测量的内容包括:CPU使用率、内存使用率、磁盘已占用空间、磁盘可用空间比例、磁盘IO延迟和网络延迟。

负载均衡决策过程的执行流程为:

(1)如果数据库查询请求是写请求(Insert,Update,Delete操作),决策结果为所有数据库后端节点;

(2)如果数据库查询请求是读请求(Select操作),那么执行以下步骤:

将负载信息表中的负载值构造为决策矩阵,第1列至第6列分别对应为:CPU使用率、内存使用率、磁盘可用空间比例、磁盘已占用空间、网络延迟、磁盘IO延迟;

利用以下两个公式对决策矩阵进行归一化处理,

对于成本型指标使用如下公式计算

对效益型指标使用如下公式计算

其中Mj是第j列最大值,mj是第j列最小值,aij为归一化前决策矩阵第i行第j列的值,bij为归一化处理以后决策矩阵第i行第j列的值;

采用熵值法计算各个指标的权重,形成权重向量,使用如下公式将各指标值进行归一化处理使用如下公式计算指标的熵值使用如下公式将熵值转化为权值得到W=[w1,w2,w3,w4,w5,w6],w1+w2+w3+w4+w5+w6=1;

使用TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)方法对所有后端进行排序,确定正理想解为:v+={1,1,0,0,1,1},确定负理想解为:v-={0,0,1,1,0,0},使用下述公式计算决策矩阵中每一行和正理想解之间的距离:j=1,...,m,使用下述公式计算决策矩阵中每一行和负理想解之间的距离:j=1,...,m,使用下述公式计算决策排序:

取dj值最大的数据库后端节点,作为决策结果。

使用传统的随机均衡方法、轮询均衡方法和加权轮询均衡方法等静态负载均衡方法,负载均衡结果与数据库后端节点的即时状态无关,难以保证每次操作都发送至效率最优的节点执行。这主要是出于两方面的原因:

随着服务器的运行,服务器的状态可能会发生变化,性能也会随之改变,而预设的均衡策略无法侦测这种变化。

服务器接收到的任务量不一定相等。用户操作以事务为单元,但每一个事务的工作量存在差异。若一个后端节点接受了一个超长的事务,则只能将后续的事务延迟处理,于此同时,其他后端节点可能因为接收到事务都是短事务,而处于闲置状态。

可见,相对于现有技术中的随机均衡方法、轮询均衡方法和加权轮询均衡方法等静态负载均衡方法,使用本发明所述数据库集群系统动态负载均衡方法,可以随时监测后端节点的运行状态,保证集群系统在每次处理用户请求时都选取效率最优的节点执行。

附图说明

图1是本发明集群数据库系统的结构示意图。

图2是负载测量流程图。

图3是用户指令处理流程图。

图4是本发明实施例数据库集群系统结构示意图。

图5是多指标决策的一般步骤。

具体实施方式

下面提供一具体实施例对本发明作进一步说明。

搭建如图4所示的异构数据库集群系统,其中控制器节点和3个后端数据库节点位于不同的主机之上。在控制器节点主机配置数据库集群控制器提供发明所需的控制器节点的功能。用户通过集群控制器提供的用户交互平台进行操作。本发明对集群控制器进行了扩展,加入以下三个组件:负载决策均衡组件、后端检测组件和负载信息表。后端检测组件以固定的时间间隔向各后端发起负载检测请求。

在三个后端上分别安装SqlServer、Ingres和PostgreSQL数据库。分别在三个数据库上建立表loadstate用来存储本节点的负载信息,在loadstate表上建立触发器,响应插入指令。在触发器中调用外部动态链接库函数测量节点负载信息,再把测得的负载信息写入loadstate表中。该动态链接库可以通过多种方式生成。本例中用C代码编写动态链接库文件。

下面给出一次负载均衡的完整步骤:

如图2所示是一次负载检测的完整过程图。后端检测组件根据内部定时装置,以一定的时间间隔向各个后端发起周期性负载检测请求。当一次负载检测请求开始以后。

步骤①:后端检测组件向通信组件发出负载检测请求。

步骤②:通信组件将这一请求转发给负载测量组件。

步骤③、④:负载测量组件在后端数据库上执行SQL指令“INSERT INTO loadstateVALUES(id,0,0,0,0,0,0)”。数据库建立在表loadstate上的触发器自动响应该INSERT指令,调用外部动态链接库函数取得计算机负载信息。再将实际的负载数据通过UPDATE指令写入loadstate表中。

步骤⑤、⑥:负载信息通过通信组件回到位于控制器端的后端检测组件。

步骤⑦:当后端检测组件收集完毕所有3个后端的负载信息以后,将此时形成的3×6的决策矩阵传递给负载决策组件。

步骤⑧:决策组件对决策矩阵的各列给出排序,最后的结果放在负载信息表中。

此时一次负载检测过程结束。这个负载信息表将会在下一次负载检测过程开始前保持作用。下一次负载检测过程之后,该负载信息表将会被更新。

如图5所示是负载决策组件内部根据决策矩阵形成各个后端排序的过程图。

在上述步骤⑦中,三个后端采集到的负载决策矩阵为:

  后端 CPU使用率(%)  内存使用率(%)  空闲磁盘比率(%)  磁盘剩余空间(Mb)  网络延迟(ms)  磁盘IO延迟(ms)  SqlServer 4  93  69  28462  62  63  ingres 53  83  49  20807  500  218  PostgreSQL 26  92  79  32625  94  78

步骤1,规范化决策矩阵,根据下列公式对决策矩阵进行归一化处理:

成本型指标效益型指标

在本实施例所测的六个指标中,CPU使用率、内存使用率、网络延迟和磁盘IO延迟属于成本型指标,数值越小越好。空闲磁盘比例和剩余磁盘空间属于效益型指标,数值越大越好。归一化处理后的结果如下表所示:

  后端  CPU使用率  内存使用率  空闲磁盘比率  磁盘剩余空间  网络延迟  磁盘IO延迟  SqlServer  1  0  0.6667  0.6477  1  1  ingres  0  1  0  0  0  0  PostgreSQL  0.5510  0.1  1  1  0.9269  0.9032

步骤2,求权重向量:

先对原决策矩阵按公式归一化,归一化之后的结果如下表所示:

 后端  CPU使用率  内存使用率  空闲磁盘比率  磁盘剩余空间  网络延迟  磁盘IO延迟 SqlServer  0.0482  0.3470  0.3503  0.3475  0.0945  0.1759 ingres  0.6386  0.3097  0.2487  0.2541  0.7622  0.6072  PostgreSQL  0.3133  0.3433  0.4010  0.3984  0.1433  0.2173

步骤3,根据公式计算各个指标的熵值,计算结果如下表所示:

 CPU使用率  内存使用率  空闲磁盘比率  磁盘剩余空间  网络延迟  磁盘IO延迟 0.7247  0.9988  0.9830  0.9849  0.6448  0.8556

步骤4,根据公式计算各个指标的权重向量,计算结果如下表所示:

 CPU使用率  内存使用率  空闲磁盘比率  磁盘剩余空间  网络延迟  磁盘IO延迟 0.3406  0.0014  0.0210  0.0186  0.4396  0.1787

步骤5,根据vij=wjbij计算带权重的归一化矩阵,计算结果如下表所示:

  后端 CPU使用率  内存使用率  空闲磁盘比率  磁盘剩余空间  网络延迟  磁盘IO延迟  SqlServer 0.3406  0  0.0140  0.0120  0.4396  0.1787  ingres 0  0.0014  0  0  0  0  PostgreSQL 0.1877  1.4443  0.0210  0.0186  0.4074  0.1614

步骤6,按下列公式计算每一行分别到正负理想点的距离。

>di+={Σj=1m(vij-vi+)2}12,i=1,...,n>

>di-={Σj=1m(vij-vi-)2}12,i=1,...,n>

计算结果如下表所示:

  di+  di-  SqlServer  1.5568  0.5131  ingres  1.9993  1.4142  PostgreSQL  1.6476  1.4659

步骤7,计算到负点距离和到正点距离的差计算结果如下表所示:

  SqlServer  -0.0438  ingres  -0.5850  PostgreSQL  -0.1817

离正点越近离负点越远的负载越小。所以根据上面的数据得出各个后端负载的序列如下:

  SqlServer  PostgreSQL  ingres

如图3所示为一个用户请求到来以后系统的响应流程。

当用户请求为写操作如INSERT、CREATE、UPDATE等语句,用户请求发送到用户请求分发组件以后,该组件直接将请求发送给所有后端数据库。

当用户请求为读操作如SELECT语句时,用户请求按如下流程被处理。

步骤1,用户请求首先传入用户请求分发组件,分发组件识别该语句是读操作。

步骤2,用户请求分发组件从负载信息表中读出其中最新的负载的排列,取出排在最前面的后端信息(负载最小的后端)。

步骤3,用户请求分发组件将用户请求发送给该后端节点。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号