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

文档序号:6601246阅读:211来源:国知局
专利名称:数据库集群系统负载均衡方法和数据库集群系统的制作方法
技术领域
本发明涉及数据库集群系统,尤其涉及数据库集群系统中的负载均衡方法和相应 的数据库集群系统,属于信息技术领域。
背景技术
数据库集群系统是指将一组数据库服务器以集群的方式组合起来,使用统一的接 口向用户提供服务。数据库集群系统利用保存在多个数据库后端节点上的数据副本获得更 高的可用性;并利用多个数据库后端节点提供单一数据库系统所无法提供的更强大的数据 管理能力和更高的查询响应效率。数据库集群系统使用多种数据分布方式,包括全集冗余模式、子集划分模式和子 集交叠模式。其中全集冗余模式(也称对等冗余模式)是指,多个后端节点中所保存的数 据完全相同;子集划分模式是指,多个后端节点各保存数据全集的一部分数据,节点间没有 数据交叠;子集交叠模式是指,各结点各保存数据全集的一部分数据,节点间有数据交叠。 为了获得更高可用性和响应效率,集群系统大都采用全集冗余模式。集群数据库系统在全集冗余模式下工作时,由于各个数据库后端节点是等价的, 用户查询可仅由一个后端节点执行并应答即可。在这种场景下,如何选取效率最高的节点 执行用户查询,是决定整个集群系统应答效率的关键技术。目前普遍使用的数据库集群系 统负载均衡方法包括(1)随机选择法。在后端中随机选择一个节点来执行用户查询请求。(2)轮询法。轮流选取后端节点执行用户查询请求。(3)加权轮询法。给不同的数据库节点赋予不同的权值,权值大的节点被轮询到的 次数大于权值小的节点,比如权值为2的节点被轮询到的次数是权值为1的节点的2倍。然而,上述负载均衡方法,均没有考虑到不同计算机节点的差异性。随机选择法总 是随机选择数据库节点完全不了解后端状态也完全没有可控性,轮询法和加权轮询法在各 个后端数据库之间按顺序循环执行,这虽然可以使每个后端都有任务,但并不能做到各个 后端任务的最优分配。

