• / 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://www.rgyfuv.icu/p-6100718.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图