太阳城集团

  • / 11
  • 下载费用:30 金币  

一种基于KVM云平台的分布式数据库系统实现自动伸缩负载均衡的方法.pdf

摘要
申请专利号:

CN201610431719.X

申请日:

2016.06.16

公开号:

太阳城集团CN106257424A

公开日:

2016.12.28

当前法律状态:

授权

有效性:

有权

法律详情: 授权|||实质审查的生效IPC(主分类):G06F 9/50申请日:20160616|||公开
IPC分类号: G06F9/50; G06F17/30 主分类号: G06F9/50
申请人: 山东大学
发明人: 袁东风; 曹野
地址: 250199 山东省济南市历城区山大南路27号
优先权:
专利代理机构: 济南金迪知识产权代理有限公司 37219 代理人: 杨树云
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

太阳城集团CN201610431719.X

授权太阳城集团号:

||||||

法律状态太阳城集团日:

2019.03.22|||2017.01.25|||2016.12.28

法律状态类型:

太阳城集团授权|||实质审查的生效|||公开

摘要

本发明涉及一种基于KVM云平台的分布式数据库系统实现自动伸缩负载均衡的方法,具体包括:每个数据库服务器节点自我监控CPU使用量,当在Timer太阳城集团段内,CPU使用量的峰值的均值大于或等于设置的Timer太阳城集团段的阈值上限时,向MON进程发送卸载负载请求,CPU使用量的峰值的均值小于或等于设置的Timer太阳城集团段的阈值下限时,向MON进程发送增加负载请求;本发明构建一个高性能的分布式关系型数据库,可以在集群能在不间断提供服务而且保持数据一致性的情况下进行自动伸缩以实现负载的自动均衡,直接降低了数据库因负载过高而宕机的可能性。

权利要求书

1.一种基于KVM云平台的分布式数据库系统实现自动伸缩负载均衡的方法,其特征在
于,所述分布式数据库系统为一个KVM集群,包括一个MON进程、若干个KVM集群服务器、
GUESTAgent用户进程,所述GUESTAgent用户进程分别连接所述MON进程及所述若干个KVM集
群服务器,所述MON进程分别连接所述若干个KVM集群服务器;
所述若干个KVM集群服务器具有相同的网络环境并配置libvirt开发接口,KVM集群服
务器中运行若干个数据库服务器节点,每个数据库服务器节点具有相同的数据库软件环境
和运行Task Agent进程;所述MON进程根据需要运行在所述KVM集群服务器上;GUESTAgent
用户进程根据需要运行在数据库服务器节点或KVM集群服务器上,用于对数据库中的数据
进行增删改查操作,所述分布式数据库系统设置Timer太阳城集团段的负载阈值,包括Timer太阳城集团
段的阈值上限及Timer太阳城集团段的阈值下限;具体步骤包括:
(1)每个数据库服务器节点自我监控CPU使用量,当在Timer太阳城集团段内,CPU使用量的峰
值的均值大于或等于设置的Timer太阳城集团段的阈值上限时,进入步骤(2),CPU使用量的峰值的
均值小于或等于设置的Timer太阳城集团段的阈值下限时,进入步骤(3);
(2)向MON进程发送卸载负载请求,MON进程接收到此请求,通过libvirt开发接口向KVM
集群的服务器节点发送创建新的数据库服务器节点请求,数据库服务器节点被创建启动后
运行自启动脚本和服务,向MON进程发送加入所述KVM集群请求,MON进程将此数据库服务器
节点加入集群并将之前申请卸负载数据库服务器节点所分配的任务取一半给新加入数据
库服务器节点,同时向所有GUESTAgent用户进程和新加入数据库服务器节点发送数据同步
信号,进入数据同步流程,数据同步完成后,所述KVM集群进入正常工作状态,集群扩张完
成;
(3)向MON进程发送增加负载请求,MON进程在接收到两个增加负载请求时,将第二个申
请增加负载请求的数据库服务器节点的任务合并至第一个申请增加负载请求的数据库服
务器节点中,同时向所有GUESTAgent用户进程和第一个申请增加负载请求的数据库服务器
节点发送数据同步信号,进入数据同步流程,数据同步完成后,所述KVM集群进入正常工作
状态,集群扩张完成。
2.根据权利要求1所述的一种基于KVM云平台的分布式数据库系统实现自动伸缩负载
均衡的方法,其特征在于,所述数据同步流程,具体步骤包括:
a、数据库服务器节点向MON进程中的任务调度器发送注册请求;
b、MON进程获取注册请求后,锁定数据库服务器节点和GUESTAgent用户进程添加数据
行为;
c、按照一致性哈希算法为步骤b所述数据库服务器节点分配哈希索引范围,所述数据
库服务器节点进入预备状态,同时向其它所有的GUESTAgent用户进程发出更新所述KVM集
群的信号,发送新集群任务分配表;
d、其它所有的GUESTAgent用户进程在收到更新所述KVM集群的信号后,尝试连接所述
数据库服务器节点,并检测所述数据库服务器节点的数据库结构,如果成功,其它的
GUESTAgent用户进程进入预备状态,并向MON进程返回确认太阳城集团;在预备状态中,其它的
GUESTAgent用户进程所有的查询、更新、删除和插入动作都按照原哈希索引范围进行;同时
在预备状态中,如果某条操作语句的哈希索引在所述数据库服务器节点的哈希索引范围
内,则将所述操作语句发送至所述数据库服务器节点中的任务代理进程,任务代理将此条
语句添加进自己的任务队列;
e、MON进程接收到其它所有的GUESTAgent用户进程的确认太阳城集团后,向所述数据库服务
器节点发送同步数据启动指令;
f、所述数据库服务器节点获取同步数据启动指令,根据新集群任务分配表中被分配的
任务范围,开始定位数据,读取数据,并写入所述数据库服务器节点中的本地数据库中;
g、执行完步骤f后,执行所述数据库服务器节点中的任务代理中任务队列内的操作语
句;
h、执行完步骤g后,向MON进程发送数据同步信号,此时在接收其它所有的GUESTAgent
用户进程的语句并执行的同时,向对应的其它所有的GUESTAgent用户进程返回数据同步完
毕信号;
i、其它所有的GUESTAgent用户进程接收到同步完毕信号后,将原集群任务分配表抛
弃,此后按照新新集群任务分配表执行;
j、MON进程获取同步完毕信号,放开数据库服务器节点和用户进程GUESTAgent添加数
据行为,允许新GUESTAgent用户进程加入,整个数据同步流程完毕。

