為數據副本設定獨立的權重因子和速度因子的方法
【專利摘要】為數據副本設定獨立的權重因子和速度因子的方法涉及計算機技術領域。本發明主要是為每個數據副本增加一個權重,在數據讀寫的時候按照權重大小來依次對數據副本做讀寫,權重越高,越優先讀寫;本發明對數據寫成功的返回條件可以設定,按照數據副本的權重滿足設定的一致性原則,提高了系統的寫效率,降低延遲;本發明根據存儲節點的各自的性能設定不同速度因子,對性能好節點優先讀寫。
【專利說明】
為數據副本設定獨立的權重因子和速度因子的方法
技術領域
[0001 ]本發明涉及計算機技術領域,尤其是計算機數據存儲領域。
【背景技術】
[0002] 在軟件定義存儲,分布式計算,以及大數據的應用中,都使用數據副本來存儲數 據。數據副本就是一份數據一般有2或者3個副本,分別存儲在不同的存儲節點中,目的是為 了保證數據一致性和完整性。
[0003] 下面以三個數據副本為例來詳細說明。假設有100M的數據需要存儲,有3個副本, 那么有同樣的100M的數據分別存儲在3個存儲節點上。這樣即使某個或者某兩個存儲節點 失敗,數據還是完整的,不會出現數據丟失。100M的數據如何存儲在存儲節點通過元數據表 來定義。
[0004] 元數據表不是實際的數據,而是對實際數據存儲位置的描述。假設100M按照4M- 個單位來存儲,那么就需要100M/4M = 25個元數據描述。具體如下表:
在傳統的數據副本存儲中,每個節點的數據都是等權重的,按上述的例子,要寫入一個 4M數據,需要3個節點的3個副本都完成寫入操作并正確返回才算是一次寫操作完成。要讀 出一個4M數據,可以隨機從這3個節點中任何一個讀出。以上讀寫操作沒有考慮性能開銷, 假設其中一個節點是一臺配置不高的機器,讀寫性能較差,那么就會存在性能瓶頸,導致讀 寫延遲。在一個較大服務器群中,服務器的性能和配置差別較大,這樣依據現有的技術,整 個系統的性能被更新慢的服務器拖累。本發明設計了數據副本權重,通過權重來設定數據 副本的讀寫順序和一致性檢查,達到性能和數據完整性之間的平衡。
【發明內容】
[0005] 本發明的為數據副本設定獨立的權重因子和速度因子的方法主要是為每個數據 副本增加一個權重,在數據讀寫的時候按照權重大小來依次對數據副本做讀寫,權重越高, 越優先讀寫;本發明對數據寫成功的返回條件可以設定,按照數據副本的權重滿足設定的 一致性原則,提高了系統的寫效率,降低延遲;本發明根據存儲節點的各自的性能設定不同 速度因子,對性能好節點優先讀寫。
[0006] 為數據副本設定獨立的權重因子和速度因子的方法,其實現步驟如下: 1. 為每個數據副本設定獨立的權重因子,設定原則是有且只有一個副本是高權重因 子,其它副本是低等權重因子; 2. 數據副本高權重因子的設定算法是N減去1,N為數據副本數,其它數據副本為低等權 重因子,低等權重因子全部設定為1 ; 3. 為每個數據副本設定獨立速度因子,速度因子跟數據副本所存放的存儲節點讀寫性 能有關,讀與性能越尚,速度因子值越大; 4. 數據副本速度因子最大值設定算法是:1/(N+1),N為數據副本數;其它數據副本的 速度因子根據節點性能等級,可以自由設置,但是不能超過最大值,而且根據算法,所有數 據副本的速度因子總和小于1; 5. 權重因子加速度因子作為數據副本權重;數據寫順序按數據副本權重依次寫,數據 讀順序按速度因子大小次序讀; 6. 數據副本具有強一致性原則和弱一致性原則,數據副本權重之和大于或者等于的數 據副本數,就認為滿足數據強一致性原則,在沒有節點失敗的情況下,數據副本必須滿足強 一致性原則;數據副本權重之和大于或者等于的數據副本數減1,就認為符合數據弱一致性 原則;在有節點失敗的情況下,數據副本要求滿足弱一致性原則。
[0007] 為數據副本設定獨立的權重因子和速度因子的方法,其實現步驟也可以描述為: 步驟S01.為系統設定使用的一致性原則,可以選擇強一致性原則或弱一致性原則; 步驟S02.為每個數據副本設定獨立的權重因子; 步驟S03.為每個數據副本設定獨立的速度因子; 步驟S04.為每個數據副本設定副本權重; 步驟S05.數據寫操作,按數據副本權重依次寫; 步驟S06.數據讀操作,按數據副本速度因子大小從大往小讀。
【附圖說明】
[0008] 圖1是本發明的實現流程圖。
【具體實施方式】
[0009] 參看圖1,實現本發明的為數據副本設定獨立的權重因子和速度因子的方法的實 施例如下: 假設有100M的數據需要存儲,按照3個副本方式存儲在10個存儲節點上,按照10M-個 單元來存儲,傳統的數據分布表如下:
X表示節點上數據副本分布,每個存儲節點都有3個數據副本。本發明在傳統的數據分 布基礎上設計一個權重因子,設定原則有且只有一個副本是高權重,這個例子中,高權重因 子是3-1=2,其它副本是等低權重,都是1。這樣上述的數據分布表就變化為:
X表不有數據分布,2表不權重因子為2,1表不權重因子為1。 在實際環境中,有可能這10個存儲節點性能不一致,因此本專利設計了一個速度因子, 讀寫性能越高,速度因子值越大,這個最大值設定為l/(n+l)。那么所有節點速度因子加起 來的最大值也小于或等于n/(n+l),小于1。這樣的設計是為了在后面計算總權重的時候,速 度因子不會影響到權重因子,權重因子大的權重肯定大。
[0010] 其它數據副本的速度因子根據節點性能可以自由設置,可以無限分級。延續上面 的例子,假設10個節點中,有節點1、4、7的性能高于節點2、5、8,而節點2、5、8高于節點3、6, 節點3、6高于節點9、10。這相當于有4檔,根據專利對速度因子的設計,最高檔的速度因子值 為1/( 3+1 )=0.25,那么第二檔設置為0.2,第三檔設計為0.1,第四檔設計為0.5。
[0011] 數據分配表中速度因子如下下表:
權重因子+速度因子=數據副本權重。數據寫順序按數據副本權重依次寫,數據讀順序 按速度因子大小次序讀。
[0012]繼續上述的例子,權重因子+速度因子后的數據副本權重表如下:
X表示有數據分布,數值表示數據副本權重。
[0013] 有了這個表后,對數據副本的讀寫就根據權重值來讀寫。比如要寫第5個10M數據, 最優先寫節點5的數據副本,然后寫節點7的數據副本,最后寫節點6的數據副本。如果要讀 第5個10M數據,最優先讀是節點7數據,如果節點7的數據被堵塞,則讀節點5的數據副本。
[0014] 傳統的數據數據副本的一致性原則主要體現在寫操作過程。一份數據寫成功意味 著所有節點上的數據副本都寫成功。如果有的節點性能很低,這個節點就會成為寫性能的 短板。按照本專利設計的數據副本強一致原則,以上述的寫第5個10M數據例子來說,按權重 優先原則,只要寫節點5和節點7的數據,兩個節點寫成功后,權重值為2.2+1.25=3.45 > 3 (數據副本數),這時就可以認為寫完成了,挺高了寫的效率,降低了寫操作的延遲。
[0015] 在某個節點失敗情況,就要遵循弱一致性原則。還是用上述例子,有節點失敗可能 有3種情況,比較復雜,用下表來解釋(此時數據副本數減1 =2)
在上述的例子中,節點失敗情況下,無論是寫剩下2個節點還是單寫節點5都能滿足寫 成功,特別單寫節點5的情況,能在某個節點失敗的情況提供寫效率,降低寫延遲。在實際應 用場景中,可以根據數據的重要性來做進一步設定,比如存儲的是歷史備份數據,可以設置 為滿足弱一致性原則就可以了,就是允許單寫節點5情況出現。如果是生產環境,可以設置 為除了滿足弱一致性原則外,必須寫保證寫2個副本,這就保證了數據可靠性。
【主權項】
1. 為數據副本設定獨立的權重因子和速度因子的方法,其特征在于實現步驟包括: 1) 為每個數據副本設定獨立的權重因子,設定原則是有且只有一個副本是高權重因 子,其它副本是低等權重因子; 2) 數據副本高權重因子的設定算法是N減去1,N為數據副本數,其它數據副本為低等權 重因子,低等權重因子全部設定為1 ; 3) 為每個數據副本設定獨立速度因子,速度因子跟數據副本所存放的存儲節點讀寫性 能有關,讀與性能越尚,速度因子值越大; 4) 數據副本速度因子最大值設定算法是:1/(N+1),N為數據副本數;其它數據副本的 速度因子根據節點性能等級,可以自由設置,但是不能超過最大值,而且根據算法,所有數 據副本的速度因子總和小于1; 5) 權重因子加速度因子作為數據副本權重;數據寫順序按數據副本權重依次寫,數據 讀順序按速度因子大小次序讀; 6) 數據副本具有強一致性原則和弱一致性原則,數據副本權重之和大于或者等于的數 據副本數,就認為滿足數據強一致性原則,在沒有節點失敗的情況下,數據副本必須滿足強 一致性原則;數據副本權重之和大于或者等于的數據副本數減1,就認為符合數據弱一致性 原則;在有節點失敗的情況下,數據副本要求滿足弱一致性原則。2. 根據權利要求1所述的為數據副本設定獨立的權重因子和速度因子的方法,其特征 在于實現步驟可以描述為: 步驟SOI.為系統設定使用的一致性原則,可以選擇強一致性原則或弱一致性原則; 步驟S02.為每個數據副本設定獨立的權重因子; 步驟S03.為每個數據副本設定獨立的速度因子; 步驟S04.為每個數據副本設定副本權重; 步驟S05.數據寫操作,按數據副本權重依次寫; 步驟S06.數據讀操作,按數據副本速度因子大小從大往小讀。
【文檔編號】G06F3/06GK106095336SQ201610401472
【公開日】2016年11月9日
【申請日】2016年6月10日
【發明人】關寧風
【申請人】北京銀信長遠科技股份有限公司