一種分布式存儲系統的數據放置方法與流程
2023-06-20 08:01:36 3

本發明涉及分布式存儲技術領域,特別是涉及一種分布式存儲系統的數據放置方法。
背景技術:
在分布式存儲系統中,包含有多個節點,其中的一個為中心節點,多個節點協同工作完成各種任務。在具體實施中,為了提高系統的可靠性,通常需要提高數據的冗餘度。當發生寫數據塊的操作時,不僅首節點要存儲該數據塊,而且需要其它的節點存儲該數據塊的副本。這裡的首節點是指發起寫請求的客戶端所在的節點,即被直接寫入數據塊的節點。
現有技術中,對於同一個數據塊的副本的防止方法主要包括兩種。一種是順序放置策略,一種是隨機放置策略。順序放置策略:通常是把各個節點看成是邏輯有序的,在對副本進行分配時先將同一數據塊的所有副本進行編號,然後採用固定的映射方式將各個副本放置到對應序號的節點上。其缺點是當有節點進出(即結點增加或者刪除,如故障、擴減容)時,副本的均衡性很難保證,而重新排列節點順序恢復原有的數據分布又會帶來巨大的網絡傳輸開銷。隨機放置策略:通常是基於某個哈希函數來決定數據的放置目錄,因此更多的時候可以稱為偽隨機放置策略。該方式是通過中心節點負責決定所有副本的放置位置,由首節點完成多個副本的生成,然後按照中心節點得到的放置位置放置。其缺點與順序放置策略相同,節點動態進出(也即結點增加或者刪除,如故障、擴減容)中心結點的性能成為瓶頸,對系統的性能產生較大影響,同時該中心結點故障,也會影響整個系統的可靠性。
由此可見,如何克服由於節點動態進出而導致副本無法按照原有的計劃而進行存儲,從而造成系統可靠性降低的缺點是本領域技術人員亟待解決的問題。
技術實現要素:
本發明的目的是提供一種分布式存儲系統的數據放置方法,用於克服由於節點動態進出而導致副本無法按照原有的計劃而進行存儲,從而造成系統可靠性降低的問題。
為解決上述技術問題,本發明提供一種分布式存儲系統的數據放置方法,包括:
首節點在接收到寫數據塊的操作時,將所述數據塊的副本和副本計數值發送至節點列表中的任意一個中間節點;
中間節點在接收到所述副本後,存儲所述副本,並判斷當前副本計數值是否為0,如果不為0,則將當前副本計數值減1,將所述副本和當前副本計數值發送至當前節點列表中剩餘的任意一個中間節點,如果為0,則結束。
優選地,在當前副本計數值不為0的情況下還包括:
中間節點判斷當前節點列表中是否還存在未接收所述副本的中間節點;
如果存在,則將當前副本計數值減1,將所述副本和當前副本計數值發送至當前節點列表中剩餘的任意一個中間節點;
如果不存在,則判斷當前節點列表是否有新的中間節點加入;
如果有新的中間節點加入,則將當前副本計數值減1,將所述副本和當前副本計數值發送至新的中間節點;
如果沒有新的中間節點加入,則返回所述判斷當前節點列表是否有新的中間節點加入的步驟。
優選地,所述節點列表包含所述首節點和各中間節點的ip地址。
優選地,所述副本計數值小於所述節點列表中節點的總數量。
優選地,還包括:所述首節點記錄接收其發送的所述副本和所述副本計數值的中間節點。
優選地,還包括:各中間節點記錄接收其發送的所述副本和當前副本計數值的中間節點。
優選地,還包括:中心節點記錄所述數據塊和所述副本在所述首節點和各中間節點的傳輸軌跡。
優選地,還包括:所述中心節點實時更新當前分布式存儲系統中所述副本的數量。
優選地還包括:所述中心節點在所述副本的數量小於閾值時報警提示。
本發明所提供的分布式存儲系統的數據放置方法,通過節點間的轉發實現了副本的存儲,進而實現網絡中的異步寫操作,由於本方法並不需要將生成副本的開銷集中在一個節點上,而是分攤到各節點上,因此系統的性能不會隨著冗餘度的增加而降低,一定程度上保證了系統的可靠性。另外,由於是任意選取的節點,因此不需要預先設置發送規則,能夠有效地解決在動態網絡環境下副本的放置問題。
附圖說明
為了更清楚地說明本發明實施例,下面將對實施例中所需要使用的附圖做簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明實施例提供的一種分布式存儲系統的數據放置方法的流程圖;
圖2為本發明實施例提供的一種中間節點的數據放置方法的流程圖;
圖3為本發明實施例提供的另一種分布式存儲系統的數據放置方法的流程圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下,所獲得的所有其他實施例,都屬於本發明保護範圍。
本發明的核心是提供一種分布式存儲系統的數據放置方法。
為了使本技術領域的人員更好地理解本發明方案,下面結合附圖和具體實施方式對本發明作進一步的詳細說明。
圖1為本發明實施例提供的一種分布式存儲系統的數據放置方法的流程圖。如圖1所示,分布式存儲系統的數據放置方法的流程圖包括:
s10:首節點在接收到寫數據塊的操作時,將數據塊的副本和副本計數值發送至節點列表中的任意一個中間節點。
s11:中間節點在接收到副本後,存儲副本,並判斷當前副本計數值是否為0,如果不為0,則將當前副本計數值減1,將副本和當前副本計數值發送至當前節點列表中剩餘的任意一個中間節點,如果為0,則結束。
需要說明的是,本實施例中的首節點是指發起寫請求的客戶端所在的節點,即直接接收數據塊的節點。分布式存儲系統中,包含有多個節點,除了首節點的其餘節點都稱為中間節點。可以理解的是,由於分布式存儲系統中包含有中心節點,因此,中心節點可能為首節點也可能為中間節點。首節點與中間節點的工作方法不同,而各中間節點的工作方式均相同。作為優選的,副本計數值小於節點列表中節點的總數量。這裡的節點列表中的總數量是指初始值。
圖1中,雖然只示出兩個步驟,但是並不代表每個步驟只能執行一次,例如,對於同一個數據塊而言,步驟s10隻需要執行一次,而步驟s11則需要執行多次,步驟s11為重複步驟。
由於分布式存儲系統中是動態變化的,因此,節點列表也是實時變化的,在首節點接收到數據塊時,節點列表可能有10個節點,而在副本的傳輸過程中,可能節點列表只有5個節點,或者即使有10個節點,但是其中的節點已與最初的10個節點不同。在具體實施中,每個節點上均記錄當前分布式存儲系統中的其它節點的信息,即每個節點都存在節點列表,並實時通過定時刷新來添加、刪除進出系統的節點。
在步驟s11中,如果一個中間節點判斷出需要將副本發送至下一個中間節點時,需要通過當前節點列表選擇剩餘的一個中間節點,這裡的剩餘的中間節點是指未接收到副本的節點。例如,如果一個節點列表中有十個節點,第一個節點為首節點,第一個節點將副本和副本計數值發送至第二個節點,當第二個節點再發送副本和副本計數值時,第一個節點和第二個節點就不是剩餘的節點,第三個節點-第十個節點才是剩餘的節點,即第二個節點只能將副本和副本計數值發送給第三個節點-第十個節點中的任意一個節點。這樣做的目的是為了能夠避免副本重複發送給一個節點。
在具體實施中,作為優選的實施方式,節點列表包含首節點和各中間節點的ip地址。這樣使得首節點或中間節點在向其它中間節點發送副本和副本計數值時可以直接通過節點列表上的ip地址發送,無需再次查詢ip地址。
為了更加清楚本發明實施例中提到的中間節點的工作流程,本實施例中給出圖2。圖2為本發明實施例提供的一種中間節點的數據放置方法的流程圖。
本實施例提供的分布式存儲系統的數據放置方法,通過節點間的轉發實現了副本的存儲,進而實現網絡中的異步寫操作,由於本方法並不需要將生成副本的開銷集中在一個節點上,而是分攤到各節點上,因此系統的性能不會隨著冗餘度的增加而降低,一定程度上保證了系統的可靠性。另外,由於是任意選取的節點,因此不需要預先設置發送規則,能夠有效地解決在動態網絡環境下副本的放置問題。
在圖2的基礎上,在當前副本計數值不為0的情況下還包括:
s20:中間節點判斷當前節點列表中是否還存在未接收副本的中間節點;如果存在,進入步驟s112,如果不存在,進入步驟s21。
s21:判斷當前節點列表是否有新的中間節點加入;如果有新的中間節點加入,則進入步驟s22,否則,返回步驟s21。
s22:將當前副本計數值減1,將副本和當前副本計數值發送至新的中間節點;
s20:如果沒有新的中間節點加入,則返回判斷當前節點列表是否有新的中間節點加入的步驟。
通過增加步驟s20,可以避免當前副本計數值大於剩餘中間節點的數量而導致分布式存儲系統中,副本的實際數量沒有達到副本計數值。例如,如果副本計數值為10,在一個中間節點存儲了副本後,當前副本計數值為3,但是此時當前節點列表中的中間節點均已經保存了副本,此時與副本計數值10還差3個,說明副本的冗餘度還沒有達到預期值,系統的可靠性還不夠高。隨著系統的運行,當有新的中間節點加入時,則繼續執行中間節點的工作流程,本處不再贅述。可以理解的是,一個中間節點在接收到副本之後,將副本存儲,然後再將新的副本發送至下一個中間節點時,如果當前節點列表中不存在未接收副本的中間節點,則這個中間節點將會保存這個副本,等待新的中間節點加入。因此,本實施例中,起到一個緩存的作用,避免副本的丟失,而造成系統的冗餘度沒有達到預定的要求。
作為優選的實施方式,還包括:首節點記錄接收其發送的副本和副本計數值的中間節點。
作為優選的實施方式,還包括:各中間節點記錄接收其發送的副本和當前副本計數值的中間節點。
作為優選的實施方式,還包括:中心節點記錄數據塊和副本在首節點和各中間節點的傳輸軌跡。
上述三種優選的實施方式,可以在用戶查詢時,能夠向用戶提供副本在放置過程中的傳輸軌跡。由於中心節點是分布式存儲系統的重要節點,其可靠性要比其他節點的可靠性較高,因此,通過中心節點的記錄能夠保證傳輸軌跡的安全性。
作為優選的實施方式,還包括:中心節點實時更新當前分布式存儲系統中副本的數量。
由於分布式存儲系統在運行過程中,節點的進出是不固定的,隨著節點的進出,都有可能影響一個數據塊的副本的數量,例如,一個節點存儲了一個副本,如果這個節點故障,退出系統後,則當前系統內的這個副本的數量就少了一個,很顯然降低了副本的冗餘度,也降低了系統的可靠性。通過更新副本的數量可以隨時了解系統的運行情況,也可以為後續的補救措施提供依據。
作為優選的實施方式,還包括:中心節點在副本的數量小於閾值時報警提示。
對於有些副本來說,是非常重要的信息,一旦丟失造成的後果非常嚴重,因此,為了避免副本的大量丟失,本實施例中,在副本數量小於閾值時報警提示。可以理解的是,閾值的確定需要根據實際情況而定,本實施例不再贅述。
以上對本發明所提供的分布式存儲系統的數據放置方法進行了詳細介紹。說明書中各個實施例採用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對於實施例公開的裝置而言,由於其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。應當指出,對於本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以對本發明進行若干改進和修飾,這些改進和修飾也落入本發明權利要求的保護範圍內。
還需要說明的是,在本說明書中,諸如第一和第二等之類的關係術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關係或者順序。而且,術語「包括」、「包含」或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句「包括一個……」限定的要素,並不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。