说明书

一种基于KVM云平台的分布式数据库系统实现自动伸缩负载均衡的方法

技术领域

本发明涉及一种基于KVM云平台的分布式数据库系统实现自动伸缩负载均衡的方
法,属于云计算技术领域。

背景技术

KVM,Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自
Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管
理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。

云计算平台因其成本、性能上的优点和其特有的按需分配的特性正在广泛替代传
统的IT服务服务器架构,从传统的太阳城集团服务平台到分布式计算、大数据挖掘、机器学习等领
域,在节省了大量硬件成本和人工成本的同时,由于其灵活的调度特性,为各种弹性分布式
系统提供了基础平台。

基于关系型数据的电子商务系统、交易系统等常见系统由于对数据库特殊性能需
求,使得关系型数据库短太阳城集团内无法被其他类型数据库有效替代,由于数据量的处理要求
不断增长,对传统的关系型数据库的承载能力也提出了更高的要求,传统单点关系型数据
库性能受制于电子硬件性能发展,无法短太阳城集团内在性能上有长足提升,因此,分布式的关系
型数据库也成为了人们广泛关注的对象。

发明内容

针对现有技术的不足,本发明提供了一种基于KVM云平台的分布式数据库系统实
现自动伸缩负载均衡的方法;

本发明构建一个高性能的分布式关系型数据库,可以在集群能在不间断提供服务
而且保持数据一致性的情况下进行自动伸缩以实现负载的自动均衡,直接降低了数据库因
负载过高而宕机的可能性。

本发明的技术方案为:

一种基于KVM云平台的分布式数据库系统实现自动伸缩负载均衡的方法,所述分
布式数据库系统为一个KVM集群,包括一个MON进程、若干个KVM集群服务器、GUESTAgent用
户进程,所述GUESTAgent用户进程分别连接所述MON进程及所述若干个KVM集群服务器,所
述MON进程分别连接所述若干个KVM集群服务器;

所述若干个KVM集群服务器具有相同的网络环境并配置libvirt开发接口,KVM集
群服务器中运行若干个数据库服务器节点,每个数据库服务器节点具有相同的数据库软件
环境和运行TaskAgent进程;所述MON进程根据需要运行在所述KVM集群服务器上;
GUESTAgent用户进程根据需要运行在数据库服务器节点或KVM集群服务器上,用于对数据
库中的数据进行增删改查操作,所述分布式数据库系统设置Timer太阳城集团段的负载阈值,包括
Timer太阳城集团段的阈值上限及Timer太阳城集团段的阈值下限;具体步骤包括:

(1)每个数据库服务器节点自我监控CPU使用量,当在Timer太阳城集团段内,CPU使用量
的峰值的均值大于或等于设置的Timer太阳城集团段的阈值上限时,进入步骤(2),CPU使用量的峰
值的均值小于或等于设置的Timer太阳城集团段的阈值下限时,进入步骤(3);

(2)向MON进程发送卸载负载请求,MON进程接收到此请求,通过libvirt开发接口
向KVM集群的服务器节点发送创建新的数据库服务器节点请求,新数据库服务器节点被创
建启动后运行自启动脚本和服务,向MON进程发送加入所述KVM集群请求,MON进程将此数据
库服务器节点加入集群并将之前申请卸负载数据库服务器节点所分配的任务取一半给新
加入数据库服务器节点,同时向所有GUESTAgent用户进程和新加入数据库服务器节点发送
数据同步信号,进入数据同步流程,数据同步完成后,所述KVM集群进入正常工作状态,集群
扩张完成;

(3)向MON进程发送增加负载请求,MON进程在接收到两个增加负载请求时,将第二
个申请增加负载请求的数据库服务器节点的任务合并至第一个申请增加负载请求的数据
库服务器节点中,同时向所有GUESTAgent用户进程和第一个申请增加负载请求的数据库服
务器节点发送数据同步信号,进入数据同步流程,数据同步完成后,所述KVM集群进入正常
工作状态,集群扩张完成。

根据本发明优选的,所述数据同步流程,具体步骤包括:

a、数据库服务器节点向MON进程中的任务调度器发送注册请求;

b、MON进程获取注册请求后,锁定数据库服务器节点和GUESTAgent用户进程添加
数据行为;在迁移期间,不允许新的数据库服务器节点和GUESTAgent用户进程进行注册。

c、按照一致性哈希算法为步骤b所述数据库服务器节点分配哈希索引范围,所述
数据库服务器节点进入预备状态,同时向其它所有的GUESTAgent用户进程发出更新所述
KVM集群的信号,发送新集群任务分配表;

d、其它所有的GUESTAgent用户进程在收到更新所述KVM集群的信号后,尝试连接
所述数据库服务器节点,并检测所述数据库服务器节点的数据库结构,如果成功,其它的
GUESTAgent用户进程进入预备状态,并向MON进程返回确认太阳城集团;在预备状态中,其它的
GUESTAgent用户进程所有的查询、更新、删除和插入动作都按照原哈希索引范围进行;同时
在预备状态中,如果某条操作语句的哈希索引在所述数据库服务器节点的哈希索引范围
内,则将所述操作语句发送至所述数据库服务器节点中的任务代理进程,任务代理将此条
语句添加进自己的任务队列;

e、MON进程接收到其它所有的GUESTAgent用户进程的确认太阳城集团后,向所述数据库
服务器节点发送同步数据启动指令;

f、所述数据库服务器节点获取同步数据启动指令,根据新集群任务分配表中被分
配的任务范围,开始定位数据,读取数据,并写入所述数据库服务器节点中的本地数据库
中;

g、执行完步骤f后,执行所述数据库服务器节点中的任务代理中任务队列内的操
作语句;

h、执行完步骤g后,向MON进程发送数据同步信号,此时在接收其它所有的
GUESTAgent用户进程的语句并执行的同时,向对应的其它所有的GUESTAgent用户进程返回
数据同步完毕信号;

i、其它所有的GUESTAgent用户进程接收到同步完毕信号后,将原集群任务分配表
抛弃,此后按照新新集群任务分配表执行;

j、MON进程获取同步完毕信号,放开数据库服务器节点和用户进程GUESTAgent添
加数据行为,允许新GUESTAgent用户进程加入,整个数据同步流程完毕。

所述分布式数据库系统采用一致性哈希分库分表算法,具体的步骤包括:

数据库建立时,输入数据库所需要的数据表名称,数据库系统对此数据表进行子
表建立,子表数量为TableNum,形成表_01至表_TableNum的数据表结构;

数据表建立时,要求规定主键名称,该主键名称存入MON进程中的DB_KEY序列之
中。

所述分布式数据库系统在对数据进行操作之前,要对数据操作语句进行语义分
析,具体的操作步骤为:

Ⅰ、对数据操作语句进行关键词过滤,获取是否有DB_KEY序列中已经存储的主键名
称,如果没有,进入步骤Ⅱ;如果有,进入步骤Ⅲ;