发明内容
本发明的目的在于克服现有技术中存在的问题,提供一种数据库集群系统中进行 动态负载均衡的方法和相应的数据库集群系统。本发明通过对数据库后端节点的运行状态 进行测量,实时获得后端节点的响应效率评价值,从而选择效率评价值最高的后端节点进 行执行,以避免后端节点的过热和故障,从整体上提升数据库集群系统的运行效率。本发明的数据库集群系统负载均衡方法包括下列步骤a)集群控制器采集各个数据库后端的各个设定指标的值,组成决策矩阵;b)对决策矩阵进行归一化;计算各个指标的权重向量;并根据 =Wjb.j计算带 权重的归一化矩阵,其中表示归一化后的决策矩阵单元,^表示指标的权重向量,i表示
4数据库后端序号,j表示指标序号;c)分别计算各个数据库后端和负理想解之间的距离di_,以及和正理想解之间的 距离d:;d)按(1厂-屯+的差值由大到小对各个数据库后端进行排序,集群控制器根据此序列 调用数据库后端。各具体步骤的优选实现方式将在下面具体描述。本发明提供的数据库集群系统包括一个集群控制器和一个或多个数据库后端节 点,在数据库后端节点中保存完全相同的数据集合,数据库后端节点是同构或异构的数据 库后端节点。如图1所示,集群控制器包含负载均衡决策组件、后端检测组件、用户请求分发组 件和负载信息表,其中,负载均衡决策组件用于执行负载均衡决策过程;后端检测组件用于 执行后端负载检测过程;负载信息表用于保存后端负载检测过程所得出的测量值;用户请 求分发组件用于暂存用户请求、发起后端负载检测过程、发起负载均衡决策过程、并将用户 请求发至决策结果确定的数据库后端节点执行。数据库后端节点包含通信组件、数据库服务器和负载测量组件,其中,通信组件用 于接收后端检测请求、发起负载测量、将负载测量值存入集群控制器中的负载信息表中,并 接收集群控制器发来的用户请求,将其发给数据库服务器执行,将得到的结果集返回至集 群控制器;数据库服务器用于接收通信组件发来的用户请求并作出应答;负载测量组件用 于接收通信组件发来的负载测量请求并作出应答。负载测量组件又进一步包含CPU使用 率检测模块、内存使用率检测模块、磁盘已占用空间检测模块、磁盘可用空间比例检测模 块、磁盘10延迟检测模块和网络延迟检测模块。在上述数据库集群系统中,当用户将数据库查询请求发送至集群控制器时,集群 控制器中的用户请求分发组件负责将数据库查询请求暂存,通过后端检测组件执行1次后 端负载检测过程,通过负载均衡决策组件执行1次负载均衡决策过程,用户请求分发组件 根据负载决策过程得出的结果将数据库查询请求转发至相应的数据库后端节点执行。后端负载检测过程的执行流程为后端检测组件向数据库后端发起后端检测请 求,由数据库后端节点中的通信组件接受后端检测请求,驱动负载测量组件进行负载测量, 负载测量完成后,再由通信组件将获得的负载值返回至集群控制器,并将测量值存储于负 载信息表中。其中,负载测量的内容包括CPU使用率、内存使用率、磁盘已占用空间、磁盘 可用空间比例、磁盘10延迟和网络延迟。负载均衡决策过程的执行流程为(1)如果数据库查询请求是写请求(Insert,Update,Delete操作),决策结果为所 有数据库后端节点;(2)如果数据库查询请求是读请求(Select操作),那么执行以下步骤将负载信息表中的负载值构造为决策矩阵,第1列至第6列分别对应为CPU使用 率、内存使用率、磁盘可用空间比例、磁盘已占用空间、网络延迟、磁盘10延迟;利用以下两个公式对决策矩阵进行归一化处理,
5
对于成本型指标使用如下公式计算~ = 对效益型指标使用如下公式计算~ = 其中M^是第j列最大值,mj是第j列最小值,aiJ为归一化前决策矩阵第i行第j 列的值,b.j为归一化处理以后决策矩阵第i行第j列的值;采用熵值法计算各个指标的权重,形成权重向量,使用如下公式将各指标值进行
归一化处理使用如下公式计算指标的熵值I =--L^x inx使用如下公式
将熵值转化为权值“m-^H 得到 W = [Wl,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},使用下述公式计算决策矩阵中每一行和正理想解之间的距离
d]=\L{vij-V')2 2,j =丨,...,m,使用下述公式计算决策矩阵中每一行和负理想解之间
的距离<=5]( -()2 ,j = l,...,m,使用下述公式计算决策排序 取…值最大的数据库后端节点,作为决策结果。使用传统的随机均衡方法、轮询均衡方法和加权轮询均衡方法等静态负载均衡方 法,负载均衡结果与数据库后端节点的即时状态无关,难以保证每次操作都发送至效率最 优的节点执行。这主要是出于两方面的原因随着服务器的运行,服务器的状态可能会发生变化,性能也会随之改变,而预设的 均衡策略无法侦测这种变化。服务器接收到的任务量不一定相等。用户操作以事务为单元,但每一个事务的工 作量存在差异。若一个后端节点接受了一个超长的事务,则只能将后续的事务延迟处理,于 此同时,其他后端节点可能因为接收到事务都是短事务,而处于闲置状态。可见,相对于现有技术中的随机均衡方法、轮询均衡方法和加权轮询均衡方法等 静态负载均衡方法,使用本发明所述数据库集群系统动态负载均衡方法,可以随时监测后 端节点的运行状态,保证集群系统在每次处理用户请求时都选取效率最优的节点执行。


图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个后端的负载信息以后,将此时形成的 3X6的决策矩阵传递给负载决策组件。步骤⑧决策组件对决策矩阵的各列给出排序,最后的结果放在负载信息表中。此时一次负载检测过程结束。这个负载信息表将会在下一次负载检测过程开始前 保持作用。下一次负载检测过程之后,该负载信息表将会被更新。如图5所示是负载决策组件内部根据决策矩阵形成各个后端排序的过程图。在上述步骤⑦中,三个后端采集到的负载决策矩阵为 步骤1,规范化决策矩阵,根据下列公式对决策矩阵进行归一化处理 在本实施例所测的六个指标中,CPU使用率、内存使用率、网络延迟和磁盘10延迟 属于成本型指标,数值越小越好。空闲磁盘比例和剩余磁盘空间属于效益型指标,数值越大 越好。归一化处理后的结果如下表所示 步骤2,求权重向量 先对原决策矩阵按公式 一归一化,归一化之后的结果如下表所示
步骤3,根据公式巧算各个指标的熵值,计算结果如下表所
示 步骤4,根据公式 — m — gy计算各个指标的权重向量,计算结果如下表所示 步骤5,根据 =Wjbij计算带权重的归一化矩阵,计算结果如下表所示 步骤6,按下列公式计算每一行分别到正负理想点的距离。
计算结果如下表所示 步骤7,计算到负点距离和到正点距离的差式^d;-d;,计算结果如下表所示 离正点越近离负点越远的负载越小。所以根据上面的数据得出各个后端负载的序 列如下 如图3所示为一个用户请求到来以后系统的响应流程。当用户请求为写操作如INSERT、CREATE、UPDATE等语句,用户请求发送到用户请 求分发组件以后,该组件直接将请求发送给所有后端数据库。当用户请求为读操作如SELECT语句时,用户请求按如下流程被处理。步骤1,用户请求首先传入用户请求分发组件,分发组件识别该语句是读操作。步骤2,用户请求分发组件从负载信息表中读出其中最新的负载的排列,取出排在 最前面的后端信息(负载最小的后端)。步骤3,用户请求分发组件将用户请求发送给该后端节点。
权利要求
一种数据库集群系统负载均衡方法,该方法包括下列步骤a)集群控制器采集各个数据库后端的各个设定指标的值,组成决策矩阵;b)对决策矩阵进行归一化;计算各个指标的权重向量;并根据vij=wjbij计算带权重的归一化矩阵,其中bij表示归一化后的决策矩阵单元,wj表示指标的权重向量,i表示数据库后端序号,j表示指标序号;c)分别计算各个数据库后端和负理想解之间的距离di-,以及和正理想解之间的距离di+;d)按di--di+的差值由大到小对各个数据库后端进行排序,集群控制器根据此序列调用数据库后端。
2.如权利要求1所述的数据库集群系统负载均衡方法,其特征在于,所述设定指标包括成本型指标和效益型指标,在步骤b)中, 成本型指标按下式进行归一化:b广, 其中M^和!^分别表示各个数据库后端的第j个指标的最大和最小值,Bij表示归一化 前的矩阵单元,b.j表示归一化后的矩阵单元。
3.如权利要求2所述的数据库集群系统负载均衡方法,其特征在于,成本型指标包括 CPU使用率、内存使用率、网络延迟和磁盘IO延迟;效益型指标包括空闲磁盘比例和剩余磁 盘空间。
4.如权利要求1所述的数据库集群系统负载均衡方法,其特征在于,步骤b)按下列方 法计算各个指标的权重向量 按公式 对决策矩阵进行归一化,其中%表示归一化前的矩阵单元, 归一化后的矩阵单元;按公式^=-+Ix in 计算各个指标的熵值; inn i=l 按公式 m—fy由熵值计算权重向量。 >1
5.如权利要求1所述的数据库集群系统负载均衡方法,其特征在于,当指标数为六个时,所述正理想解为{1,1,0,0,1,1},所述负理想解为{0,0,1,1,0,0}。
6.如权利要求1所述的数据库集群系统负载均衡方法,其特征在于,集群控制器按设 定的周期更新所述序列。
7.一种数据库集群系统,该系统包括一个集群控制器和一个或多个数据库后端,其特 征在于,该集群控制器包括负载均衡决策组件、后端检测组件、用户请求分发组件和负载信息 表;其中,负载均衡决策组件用于执行负载均衡决策过程;后端检测组件用于执行后端负 载检测过程;负载信息表用于保存后端负载检测过程所得出的测量值;用户请求分发组件 用于暂存用户请求、发起后端负载检测过程、发起负载均衡决策过程、并将用户请求发至决 策结果确定的数据库后端;数据库后端节点包括通信组件、数据库服务器和负载测量组件;其中,通信组件用于接 收后端检测请求、发起负载测量、将负载测量值存入集群控制器中的负载信息表中,并接收 集群控制器发来的用户请求,将其发给数据库服务器执行,将得到的结果集返回至集群控 制器;数据库服务器用于接收通信组件发来的用户请求并作出应答;负载测量组件用于接 收通信组件发来的负载测量请求并作出应答。
8.如权利要求7所述的数据库集群系统,其特征在于,所述负载测量组件包括CPU使 用率检测模块、内存使用率检测模块、磁盘已占用空间检测模块、磁盘可用空间比例检测模 块、磁盘IO延迟检测模块和网络延迟检测模块。
全文摘要
本发明公开了一种数据库集群系统负载均衡方法和数据库集群系统,属于信息技术领域。本发明方法包括a)集群控制器采集各个数据库后端的各个指标值组成决策矩阵;b)根据决策矩阵计算带权重的归一化矩阵;c)计算各个数据库后端和正负理想解之间的距离;d)按距离差值由大到小排序,集群控制器根据此序列调用数据库后端。本发明系统包括一个集群控制器和一个或多个数据库后端,前者包括负载均衡决策组件、后端检测组件、用户请求分发组件和负载信息表;后者包括通信组件、数据库服务器和负载测量组件。本发明可用于数据库集群系统。
文档编号G06F17/30GK101841565SQ20101015490
公开日2010年9月22日 申请日期2010年4月20日 优先权日2010年4月20日
发明者付艳艳, 张大朋, 殷佳欣, 王伏根, 陈驰 申请人:中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1