基於二級映射的集群動態擴展方法
2023-05-05 11:12:41 1
專利名稱:基於二級映射的集群動態擴展方法
技術領域:
本發明涉及一種基於二級映射的集群動態擴展方法,屬於資料庫系統應用技術領 域。
背景技術:
無論是網絡還是資料庫集群,業務量的發展都超出了過去最樂觀的估計,即使按 照當時最優配置,也會很快遇到硬體的瓶頸。如何高效、快速、可靠地存儲日益增長的用戶 數據,就需要用到集群的擴展技術。
根據擴展過程中是否需要停止原系統,將集群的擴展性分為靜態擴展和動態擴 展。靜態擴展是指系統增減節點時,需要先停止當前運行的系統,然後根據節點增減的情況 進行重新配置,最後重新啟動整個系統,使之得以正常工作。動態擴展則是一種在線擴展, 系統增減節點時能夠自動適應這種變化,自動完成資源的遷移和重新配置,在無人幹涉的 情況下進行自動管理和自我維護。
當前的多數集群系統都只實現靜態擴展,只能實現數據節點的自動增加,但不能 適應節點減少的變化情況。靜態擴展不需要考慮數據容錯、分布式的元數據管理、資源動態 分配等問題,因而在實現上相對容易,但由此也帶來一些的問題,如系統擴展過程繁瑣、可 用性不高、管理和維護困難等。當節點數增加到幾十或幾百時,靜態擴展的繁瑣程度將使管 理員難以忍受,因為中間任何環節出錯都將導致系統擴展失敗。更為重要的是,在此期間整 個系統不能對外提供服務,這對於實時性和可用性要求高的應用業務來說是致命的。
資料庫集群需要在元資料庫裡保存管理節點和數據節點的分布信息。這些分布信 息是集群系統裡最重要的基礎性信息,它維護了整個集群的部署架構,集群就是賴於這些 信息運轉。一個Siare-Nothing架構的資料庫集群的部署架構信息類似一個樹結構,無論 採用什麼存儲方法,都必須在元資料庫裡保存整個樹形結構。集群擴展的目的就是要對這 個樹形結構進行更改,增加或刪除樹的葉子節點,基本原理如圖1所示。
與集群架構相似的,分布在集群中各個節點上的數據也需要維護這樣一個樹形 結構來描述這些數據的分布情況。但是Siare-Nothing架構的集群為了實現數據的負 載均衡,都需要通過一定的分布方法對數據進行均勻分發,最常用的均勻分發方法就是 hash (哈希)方法。但是hash方法要求實現固定hash基數,一旦hash分發之後基數就不 能再改動,這與集群的動態擴展理念是相悖的。發明內容
為了解決上述問題,本發明提出了一種基於二級映射集群動態擴展的方法,它可 以在滿足負載分布均衡的基礎上,實現對資料庫集群進行任意規模的擴展,而不需要停止 集群服務和應用業務。
本發明採用的技術方案如下
一種基於二級映射的集群動態擴展方法,包括以下步驟
1)在第一維對集群的數據按照hash方法進行負載的均衡分布,這是第一級映射, 在第一維的基礎上採用一個M:N的映射表來進行第二級的映射;
2)通過更改第二維的映射表來動態增加新增節點,即實現集群的動態擴展。
所述步驟1)進一步分為以下步驟
1. 1)為集群創建表和11£1吐分布,該表中包括欄位沉(1、811(^討10、0(11,並將第一級 的分布信息存儲在元資料庫中,其中0id為對象在資料庫中的唯一標識;BucketID為經過 hash分布之後的hash桶號;Ddl為創建該表的sql語句;
1. 2)建立映射表,將hash桶號對節點號的映射關係信息存入元資料庫中;
1. 3)導入數據,並提供查詢服務。
所述步驟2、進一步分為以下步驟
2. 1)對新節點進行表模式定義,由於新增節點要存儲表數據,因此必須對新增節 點創建同其它節點一樣的表模式,根據元資料庫中保存的表的模式信息對新節點進行模式 定義;
2. 2)對元資料庫的二級映射表通過進行增加操作,來更改桶號BucketID所對應 的數據節點號NodeID ;
2.3)新增節點之後,當需要導入數據時,為了維持負載的均衡,將該hash桶的新 增數據都導入新增節點,直到同一個hash桶對應的節點負載一致之後,新增數據將被循環 地導入該hash桶對應的各個節點;如果是查詢,首先根據表名查找一級映射表獲得該表對 應的所有桶號,然後根據桶號查找二級映射表獲得對應所有節點位置,並對所有位置應用 該查詢。
在所述步驟1. 1)中,Hash桶數的選擇至少為節點數的2倍。
在所述步驟1. 中,無論導入數據,還是查詢,首先都要定位目標數據的位置,如 果是導入數據,第一步先根據數據的hash鍵值進行hash,獲得對應的桶號,第二步根據桶 號查找二級映射表獲得對應的目標數據節點位置,從而將數據導入該數據節點;如果是查 詢,首先根據表名查找一級映射表獲得該表對應的所有桶號,然後根據桶號查找二級映射 表獲得對應節點位置,並對所有位置應用該查詢。
本發明具有以下優點
1.使用了二級映射方法,既保留了集群中常用的hash分發方法的數據分布負載 均衡特點,又支持了動態擴展的需要。
2.利用元資料庫的事務特性保證了對二級映射表更新時的讀寫隔離性,保證了擴 展的動態在線。
3.和靜態擴展技術動輒需要停機幾分鐘相比,本動態擴展技術不僅不需停止應用 業務,而且操作簡單,每擴展一個節點的時間在秒級。
圖1為集群擴展的基本原理圖2為二級映射原理圖3為動態擴展原理圖。
具體實施方式
本發明方法是基用一種二級映射的方法來實現滿足負載均衡的動態擴展技術。即 首先在第一維對集群的數據按照hash方法進行負載的均衡分布,這是第一級映射。在第一 維的基礎上採用一個M N的映射表來進行第二級的映射,其中M代表經過hash分布之後的 hash桶數,N代表集群的數據節點數。從而在第一維實現數據的分布負載均衡,在第二維實 現集群的動態擴展。
本發明方法主要包括以下步驟
數據分布階段
步驟一
為集群創建數據表,並對數據表進行hash分布,並將第一級的hash分布信息存儲 在元資料庫中。所謂進行hash分布就是對數據表中的數據根據某一個屬性(這個屬性被 稱為分布屬性)使用hash函數進行計算獲得hash桶號。Hash桶數的選擇至少為節點數 的2倍。例如表T的Oid(對象在資料庫中的唯一標識)為33沈3,對其進行hash分布,分 布到8個桶中。存儲的格式如下其中Oid為對象在資料庫中的唯一標識;BucketID為經 過hash分布之後的hash桶號;DDL為創建該表的sql語句。下表就是一個一級映射表的例子。
權利要求
1.一種基於二級映射的集群動態擴展方法,其特徵在於包括以下步驟1)在第一維對集群的數據按照hash方法進行負載的均衡分布,這是第一級映射,在第 一維的基礎上採用一個M:N的映射表來進行第二級的映射,此處,M代表經過hash分布之 後的hash桶數,N代表集群的數據節點數;2)通過更改第二維的映射表來動態增加新增節點,即實現集群的動態擴展。
2.如權利要求1所述的基於二級映射的集群動態擴展方法,其特徵在於所述步驟1)進一步分為以下步驟1.1)為集群創建表和—吐分布,該表中包括欄位沉(1、811(^討10、0(11,並將第一級的分 布信息存儲在元資料庫中,其中0id為對象在資料庫中的唯一標識;BucketID為經過hash 分布之後的hash桶號;Ddl為創建該表的sql語句;1.2)建立映射表,將hash桶號對節點號的映射關係信息存入元資料庫中;1.3)導入數據,並提供查詢服務。
3.如權利要求1所述的基於二級映射的集群動態擴展方法,其特徵在於所述步驟2、進一步分為以下步驟2.1)對新節點進行表模式定義,由於新增節點要存儲表數據,因此必須對新增節點創 建同其它節點一樣的表模式,根據元資料庫中保存的表的模式信息對新節點進行模式定 義;2. 2)對元資料庫的二級映射表通過進行增加操作,來更改桶號BucketID所對應的數 據節點號NodeID ;2. 3)新增節點之後,當需要導入數據時,為了維持負載的均衡,將該hash桶的新增數 據都導入新增節點,直到同一個hash桶對應的節點負載一致之後,新增數據將被循環地導 入該hash桶對應的各個節點;如果是查詢,首先根據表名查找一級映射表獲得該表對應的 所有桶號,然後根據桶號查找二級映射表獲得對應所有節點位置,並對所有位置應用該查 詢。
4.如權利要求2所述的基於二級映射的集群動態擴展方法,其特徵在於在所述步驟1. 1)中,Hash桶數的選擇至少為節點數的2倍。
5.如權利要求2所述的基於二級映射的集群動態擴展方法,其特徵在於在所述步驟1. 中,無論導入數據,還是查詢,首先都要定位目標數據的位置,如果是 導入數據,第一步先根據數據的hash鍵值進行hash,獲得對應的桶號,第二步根據桶號查 找二級映射表獲得對應的目標數據節點位置,從而將數據導入該數據節點;如果是查詢,首 先根據表名查找一級映射表獲得該表對應的所有桶號,然後根據桶號查找二級映射表獲得 對應節點位置,並對所有位置應用該查詢。
全文摘要
本發明方法是基於一種二級映射的方法來實現滿足負載均衡的動態擴展技術。即首先在第一維對集群的數據按照hash方法進行負載的均衡分布,這是第一級映射。在第一維的基礎上採用一個M:N的映射表來進行第二級的映射,從而在第一維實現數據的分布負載均衡,在第二維實現集群的動態擴展。本發明使用了二級映射方法,既保留了集群中常用的hash分發方法的數據分布負載均衡特點,又支持了動態擴展的需要。同時利用了元資料庫的事務特性保證了對二級映射表更新時的讀寫隔離性,保證了擴展的動態在線。和靜態擴展技術動輒需要停機幾分鐘相比,本發明不僅不需停止應用業務,而且操作簡單,每擴展一個節點的時間在秒級。
文檔編號G06F17/30GK102033938SQ201010597139
公開日2011年4月27日 申請日期2010年12月10日 優先權日2010年12月10日
發明者何清法, 馮柯, 劉榮, 徐巖, 李曉鵬, 李陽, 蔣志勇, 謝衛平, 賈宗秀, 顧雲蘇 申請人:天津神舟通用數據技術有限公司