Ⅱ、采用下发任务的机制进行分布式操作,以提高系统效率,具体的步骤为:
GUESTAgent用户进程将读取数据操作语句的内部维护的NodeMap数据,所述NodeMap数据为
多对数据,每对数据为数据库服务器地址及其对应的哈希索引范围,获取数据库服务器地
址,并将此数据操作语句发送至每个数据库服务器节点中,每个数据库服务器节点获取到
该指令,则进行则执行该指令并将指令执行结果返回;

Ⅲ、通过语义分析将该数据操作语句分拆为具有层级结构的原子语句,通过对原
子语句进行语句过滤,过滤出该数据操作语句中的主键名称对应的值,对主键名称对应的
值进行哈希计算,获得哈希值,然后对此哈希值对TableNum取模,获得的结果作为哈希索引
HashIndex,将哈希索引HashIndex从NodeMap数据中进行查询,获取对应的数据库服务节点
地址,GUESTAgent用户进程对该数据库服务节点直接连接,并执行该数据操作语句,至此,
完成了数据的定位和操作。

本发明的有益效果为:

本发明构建一个高性能的分布式关系型数据库,可以在集群能在不间断提供服务
而且保持数据一致性的情况下进行自动伸缩以实现负载的自动均衡,直接降低了数据库因
负载过高而宕机的可能性。同时,由于其可伸缩的特性,可以灵活根据数据库用户的需求动
态调整数据库集群的吞吐性能,可以承受突发性的大量数据吞吐要求;此外,由于灵活的性
能调整特性,为云平台提供了一种可以更加灵活的云数据库服务方式,即按照实际数据吞
吐性能来提供云数据库服务。

附图说明

图1为本发明所述分布式数据库系统;

图2为本发明数据同步流程示意图;

图1、图2中,Monitor为MON进程;

Status Monitor为状态监控器进程;

Cluster Controller为服务器管理进程;

Guest为GUESTAgent用户进程;

Query processor为数据操作语句处理进程;

Result processor数据操作结果处理进程;

Task Distributor为数据操作语句分发进程;

NODE为KVM集群服务器;

Mysal Virtual Server为数据库服务器节点;

task Agent为Task Agent进程。

具体实施方式

下面结合说明书附图和实施例对本发明作进一步限定,但不限于此。

实施例

一种基于KVM云平台的分布式数据库系统实现自动伸缩负载均衡的方法,所述分
布式数据库系统为一个KVM集群,包括一个MON进程、若干个KVM集群服务器、GUESTAgent用
户进程,所述GUESTAgent用户进程分别连接所述MON进程及所述若干个KVM集群服务器,所
述MON进程分别连接所述若干个KVM集群服务器;如图1所示;

所述若干个KVM集群服务器具有相同的网络环境并配置libvirt开发接口,KVM集
群服务器中运行若干个数据库服务器节点,每个数据库服务器节点具有相同的数据库软件
环境和运行TaskAgent进程;所述MON进程根据需要运行在所述KVM集群服务器上;
GUESTAgent用户进程根据需要运行在数据库服务器节点或KVM集群服务器上,用于对数据
库中的数据进行增删改查操作,所述分布式数据库系统设置Timer太阳城集团段的负载阈值,包括
Timer太阳城集团段的阈值上限及Timer太阳城集团段的阈值下限;具体步骤包括:

(1)每个数据库服务器节点自我监控CPU使用量,当在Timer太阳城集团段内,CPU使用量
的峰值的均值大于或等于设置的Timer太阳城集团段的阈值上限时,进入步骤(2),CPU使用量的峰
值的均值小于或等于设置的Timer太阳城集团段的阈值下限时,进入步骤(3);

(2)向MON进程发送卸载负载请求,MON进程接收到此请求,通过libvirt开发接口
向KVM集群的服务器节点发送创建新的数据库服务器节点请求,数据库服务器节点被创建
启动后运行自启动脚本和服务,向MON进程发送加入所述KVM集群请求,MON进程将此数据库
服务器节点加入集群并将之前申请卸负载数据库服务器节点所分配的任务取一半给新加
入数据库服务器节点,同时向所有GUESTAgent用户进程和新加入数据库服务器节点发送数
据同步信号,进入数据同步流程,数据同步完成后,所述KVM集群进入正常工作状态,集群扩
张完成;

(3)向MON进程发送增加负载请求,MON进程在接收到两个增加负载请求时,将第二
个申请增加负载请求的数据库服务器节点的任务合并至第一个申请增加负载请求的数据
库服务器节点中,同时向所有GUESTAgent用户进程和第一个申请增加负载请求的数据库服
务器节点发送数据同步信号,进入数据同步流程,数据同步完成后,所述KVM集群进入正常
工作状态,集群扩张完成。

所述数据同步流程,如图2所示,具体步骤包括:

a、数据库服务器节点向MON进程中的任务调度器发送注册请求;

b、MON进程获取注册请求后,锁定数据库服务器节点和GUESTAgent用户进程添加
数据行为;在迁移期间,不允许新的数据库服务器节点和GUESTAgent用户进程进行注册。

c、按照一致性哈希算法为步骤b所述数据库服务器节点分配哈希索引范围,所述
数据库服务器节点进入预备状态,同时向其它所有的GUESTAgent用户进程发出更新所述
KVM集群的信号,发送新集群任务分配表;

d、其它所有的GUESTAgent用户进程在收到更新所述KVM集群的信号后,尝试连接
所述数据库服务器节点,并检测所述数据库服务器节点的数据库结构,如果成功,其它的
GUESTAgent用户进程进入预备状态,并向MON进程返回确认太阳城集团;在预备状态中,其它的
GUESTAgent用户进程所有的查询、更新、删除和插入动作都按照原哈希索引范围进行;同时
在预备状态中,如果某条操作语句的哈希索引在所述数据库服务器节点的哈希索引范围
内,则将所述操作语句发送至所述数据库服务器节点中的任务代理进程,任务代理将此条
语句添加进自己的任务队列;

e、MON进程接收到其它所有的GUESTAgent用户进程的确认太阳城集团后,向所述数据库
服务器节点发送同步数据启动指令;

f、所述数据库服务器节点获取同步数据启动指令,根据新集群任务分配表中被分
配的任务范围,开始定位数据,读取数据,并写入所述数据库服务器节点中的本地数据库
中;

g、执行完步骤f后,执行所述数据库服务器节点中的任务代理中任务队列内的操
作语句;

h、执行完步骤g后,向MON进程发送数据同步信号,此时在接收其它所有的
GUESTAgent用户进程的语句并执行的同时,向对应的其它所有的GUESTAgent用户进程返回
数据同步完毕信号;

i、其它所有的GUESTAgent用户进程接收到同步完毕信号后,将原集群任务分配表
抛弃,此后按照新新集群任务分配表执行;

j、MON进程获取同步完毕信号,放开数据库服务器节点和用户进程GUESTAgent添
加数据行为,允许新GUESTAgent用户进程加入,整个数据同步流程完毕。

所述分布式数据库系统采用一致性哈希分库分表算法,具体的步骤包括:

数据库建立时,输入数据库所需要的数据表名称,数据库系统对此数据表进行子
表建立,子表数量为TableNum,形成表_01至表_TableNum的数据表结构;

数据表建立时,要求规定主键名称,该主键名称存入MON进程中的DB_KEY序列之
中。

所述分布式数据库系统在对数据进行操作之前,要对数据操作语句进行语义分
析,具体的操作步骤为:

Ⅰ、对数据操作语句进行关键词过滤,获取是否有DB_KEY序列中已经存储的主键名
称,如果没有,进入步骤Ⅱ;如果有,进入步骤Ⅲ;

Ⅱ、采用下发任务的机制进行分布式操作,以提高系统效率,具体的步骤为:
GUESTAgent用户进程将读取数据操作语句的内部维护的NodeMap数据,所述NodeMap数据为
多对数据,每对数据为数据库服务器地址及其对应的哈希索引范围,获取数据库服务器地
址,并将此数据操作语句发送至每个数据库服务器节点中,每个数据库服务器节点获取到
该指令,则进行则执行该指令并将指令执行结果返回;

Ⅲ、通过语义分析将该数据操作语句分拆为具有层级结构的原子语句,通过对原
子语句进行语句过滤,过滤出该数据操作语句中的主键名称对应的值,对主键名称对应的
值进行哈希计算,获得哈希值,然后对此哈希值对TableNum取模,获得的结果作为哈希索引
HashIndex,将哈希索引HashIndex从NodeMap数据中进行查询,获取对应的数据库服务节点
地址,GUESTAgent用户进程对该数据库服务节点直接连接,并执行该数据操作语句,至此,
完成了数据的定位和操作。

关 键 词:
一种 基于 KVM 平台 分布式 数据库 系统 实现 自动 伸缩 负载 均衡 方法
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:一种基于KVM云平台的分布式数据库系统实现自动伸缩负载均衡的方法.pdf
链接地址:http://zh228.com/p-6100718.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');