分布式存儲系統(tǒng)、集群節(jié)點及其區(qū)間管理方法
【專利摘要】一種分布式存儲系統(tǒng)、集群節(jié)點及其區(qū)間管理方法,包括:集群節(jié)點按照配置參數(shù)將本地路由表中的第一路由表項對應的區(qū)間切分為至少兩個子區(qū)間,其中第一路由表項是指副本信息中記錄有表示該集群節(jié)點的信息的路由表項;集群節(jié)點為每個子區(qū)間分別創(chuàng)建一個日志隊列;以及集群節(jié)點根據(jù)來自客戶端的數(shù)據(jù)操作請求的關(guān)鍵字段確定對應的子區(qū)間,針對確定的子區(qū)間執(zhí)行相應的數(shù)據(jù)讀寫操作,并據(jù)此更新與對應的日志隊列。通過在集群節(jié)點上將一段連續(xù)的數(shù)據(jù)存儲區(qū)間切分為至少兩個子區(qū)間、并針對每個子區(qū)間創(chuàng)建并維護一個日志隊列,使得集群節(jié)點上原來針對整段區(qū)間的串行操作變成分別針對至少兩個子區(qū)間的并行操作,可以有效提高系統(tǒng)整體的吞吐量。
【專利說明】分布式存儲系統(tǒng)、集群節(jié)點及其區(qū)間管理方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及分布式存儲系統(tǒng),尤其涉及分布式存儲系統(tǒng)中的集群節(jié)點及其區(qū)間管 理方法。
【背景技術(shù)】
[0002] 分布式存儲系統(tǒng)的組網(wǎng)拓撲可如圖1所示,主要包括客戶端(client)、一個管理 (manager)節(jié)點和若干個集群(cluster)節(jié)點(node)。一般來說,一個節(jié)點就是一個物理 機,集群節(jié)點是主(master)節(jié)點和備(slave)節(jié)點的統(tǒng)稱,每個主節(jié)點對應有一個或多個 備節(jié)點,并且各個節(jié)點之間通過網(wǎng)絡進行通信。
[0003] 對于圖1所示的分布式存儲系統(tǒng),為了提高數(shù)據(jù)處理的吞吐量和整體性能,一般 對數(shù)據(jù)進行分片存儲和分片查詢。其中,常用的分片是進行區(qū)間切分(range partition), 即將一個大的數(shù)據(jù)存儲區(qū)間分成幾個小區(qū)間,每個節(jié)點(node)負責一段連續(xù)的區(qū)間。其 中,所謂"某個節(jié)點負責某個區(qū)間",是指由該節(jié)點管理、控制和/或執(zhí)行針對該區(qū)間的數(shù)據(jù) 讀寫操作。在進行讀寫操作時,客戶端會基于數(shù)據(jù)操作的關(guān)鍵字段遍歷路由表的表項,根據(jù) 表項內(nèi)的區(qū)間找到負責該區(qū)間的節(jié)點(主節(jié)點)上去執(zhí)行該讀寫操作。以下將主節(jié)點負責 的區(qū)間稱為路由區(qū)間(routing range),以表示客戶端能夠通過路由表找到負責該區(qū)間的 主節(jié)點并執(zhí)行相應的數(shù)據(jù)操作的意思。
[0004] 另一方面,為了可靠性的考慮,在分布式存儲系統(tǒng)中一般會為每個節(jié)點做至少一 個數(shù)據(jù)備份,并且備份數(shù)據(jù)通常分布在不同的節(jié)點上(備節(jié)點)。在進行主備間數(shù)據(jù)同 步時,主節(jié)點會向備節(jié)點發(fā)送包含數(shù)據(jù)操作記錄等信息的同步請求,備節(jié)點會響應于該同 步請求,基于數(shù)據(jù)操作記錄的關(guān)鍵字段遍歷路由表的表項,針對表項內(nèi)的區(qū)間進行相應 的備份數(shù)據(jù)同步操作。以下將主節(jié)點和備節(jié)點進行數(shù)據(jù)操作的區(qū)間稱為同步區(qū)間(sync range),以表示備節(jié)點能夠通過路由表找到該區(qū)間并執(zhí)行相應的備份數(shù)據(jù)同步操作的意 思。
[0005] 在現(xiàn)有技術(shù)中,路由區(qū)間和同步區(qū)間的大小是一致的。例如,假設節(jié)點A作為主 節(jié)點負責區(qū)間[0, 100],并且節(jié)點B作為節(jié)點A在區(qū)間[0, 100]上的備節(jié)點,則相對于客戶 端來說,區(qū)間[0, 100]是用于找到節(jié)點A的路由區(qū)間,而相對于節(jié)點A和節(jié)點B來說,區(qū)間 [0, 100]是兩者進行數(shù)據(jù)操作的同步區(qū)間。
[0006] 這使得,在集群節(jié)點個數(shù)一定的情況下,如果一個節(jié)點上維護的區(qū)間個數(shù)較少,例 如基于主鍵進行區(qū)間切分的數(shù)據(jù)庫Spinnake,則有可能出現(xiàn)多個線程競爭對同一個區(qū)間進 行數(shù)據(jù)操作的權(quán)限的情況,尤其對于一些熱點分區(qū),容易造成串行執(zhí)行現(xiàn)象。這勢必會導致 訪問時間的延長以及數(shù)據(jù)讀寫效率和備份效率的降低,從而影響系統(tǒng)的數(shù)據(jù)處理吞吐量。
[0007] 另一方面,在集群節(jié)點個數(shù)一定的情況下,如果一個節(jié)點上維護的區(qū)間個數(shù)較多, 例如基于主鍵和非主鍵均進行區(qū)間切分的分布式鍵值數(shù)據(jù)庫HyperDex,則由于路由區(qū)間的 個數(shù)比較多,從而會增加客戶端的路由開銷。
【發(fā)明內(nèi)容】
[0008] 有鑒于此,本發(fā)明實施例要解決的技術(shù)問題是,如何進行分布式存儲系統(tǒng)中的集 群節(jié)點上的區(qū)間管理,以在不增加客戶端的路由開銷的前提下有效提高系統(tǒng)的數(shù)據(jù)處理吞 吐量。
[0009] 為了解決上述技術(shù)問題,根據(jù)本發(fā)明實施例的第一方面,提供了一種區(qū)間管理方 法,該方法應用于包括集群節(jié)點和客戶端的分布式系統(tǒng)中的集群節(jié)點。該方法主要包括:所 述集群節(jié)點按照配置參數(shù)將與本地路由表中的第一路由表項對應的區(qū)間切分為至少兩個 子區(qū)間,其中,所述本地路由表包括至少一個路由表項,每個所述路由表項至少包括區(qū)間信 息和副本信息,所述區(qū)間信息表示與所述路由表項對應的區(qū)間的信息,所述副本信息用于 記錄與所述區(qū)間相對應的集群節(jié)點集的信息,所述第一路由表項是指所述副本信息中記錄 有表示所述集群節(jié)點的信息的路由表項;所述集群節(jié)點為每個所述子區(qū)間分別創(chuàng)建一個日 志隊列;在接收到來自所述客戶端的數(shù)據(jù)操作請求時,所述集群節(jié)點根據(jù)所述數(shù)據(jù)操作請 求的關(guān)鍵字段確定對應的子區(qū)間;所述集群節(jié)點根據(jù)確定的所述子區(qū)間執(zhí)行與所述數(shù)據(jù)操 作請求對應的數(shù)據(jù)讀寫操作,并根據(jù)所述數(shù)據(jù)讀寫操作更新與確定的所述子區(qū)間對應的日 志隊列。
[0010] 結(jié)合第一方面,在第一種可能的實現(xiàn)方式中,在所述集群節(jié)點更新了所述本地路 由表的情況下,該方法還包括:所述集群節(jié)點按照所述配置參數(shù)對更新后的所述本地路由 表中的第一路由表項對應的區(qū)間進行切分;對于在所述更新之后切分出的每個子區(qū)間,所 述集群節(jié)點判斷所述集群節(jié)點上是否存在與所述子區(qū)間對應的日志隊列;若所述集群節(jié)點 上存在與所述子區(qū)間對應的日志隊列,則所述集群節(jié)點基于所述第一路由表項中的副本信 息更新所述子區(qū)間對應的同步節(jié)點信息,其中所述同步節(jié)點信息表示在所述子區(qū)間上與所 述集群節(jié)點保持數(shù)據(jù)同步的其它集群節(jié)點的信息;以及若所述集群節(jié)點上不存在與所述子 區(qū)間對應的日志隊列,則所述集群節(jié)點為所述子區(qū)間創(chuàng)建一個日志隊列。
[0011] 結(jié)合第一方面的第一種實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,該方法還包括:對 于在所述集群節(jié)點上存在對應的日志隊列的每個子區(qū)間,所述集群節(jié)點判斷所述子區(qū)間是 否屬于結(jié)果集以及所述子區(qū)間對應的日志隊列是否為空;以及在所述子區(qū)間不屬于結(jié)果集 并且所述子區(qū)間對應的日志隊列為空的情況下,將所述子區(qū)間及所述子區(qū)間對應的日志隊 列從所述集群節(jié)點上刪除。其中,所述結(jié)果集是指根據(jù)所述配置參數(shù)對所述集群節(jié)點當前 的本地路由表中的第一路由表項對應的區(qū)間進行切分所得到的子區(qū)間的集合。
[0012] 結(jié)合第一方面、第一方面的第一種實現(xiàn)方式或第一方面的第二種實現(xiàn)方式,在第 三種可能的實現(xiàn)方式中,在所述集群節(jié)點按照配置參數(shù)將本地路由表中的第一路由表項對 應的區(qū)間切分為至少兩個子區(qū)間之后,還包括:所述集群節(jié)點向所述第一路由表項的副本 信息中記錄的其它集群節(jié)點發(fā)送切分請求。其中,所述切分請求包含表示所述區(qū)間的信息 以及所述配置參數(shù),以使所述其它集群節(jié)點也根據(jù)所述配置參數(shù)對所述區(qū)間進行切分。
[0013] 結(jié)合第一方面、第一方面的第一種實現(xiàn)方式、第一方面的第二種實現(xiàn)方式或第一 方面的第三種實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述集群節(jié)點根據(jù)所述數(shù)據(jù)操作請 求的關(guān)鍵字段確定對應的子區(qū)間,包括:所述集群節(jié)點對所述數(shù)據(jù)操作請求的關(guān)鍵字段按 照一定的哈希算法進行哈希;所述集群節(jié)點根據(jù)所述哈希的結(jié)果查找對應的子區(qū)間;以及 在未查找到對應的子空間的情況下,所述集群節(jié)點向所述客戶端返回表示路由錯誤的響 應。
[0014] 結(jié)合第一方面、第一方面的第一種實現(xiàn)方式、第一方面的第二種實現(xiàn)方式、第一方 面的第三種實現(xiàn)方式或第一方面的第四種實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,在所述 集群節(jié)點為每個所述子區(qū)間分別創(chuàng)建一個日志隊列之后,還包括:所述集群節(jié)點為每個所 述子區(qū)間單獨配置讀寫操作權(quán)限。
[0015] 結(jié)合第一方面的第五種實現(xiàn)方式,在第六種可能的實現(xiàn)方式中,所述集群節(jié)點根 據(jù)確定的所述子區(qū)間執(zhí)行相應的數(shù)據(jù)讀寫操作,并更新與確定的所述子區(qū)間對應的日志隊 列,包括:所述集群節(jié)點獲得確定的所述子區(qū)間的讀寫操作權(quán)限;所述集群節(jié)點將所述數(shù) 據(jù)操作請求的操作數(shù)據(jù)以新的序列號寫入與確定的所述子區(qū)間對應的日志隊列;以及所述 集群節(jié)點將所述操作數(shù)據(jù)寫入內(nèi)存,并向所述客戶端反饋處理結(jié)果。
[0016] 結(jié)合第一方面的第六種實現(xiàn)方式,在第七種可能的實現(xiàn)方式中,在所述集群節(jié)點 將所述操作數(shù)據(jù)寫入內(nèi)存之前,還包括:所述集群節(jié)點向所述第一路由表項的副本信息中 記錄的其它集群節(jié)點發(fā)送同步請求。其中,所述其它集群節(jié)點是指所述分布式存儲系統(tǒng)中 用于對所述集群節(jié)點在所述區(qū)間上的數(shù)據(jù)進行備份的節(jié)點;所述同步請求包含所述子區(qū)間 的信息以及所述操作數(shù)據(jù),以使所述其它集群節(jié)點基于所述子區(qū)間與所述集群節(jié)點保持數(shù) 據(jù)同步。
[0017] 結(jié)合第一方面和第一方面的上述所有可能的實現(xiàn)方式中的任意一種,在第八種可 能的實現(xiàn)方式中,所述配置參數(shù)為分段數(shù),所述分段數(shù)表示要從一個所述第一路由表項對 應的區(qū)間切分出的子區(qū)間的個數(shù)。
[0018] 結(jié)合第一方面的第七種可能的實現(xiàn)方式,在第九種可能的實現(xiàn)方式中,所述分段 數(shù)與表示所述區(qū)間的信息一起記錄在所述本地路由表中的與所述區(qū)間對應的路由表項內(nèi)。
[0019] 第二方面,本發(fā)明實施例還提供一種集群節(jié)點,該集群節(jié)點應用于包括集群節(jié)點 和客戶端的分布式系統(tǒng),主要包括:網(wǎng)絡模塊,與所述客戶端連接,用于接收來自所述客戶 端的數(shù)據(jù)操作請求;路由表管理模塊,與所述網(wǎng)絡模塊連接,用于管理所述集群節(jié)點的本地 路由表、處理所述數(shù)據(jù)操作請求、并按照配置參數(shù)將與所述本地路由表中的第一路由表項 對應的區(qū)間切分為至少兩個子區(qū)間,其中,所述本地路由表包括至少一個路由表項,每個所 述路由表項至少包括區(qū)間信息和副本信息,所述區(qū)間信息表示與所述路由表項對應的區(qū)間 的信息,所述副本信息用于記錄與所述區(qū)間相對應的集群節(jié)點集的信息,所述第一路由表 項是指所述副本信息中記錄有表示所述集群節(jié)點的信息的路由表項;數(shù)據(jù)同步管理模塊, 與所述網(wǎng)絡模塊以及所述路由表管理模塊連接,用于為每個所述子區(qū)間分別創(chuàng)建一個日志 隊列;以及存儲模塊,與所述數(shù)據(jù)同步管理模塊連接,用于進行數(shù)據(jù)存儲以及持久化。其中, 在所述網(wǎng)絡模塊接收到所述數(shù)據(jù)操作請求時:所述路由表管理模塊根據(jù)所述數(shù)據(jù)操作請求 的關(guān)鍵字段確定對應的子區(qū)間;所述數(shù)據(jù)同步管理模塊根據(jù)確定的所述子區(qū)間執(zhí)行與所述 數(shù)據(jù)操作請求對應的數(shù)據(jù)讀寫操作,并根據(jù)所述數(shù)據(jù)讀寫操作更新與確定的所述子區(qū)間對 應的日志隊列。
[0020] 結(jié)合第二方面,在第一種可能的實現(xiàn)方式中,所述網(wǎng)絡模塊還被配置為,接收所述 分布式系統(tǒng)的最新版本路由表;所述路由表管理模塊還被配置為,將所述本地路由表更新 為所述最新版本路由表,并按照所述配置參數(shù)對更新后的所述本地路由表中的第一路由表 項對應的區(qū)間進行切分;以及所述數(shù)據(jù)同步管理模塊還被配置為,對于在所述更新之后切 分出的每個子區(qū)間,判斷所述集群節(jié)點上是否存在與所述子區(qū)間對應的日志隊列,若判斷 結(jié)果為存在與所述子區(qū)間對應的日志隊列,則所述數(shù)據(jù)同步管理模塊基于所述第一路由表 項中的副本信息更新所述子區(qū)間對應的同步節(jié)點信息,其中所述同步節(jié)點信息表示在所述 子區(qū)間上與所述集群節(jié)點保持數(shù)據(jù)同步的其它集群節(jié)點的信息;若判斷結(jié)果為不存在與所 述子區(qū)間對應的日志隊列,則所述數(shù)據(jù)同步管理模塊所述數(shù)據(jù)同步管理模塊為所述子區(qū)間 創(chuàng)建一個日志隊列。
[0021] 結(jié)合第二方面的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,所述數(shù)據(jù) 同步管理模塊還被配置為:對于在所述集群節(jié)點上存在對應的日志隊列的每個子區(qū)間,判 斷所述子區(qū)間是否屬于結(jié)果集以及所述子區(qū)間對應的日志隊列是否為空;以及在所述子區(qū) 間不屬于結(jié)果集并且所述子區(qū)間對應的日志隊列為空的情況下,將所述子區(qū)間及所述子區(qū) 間對應的日志隊列從所述集群節(jié)點上刪除。其中,所述結(jié)果集是指根據(jù)所述配置參數(shù)對所 述集群節(jié)點當前的本地路由表中的第一路由表項對應的區(qū)間進行切分所得到的子區(qū)間的 集合。
[0022] 結(jié)合第二方面、第二方面的第一種可能的實現(xiàn)方式或第二方面的第二種可能的實 現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述路由表管理模塊還被配置為,在按照配置參數(shù)將 本地路由表中的第一路由表項對應的區(qū)間切分為至少兩個子區(qū)間之后,生成切分請求,其 中,所述切分請求包含表示所述區(qū)間的信息以及所述配置參數(shù);以及所述網(wǎng)絡模塊還被配 置為,向所述第一路由表項的副本信息中記錄的其它集群節(jié)點發(fā)送所述切分請求,以使所 述其它集群節(jié)點也根據(jù)所述配置參數(shù)對所述區(qū)間進行切分。
[0023] 結(jié)合第二方面、第二方面的第一種可能的實現(xiàn)方式、第二方面的第二種可能的實 現(xiàn)方式或第二方面的第三種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,所述數(shù)據(jù)同步 管理模塊還被配置為:為每個所述子區(qū)間單獨配置讀寫操作權(quán)限。
[0024] 結(jié)合第二方面、第二方面的第一種可能的實現(xiàn)方式、第二方面的第二種可能的實 現(xiàn)方式、第二方面的第三種可能的實現(xiàn)方式或第二方面的第四種可能的實現(xiàn)方式,在第五 種可能的實現(xiàn)方式中,所述配置參數(shù)為分段數(shù),所述分段數(shù)表示要從一個所述第一路由表 項對應的區(qū)間切分出的子區(qū)間的個數(shù)。
[0025] 結(jié)合第二方面的第五種可能的實現(xiàn)方式,在第六種可能的實現(xiàn)方式中,所述分段 數(shù)與表示所述區(qū)間的信息一起記錄在所述本地路由表中的與所述區(qū)間對應的路由表項內(nèi)。
[0026] 第三方面,本發(fā)明實施例提供一種分布式存儲系統(tǒng),其包括客戶端和至少兩個本 發(fā)明任一實施例所述的集群節(jié)點。其中,各所述集群節(jié)點與所述客戶端連接,各所述集群節(jié) 點用于響應于來自所述客戶端的數(shù)據(jù)操作請求以進行數(shù)據(jù)處理操作,并向所述客戶端返回 所述數(shù)據(jù)處理操作的處理結(jié)果。
[0027] 可見,本發(fā)明實施例提供的區(qū)間管理方法和裝置,通過在集群節(jié)點上將一段連續(xù) 的區(qū)間切分為至少兩個子區(qū)間、并針對每個子區(qū)間創(chuàng)建并維護一個日志(log)隊列,根據(jù)本 發(fā)明實施例的分布式存儲系統(tǒng)、集群節(jié)點及其區(qū)間管理方法使得集群節(jié)點上原來針對整段 連續(xù)區(qū)間的串行操作可變成分別針對所切分出的至少兩個子區(qū)間的并行操作,從而對于整 個分布式存儲系統(tǒng)來說,可以有效提高吞吐量,尤其在多線程并行寫的情況下。
【專利附圖】
【附圖說明】
[0028] 為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對本發(fā)明實施例中所需要使 用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于 本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。
[0029] 圖1示出分布式存儲系統(tǒng)的組網(wǎng)拓撲的示意圖;
[0030] 圖2示出分布式存儲系統(tǒng)中的客戶端、作為主節(jié)點的集群節(jié)點(以下又稱為集群 主節(jié)點或主節(jié)點)、作為備節(jié)點的集群節(jié)點(以下又稱為集群備節(jié)點或備節(jié)點)和管理節(jié)點 的模塊組成以及相互間交互的示意圖;
[0031] 圖3示出分布式存儲系統(tǒng)中客戶端上路由表的表項的數(shù)據(jù)結(jié)構(gòu)的示意圖;
[0032] 圖4示出分布式存儲系統(tǒng)中客戶端上路由表的表項內(nèi)的區(qū)間的數(shù)據(jù)結(jié)構(gòu)的示意 圖;
[0033] 圖5示出分布式存儲系統(tǒng)中客戶端響應于數(shù)據(jù)操作需求所執(zhí)行的處理的流程示 意圖;
[0034] 圖6示出分布式存儲系統(tǒng)中集群節(jié)點響應于來自客戶端的數(shù)據(jù)操作請求所執(zhí)行 的處理的流程示意圖;
[0035] 圖7示出分布式存儲系統(tǒng)中集群節(jié)點上路由表的表項的數(shù)據(jù)結(jié)構(gòu)的示意圖;
[0036] 圖8示出分布式存儲系統(tǒng)中集群節(jié)點上區(qū)間與日志隊列的對應關(guān)系的示意圖;
[0037] 圖9示出分布式存儲系統(tǒng)中集群主節(jié)點同步給集群備節(jié)點的數(shù)據(jù)結(jié)構(gòu)的示意圖;
[0038] 圖10示出分布式存儲系統(tǒng)中集群節(jié)點上存儲模塊內(nèi)的數(shù)據(jù)流向的示意圖;
[0039] 圖11示出分布式存儲系統(tǒng)中作為主節(jié)點的集群節(jié)點上的數(shù)據(jù)流向的示意圖;
[0040] 圖12示出分布式存儲系統(tǒng)中集群節(jié)點以異步提交方式進行主備間數(shù)據(jù)同步的第 一階段的處理流程示意圖;
[0041] 圖13示出分布式存儲系統(tǒng)中集群節(jié)點以異步提交方式進行主備間數(shù)據(jù)同步的第 二階段的處理流程示意圖;
[0042] 圖14示出分布式存儲系統(tǒng)中管理節(jié)點維護路由表和表結(jié)構(gòu)的處理流程示意圖;
[0043] 圖15示出分布式存儲系統(tǒng)在新節(jié)點加入集群時的處理流程的示意圖;
[0044] 圖16示出分布式存儲系統(tǒng)在新節(jié)點加入前后的區(qū)間分配的示例圖;
[0045] 圖17示出根據(jù)本發(fā)明一實施例的區(qū)間管理方法的處理流程的示意圖;
[0046] 圖18示出圖17所示區(qū)間管理方法中區(qū)間與切分出的至少兩個子區(qū)間之間的對應 關(guān)系的不意圖;
[0047] 圖19示出根據(jù)本發(fā)明另一實施例的區(qū)間管理方法中集群節(jié)點上路由表的表項內(nèi) 的區(qū)間的數(shù)據(jù)結(jié)構(gòu)示意圖;
[0048] 圖20示出根據(jù)本發(fā)明又一實施例的區(qū)間管理方法中子區(qū)間更新的處理流程的示 意圖;
[0049] 圖21示出根據(jù)本發(fā)明又一實施例的區(qū)間管理方法中子區(qū)間清理的處理流程的示 意圖;
[0050] 圖22示出根據(jù)本發(fā)明又一實施例的區(qū)間管理方法在新節(jié)點加入時的處理流程的 示意圖;以及
[0051] 圖23示出根據(jù)本發(fā)明又一實施例的一種集群節(jié)點設備的結(jié)構(gòu)框圖。
【具體實施方式】
[0052] 下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚地描 述,顯然,所描述的實施例是本發(fā)明的一部分示例性的實施例,而不是全部實施例?;诒?發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動的前提下所獲得的所有其他 實施例,都應屬于本發(fā)明保護的范圍。
[0053] 在這里專用的詞"示例性"意為"用作例子、實施例或說明性"。這里作為"示例性" 所說明的任何實施例不必解釋為優(yōu)于或好于其它實施例。
[0054] 另外,為了更好的說明本發(fā)明,在下文的【具體實施方式】中給出了眾多的具體細節(jié)。 本領(lǐng)域技術(shù)人員應當理解,沒有這些具體細節(jié),本發(fā)明同樣可以實施。在另外一些實例中, 對于大家熟知的方法、手段、元件和電路未作詳細描述,以便于凸顯本發(fā)明的主旨。
[0055] 如【背景技術(shù)】部分所述,對于分布式存儲系統(tǒng),如何進行節(jié)點的區(qū)間管理,以在不增 加客戶端的路由開銷的前提下盡量提高系統(tǒng)數(shù)據(jù)處理吞吐量,是目前亟待解決的問題。
[0056] 圖2示出了圖1所示分布式存儲系統(tǒng)中的客戶端、主節(jié)點、備節(jié)點和管理節(jié)點的模 塊組成以及相互間交互的示意圖。如圖2所示,分布式存儲系統(tǒng)中的通信主要包括:
[0057] ①客戶端和集群節(jié)點之間的交互
[0058] 如圖2所示,客戶端主要包括路由表管理模塊和網(wǎng)絡模塊,其中路由表管理模塊 主要進行路由表的初始化和更新操作,而網(wǎng)絡模塊用于連接集群主節(jié)點??蛻舳松下酚杀?的初始化,是從連接到的第一個集群節(jié)點上獲得的??蛻舳松下酚杀硭ǖ谋眄椫饕?區(qū)間和主節(jié)點構(gòu)成,具體組成結(jié)構(gòu)可如圖3所示。
[0059] 在一種可能的實現(xiàn)方式中,區(qū)間是大整數(shù)(Biglnteger)的集合。這樣,路由表的 表項所包括的區(qū)間主要由左值(Left_BigInteger)和右值(Right_BigInteger)組成,具體 結(jié)構(gòu)可如圖4所示。
[0060] 響應于數(shù)據(jù)操作需求,客戶端基于主鍵字段(例如,利用MD算法將主鍵字段進行 哈希,并基于哈希結(jié)果)遍歷本地路由表的表項,根據(jù)表項內(nèi)的區(qū)間值找到對應的主節(jié)點, 并向該主節(jié)點發(fā)送數(shù)據(jù)操作請求,以使該主節(jié)點執(zhí)行相應的數(shù)據(jù)讀或?qū)懖僮?。具體處理流 程可如圖5所示。
[0061] 集群節(jié)點在接收到來自客戶端的數(shù)據(jù)操作請求后,一旦發(fā)現(xiàn)路由錯誤、即本地不 是主節(jié)點,則向客戶端返回失敗。響應于接收到集群節(jié)點返回的路由失敗,客戶端將向所連 接的集群節(jié)點發(fā)送路由表更新請求,以使集群節(jié)點將本地的路由表返回給客戶端,并且客 戶端根據(jù)所接收到的來自集群節(jié)點的路由表對本地的路由表進行更新,具體處理流程可如 圖6所示。需要說明的是,集群節(jié)點之間不進行路由表的轉(zhuǎn)發(fā)。
[0062] ②集群節(jié)點之間的交互
[0063] 如圖2所示,集群節(jié)點本地包括路由表管理模塊、數(shù)據(jù)同步管理模塊、存儲模塊和 網(wǎng)絡模塊。
[0064] 其中,集群節(jié)點的路由表管理模塊主要進行集群節(jié)點本地路由表的管理和客戶端 數(shù)據(jù)操作請求的處理。所有集群節(jié)點和管理節(jié)點共用一份路由表。路由表的表項不僅包含 該集群節(jié)點的路由信息,還包含其它所有集群節(jié)點的路由信息。例如,假設一共有兩個集群 節(jié)點A和B,如果節(jié)點A負責區(qū)間[0, 10]、節(jié)點B負責區(qū)間[20, 30],那么路由表的表項數(shù)就 是2,節(jié)點A和節(jié)點B上的路由表都一樣,都包括這兩個表項,從而既具有集群節(jié)點自身所負 責區(qū)間的信息,也具有與自身無關(guān)的其它節(jié)點的信息。并且,路由表的表項包括區(qū)間信息和 副本信息,具體組成結(jié)構(gòu)可如圖7所示。其中,副本信息主要記錄與該區(qū)間對應的集群節(jié)點 集,可包括主節(jié)點和備節(jié)點,以表示某個集群節(jié)點是作為主節(jié)點還是作為備節(jié)點負責該區(qū) 間。
[0065] 集群節(jié)點的數(shù)據(jù)同步管理模塊用來管理區(qū)間以實現(xiàn)主備間數(shù)據(jù)同步。在一種可能 的實現(xiàn)方式中,集群節(jié)點之間采用log隊列來實現(xiàn)主備間數(shù)據(jù)同步。具言之,一個區(qū)間對應 一個log隊列,并且主節(jié)點上區(qū)間對應的log隊列與備節(jié)點上區(qū)間對應的log隊列是保持 一致的。區(qū)間與log隊列的具體對應關(guān)系可如圖8所示。其中,R1?R3是區(qū)間的值,L1? LN、L1'?LN'和L1''?LN''分別為對應log隊列中的記錄。L1、L1'和L1''分別為log 隊列的頭,有新記錄時,從對應log隊列的尾部寫入。為了保證主備節(jié)點間數(shù)據(jù)的一致性, 主節(jié)點向備節(jié)點同步時會把新記錄和對應的區(qū)間的值一并發(fā)送給備節(jié)點。主節(jié)點發(fā)送給備 節(jié)點的數(shù)據(jù)結(jié)構(gòu)可如圖9所示。
[0066] 集群節(jié)點的存儲模塊用于進行數(shù)據(jù)存儲以及持久化,可包括日志(commitlog)子 模塊、內(nèi)存(memtree)子模塊和持久化(sstree)子模塊,并且這三個子模塊之間的數(shù)據(jù)流 向可如圖10所示。
[0067] 主節(jié)點在接收到來自客戶端的數(shù)據(jù)操作請求后,在本地調(diào)用路由表管理模塊,并 將該數(shù)據(jù)操作請求傳遞給數(shù)據(jù)同步管理模塊以進行主備間數(shù)據(jù)同步。然后,主節(jié)點在接收 到備節(jié)點返回的響應后,在本地調(diào)用存儲模塊以進行數(shù)據(jù)的存儲。在集群節(jié)點上的數(shù)據(jù)流 向可如圖11所示。
[0068] 在一種可能的實現(xiàn)方式,以異步提交方式來進行集群節(jié)點的主備間數(shù)據(jù)同步,即 在主節(jié)點將記錄寫入內(nèi)存并且備節(jié)點將記錄寫入對應的log隊列后就向客戶端返回數(shù)據(jù) 寫入成功的結(jié)果,然后再由主節(jié)點定期向備節(jié)點發(fā)送提交請求以使備節(jié)點將記錄寫入內(nèi) 存。換言之,以異步提交方式進行的主備間數(shù)據(jù)同步可分為兩個階段,其中第一階段的流程 圖可如圖12所示。響應于來自客戶端的數(shù)據(jù)操作請求,主節(jié)點對記錄進行本地處理后,向 備節(jié)點發(fā)送同步請求,其中該同步請求可包含該條記錄和對應的區(qū)間等信息。響應于接收 到來自主節(jié)點的同步請求,備節(jié)點在對該同步請求進行本地處理后,返回響應給主節(jié)點。最 后,由主節(jié)點將處理結(jié)果(成功或失?。┓祷亟o客戶端。如圖12所示,主節(jié)點的本地處理 包括:將該條記錄以一個新的序列號寫入?yún)^(qū)間對應的log隊列;以及,當備節(jié)點返回或超時 未返回針對該同步請求的響應時,將該條記錄寫入內(nèi)存。備節(jié)點的本地處理包括:將該條記 錄寫入?yún)^(qū)間對應的log隊列,并根據(jù)序列號對log隊列進行排序。
[0069] 以異步提交方式進行集群節(jié)點的主備間數(shù)據(jù)同步的第二階段的具體處理流程可 如圖13所示。主節(jié)點定時向備節(jié)點發(fā)送提交請求,其中該提交請求可包含區(qū)間和序列號等 信息。響應于接收到來自主節(jié)點的提交請求,備節(jié)點判斷該區(qū)間對應的log隊列是否有記 錄缺失,如果有,就向主節(jié)點請求缺失的記錄;如果沒有,就將log隊列中與該序列號對應 的記錄寫入內(nèi)存。
[0070] ③集群節(jié)點與管理節(jié)點之間的交互
[0071] 如圖2所示,管理節(jié)點主要包括心跳檢測模塊、路由表管理模塊、表結(jié)構(gòu)(schema) 管理模塊和網(wǎng)絡模塊。
[0072] 其中,管理節(jié)點的心跳檢測模塊基于集群節(jié)點發(fā)送的心跳來定期檢查并維護集群 節(jié)點的狀態(tài),以向集群節(jié)點推送最新版本的路由表和表結(jié)構(gòu)。集群節(jié)點發(fā)送心跳的主要內(nèi) 容包括本地路由表和表結(jié)構(gòu)的版本號。管理節(jié)點維護路由表和表結(jié)構(gòu)的具體處理流程可如 圖14所示。
[0073] 管理節(jié)點的路由表管理模塊主要用于:a)維護路由表和路由表的版本號,路由表 每更新一次,版本號加1,管理節(jié)點和所有集群節(jié)點共用一份路由表(路由表的表項的數(shù)據(jù) 結(jié)構(gòu)可如圖7所示),管理節(jié)點上路由表的版本號總是大于或等于集群節(jié)點上路由表的版 本號;以及b)進行區(qū)間的切分和分配,這主要發(fā)生在新節(jié)點加入時和進行負載均衡時。
[0074] 在一種可能的實現(xiàn)方式中,在有新的集群節(jié)點加入時,直接向管理節(jié)點發(fā)送加入 請求,管理節(jié)點遍歷路由表的表項,進行區(qū)間的負載統(tǒng)計,然后按照一定的策略,對現(xiàn)有的 區(qū)間進行切分,將切分出的某段區(qū)間分配給新節(jié)點。新節(jié)點從該區(qū)間對應的原始主節(jié)點上 請求屬于該區(qū)間的數(shù)據(jù),待數(shù)據(jù)傳送完成后,原始主節(jié)點和新節(jié)點依次更新路由表。這樣, 新節(jié)點以負責這個區(qū)間的主節(jié)點身份加入集群,具體處理流程可如圖15所示。
[0075] 例如,假設現(xiàn)有六個節(jié)點,分別作為主節(jié)點所負責的區(qū)間為[0, 100]、[101,200]、 [201,300]、[301,400]、[401,500]和[501,900],則新節(jié)點加入前后的區(qū)間劃分可如圖16 所示。其中,新節(jié)點作為主節(jié)點所負責的區(qū)間[751,900]是通過切分原區(qū)間[501,900]所 得。
[0076] 為了提高集群節(jié)點本地的寫入速度和并發(fā)處理能力、而不增加客戶端的路由開 銷,可以考慮在集群節(jié)點上將連續(xù)的某段區(qū)間切分成更小的粒度。例如,在一種可能的實現(xiàn) 方式中,如圖17所示,集群節(jié)點(可具體由路由表管理模塊)按照特定的配置參數(shù)將本地 路由表中的相關(guān)表項對應的區(qū)間切分為至少兩個子區(qū)間(S1710),并且(可具體由數(shù)據(jù)同 步管理模塊)為每個子區(qū)間分別創(chuàng)建一個日志隊列(S1720)。其中,所述相關(guān)表項是指該集 群節(jié)點作為主節(jié)點或者備節(jié)點所負責的區(qū)間所對應的路由表項。換言之,所述相關(guān)表項是 指副本信息中記錄有表示該集群節(jié)點的信息的路由表項。此外,所述區(qū)間與所切分出的子 區(qū)間的對應關(guān)系可如圖18所示。
[0077] 這樣,客戶端仍能夠按照所述區(qū)間向集群節(jié)點發(fā)送數(shù)據(jù)操作請求。具言之,客戶端 仍將基于數(shù)據(jù)操作請求的關(guān)鍵字段遍歷本地路由表的表項,根據(jù)表項內(nèi)的區(qū)間值找到對應 的集群節(jié)點,并向該集群節(jié)點發(fā)送數(shù)據(jù)操作請求。
[0078] 但是,集群節(jié)點(可具體由數(shù)據(jù)同步管理模塊)將按照所切分出的子區(qū)間執(zhí)行本 地處理(S1730)。具言之,在集群節(jié)點(可具體由網(wǎng)絡模塊)接收到來自客戶端的數(shù)據(jù)操作 請求后,該集群節(jié)點將(可具體由路由表管理模塊)首先如圖6所示判斷本地是否為負責 該數(shù)據(jù)操作請求的關(guān)鍵字段對應的區(qū)間的主節(jié)點。在路由錯誤、即集群節(jié)點發(fā)現(xiàn)本地不是 主節(jié)點的情況下,集群節(jié)點(可具體由網(wǎng)絡模塊)將向客戶端返回失敗,具體處理流程可如 圖6所示。然而,在路由正確的情況下,集群節(jié)點(可具體由路由表管理模塊)將基于該數(shù) 據(jù)操作請求的關(guān)鍵字段找到對應的子區(qū)間,然后(可具體由數(shù)據(jù)同步管理模塊)對該子區(qū) 間執(zhí)行相應的數(shù)據(jù)讀寫操作并更新與該區(qū)間對應的日志隊列,具體處理流程可如圖12所 /_J、1 〇
[0079] 在一種可能的實現(xiàn)方式中,每個子區(qū)間可單獨配置一把鎖、即對該子區(qū)間進行讀 寫操作的權(quán)限設置。例如,在多線程插入時,為了保證線程安全,集群節(jié)點(可具體由數(shù)據(jù) 同步管理模塊)給每個子區(qū)間配置一把讀寫鎖,使得雖然同一個子區(qū)間的log隊列是串行 執(zhí)行的,但不同子區(qū)間的log隊列之間是并行執(zhí)行。這樣,在集群節(jié)點本地,可將原來針對 整個連續(xù)區(qū)間的串行操作變成分別針對所切分出的至少兩個子區(qū)間的并行操作,從而能夠 顯著提高整個分布式存儲系統(tǒng)的吞吐量,尤其在多線程并發(fā)寫的情況下。
[0080] 下表1示出了在1000萬條記錄下,吞吐量隨單個集群節(jié)點上的一段連續(xù)區(qū)間被切 分成子區(qū)間的段數(shù)而變化的實驗結(jié)果。
[0081] 表 1
[0082]
【權(quán)利要求】
1. 一種區(qū)間管理方法,應用于包括集群節(jié)點和客戶端的分布式系統(tǒng)中的集群節(jié)點,其 特征在于,包括 : 所述集群節(jié)點按照配置參數(shù)將與本地路由表中的第一路由表項對應的區(qū)間切分為至 少兩個子區(qū)間,其中,所述本地路由表包括至少一個路由表項,每個所述路由表項至少包括 區(qū)間信息和副本信息,所述區(qū)間信息表示與所述路由表項對應的區(qū)間的信息,所述副本信 息用于記錄與所述區(qū)間對應的集群節(jié)點集的信息,所述第一路由表項是指所述副本信息中 記錄有表示所述集群節(jié)點的信息的路由表項; 所述集群節(jié)點為每個所述子區(qū)間分別創(chuàng)建一個日志隊列; 在接收到來自所述客戶端的數(shù)據(jù)操作請求時,所述集群節(jié)點根據(jù)所述數(shù)據(jù)操作請求的 關(guān)鍵字段確定對應的子區(qū)間; 所述集群節(jié)點根據(jù)確定的所述子區(qū)間執(zhí)行與所述數(shù)據(jù)操作請求對應的數(shù)據(jù)讀寫操作, 并根據(jù)所述數(shù)據(jù)讀寫操作更新與確定的所述子區(qū)間對應的日志隊列。
2. 根據(jù)權(quán)利要求1所述的區(qū)間管理方法,其特征在于,在所述集群節(jié)點更新了所述本 地路由表的情況下,還包括: 所述集群節(jié)點按照所述配置參數(shù)對更新后的所述本地路由表中的第一路由表項對應 的區(qū)間進行切分; 對于在所述更新之后切分出的每個子區(qū)間,所述集群節(jié)點判斷所述集群節(jié)點上是否存 在與所述子區(qū)間對應的日志隊列; 若所述集群節(jié)點上存在與所述子區(qū)間對應的日志隊列,則所述集群節(jié)點基于所述第一 路由表項中的副本信息更新所述子區(qū)間對應的同步節(jié)點信息,其中所述同步節(jié)點信息表示 在所述子區(qū)間上與所述集群節(jié)點保持數(shù)據(jù)同步的其它集群節(jié)點的信息;以及 若所述集群節(jié)點上不存在與所述子區(qū)間對應的日志隊列,則所述集群節(jié)點為所述子區(qū) 間創(chuàng)建一個日志隊列。
3. 根據(jù)權(quán)利要求2所述的區(qū)間管理方法,其特征在于,還包括: 對于在所述集群節(jié)點上存在對應的日志隊列的每個子區(qū)間,所述集群節(jié)點判斷所述子 區(qū)間是否屬于結(jié)果集以及所述子區(qū)間對應的日志隊列是否為空;以及 在所述子區(qū)間不屬于結(jié)果集并且所述子區(qū)間對應的日志隊列為空的情況下,將所述子 區(qū)間及所述子區(qū)間對應的日志隊列從所述集群節(jié)點上刪除, 其中,所述結(jié)果集是指根據(jù)所述配置參數(shù)對所述集群節(jié)點當前的本地路由表中的第一 路由表項對應的區(qū)間進行切分所得到的子區(qū)間的集合。
4. 根據(jù)權(quán)利要求1至3中任一項所述的區(qū)間管理方法,其特征在于,在所述集群節(jié)點按 照配置參數(shù)將本地路由表中的第一路由表項對應的區(qū)間切分為至少兩個子區(qū)間之后,還包 括: 所述集群節(jié)點向所述第一路由表項的副本信息中記錄的其它集群節(jié)點發(fā)送切分請求, 其中,所述切分請求包含表示所述區(qū)間的信息以及所述配置參數(shù),以使所述其它集群 節(jié)點也根據(jù)所述配置參數(shù)對所述區(qū)間進行切分。
5. 根據(jù)權(quán)利要求1至4中任一項所述的區(qū)間管理方法,其特征在于,所述集群節(jié)點根據(jù) 所述數(shù)據(jù)操作請求的關(guān)鍵字段確定對應的子區(qū)間,包括: 所述集群節(jié)點對所述數(shù)據(jù)操作請求的關(guān)鍵字段按照一定的哈希算法進行哈希; 所述集群節(jié)點根據(jù)所述哈希的結(jié)果查找對應的子區(qū)間;以及 在未查找到對應的子空間的情況下,所述集群節(jié)點向所述客戶端返回表示路由錯誤的 響應。
6. 根據(jù)權(quán)利要求1至5中任一項所述的區(qū)間管理方法,其特征在于,在所述集群節(jié)點為 每個所述子區(qū)間分別創(chuàng)建一個日志隊列之后,還包括: 所述集群節(jié)點為每個所述子區(qū)間單獨配置讀寫操作權(quán)限。
7. 根據(jù)權(quán)利要求6所述的區(qū)間管理方法,其特征在于,所述集群節(jié)點根據(jù)確定的所述 子區(qū)間執(zhí)行相應的數(shù)據(jù)讀寫操作,并更新與確定的所述子區(qū)間對應的日志隊列,包括: 所述集群節(jié)點獲得確定的所述子區(qū)間的讀寫操作權(quán)限; 所述集群節(jié)點將所述數(shù)據(jù)操作請求的操作數(shù)據(jù)以新的序列號寫入與確定的所述子區(qū) 間對應的日志隊列;以及 所述集群節(jié)點將所述操作數(shù)據(jù)寫入內(nèi)存,并向所述客戶端反饋處理結(jié)果。
8. 根據(jù)權(quán)利要求7所述的區(qū)間管理方法,其特征在于,在所述集群節(jié)點將所述操作數(shù) 據(jù)寫入內(nèi)存之前,還包括: 所述集群節(jié)點向所述第一路由表項的副本信息中記錄的其它集群節(jié)點發(fā)送同步請求, 其中,所述其它集群節(jié)點是指所述分布式儲系統(tǒng)中用于對所述集群節(jié)點在所述區(qū)間上 的數(shù)據(jù)進行備份的節(jié)點, 所述同步請求包含所述子區(qū)間的信息以及所述操作數(shù)據(jù),以使所述其它集群節(jié)點基于 所述子區(qū)間與所述集群節(jié)點保持數(shù)據(jù)同步。
9. 根據(jù)權(quán)利要求1至8中任一項所述的區(qū)間管理方法,其特征在于,所述配置參數(shù)為分 段數(shù),所述分段數(shù)表示要從一個所述第一路由表項對應的區(qū)間切分出的子區(qū)間的個數(shù)。
10. 根據(jù)權(quán)利要求8所述的區(qū)間管理方法,其特征在于,所述分段數(shù)與表示所述區(qū)間的 信息一起記錄在所述本地路由表中的與所述區(qū)間對應的路由表項內(nèi)。
11. 一種集群節(jié)點,應用于包括集群節(jié)點和客戶端的分布式系統(tǒng),其特征在于,包括: 網(wǎng)絡模塊,與所述客戶端連接,用于接收來自所述客戶端的數(shù)據(jù)操作請求; 路由表管理模塊,與所述網(wǎng)絡模塊連接,用于管理所述集群節(jié)點的本地路由表、處理所 述數(shù)據(jù)操作請求、并按照配置參數(shù)將與所述本地路由表中的第一路由表項對應的區(qū)間切分 為至少兩個子區(qū)間,其中,所述本地路由表包括至少一個路由表項,每個所述路由表項至少 包括區(qū)間信息和副本信息,所述區(qū)間信息表示與所述路由表項對應的區(qū)間的信息,所述副 本信息用于記錄與所述區(qū)間對應的集群節(jié)點集的信息,所述第一路由表項是指所述副本信 息中記錄有表示所述集群節(jié)點的信息的路由表項; 數(shù)據(jù)同步管理模塊,與所述網(wǎng)絡模塊以及所述路由表管理模塊連接,用于為每個所述 子區(qū)間分別創(chuàng)建一個日志隊列;以及 存儲模塊,與所述數(shù)據(jù)同步管理模塊連接,用于進行數(shù)據(jù)存儲以及持久化, 其中,在所述網(wǎng)絡模塊接收到所述數(shù)據(jù)操作請求時:所述路由表管理模塊根據(jù)所述數(shù) 據(jù)操作請求的關(guān)鍵字段確定對應的子區(qū)間;所述數(shù)據(jù)同步管理模塊根據(jù)確定的所述子區(qū)間 執(zhí)行與所述數(shù)據(jù)操作請求對應的數(shù)據(jù)讀寫操作,并根據(jù)所述數(shù)據(jù)讀寫操作更新與確定的所 述子區(qū)間對應的日志隊列。
12. 根據(jù)權(quán)利要求11所述的集群節(jié)點,其特征在于, 所述網(wǎng)絡模塊還被配置為,接收所述分布式系統(tǒng)的最新版本路由表; 所述路由表管理模塊還被配置為,將所述本地路由表更新為所述最新版本路由表,并 按照所述配置參數(shù)對更新后的所述本地路由表中的第一路由表項對應的區(qū)間進行切分;以 及 所述數(shù)據(jù)同步管理模塊還被配置為,對于在所述更新之后切分出的每個子區(qū)間,判斷 所述集群節(jié)點上是否存在與所述子區(qū)間對應的日志隊列, 若判斷結(jié)果為存在與所述子區(qū)間對應的日志隊列,則所述數(shù)據(jù)同步管理模塊基于所述 第一路由表項中的副本信息更新所述子區(qū)間對應的同步節(jié)點信息,其中所述同步節(jié)點信息 表示在所述子區(qū)間上與所述集群節(jié)點保持數(shù)據(jù)同步的其它集群節(jié)點的信息; 若判斷結(jié)果為不存在與所述子區(qū)間對應的日志隊列,則所述數(shù)據(jù)同步管理模塊所述數(shù) 據(jù)同步管理模塊為所述子區(qū)間創(chuàng)建一個日志隊列。
13. 根據(jù)權(quán)利要求12所述的集群節(jié)點,其特征在于,所述數(shù)據(jù)同步管理模塊還被配置 為: 對于在所述集群節(jié)點上存在對應的日志隊列的每個子區(qū)間,判斷所述子區(qū)間是否屬于 結(jié)果集以及所述子區(qū)間對應的日志隊列是否為空;以及 在所述子區(qū)間不屬于結(jié)果集并且所述子區(qū)間對應的日志隊列為空的情況下,將所述子 區(qū)間及所述子區(qū)間對應的日志隊列從所述集群節(jié)點上刪除, 其中,所述結(jié)果集是指根據(jù)所述配置參數(shù)對所述集群節(jié)點當前的本地路由表中的第一 路由表項對應的區(qū)間進行切分所得到的子區(qū)間的集合。
14. 根據(jù)權(quán)利要求11至13中任一項所述的集群節(jié)點,其特征在于, 所述路由表管理模塊還被配置為,在按照配置參數(shù)將本地路由表中的第一路由表項對 應的區(qū)間切分為至少兩個子區(qū)間之后,生成切分請求,其中,所述切分請求包含表示所述區(qū) 間的信息以及所述配置參數(shù);以及 所述網(wǎng)絡模塊還被配置為,向所述第一路由表項的副本信息中記錄的其它集群節(jié)點發(fā) 送所述切分請求,以使所述其它集群節(jié)點也根據(jù)所述配置參數(shù)對所述區(qū)間進行切分。
15. 根據(jù)權(quán)利要求11至14中任一項所述的集群節(jié)點,其特征在于,所述數(shù)據(jù)同步管理 模塊還被配置為:為每個所述子區(qū)間單獨配置讀寫操作權(quán)限。
16. 根據(jù)權(quán)利要求11至15中任一項所述的集群節(jié)點,其特征在于,所述配置參數(shù)為分 段數(shù),所述分段數(shù)表示要從一個所述第一路由表項對應的區(qū)間切分出的子區(qū)間的個數(shù)。
17. 根據(jù)權(quán)利要求16所述的集群節(jié)點,其特征在于,所述分段數(shù)與表示所述區(qū)間的信 息一起記錄在所述本地路由表中的與所述區(qū)間對應的路由表項內(nèi)。
18. -種分布式系統(tǒng),其特征在于,包括: 客戶端;和 至少兩個根據(jù)權(quán)利要求11至17中任一項所述的集群節(jié)點, 其中,各所述集群節(jié)點與所述客戶端連接,各所述集群節(jié)點用于響應于來自所述客戶 端的數(shù)據(jù)操作請求以進行數(shù)據(jù)處理操作,并向所述客戶端返回所述數(shù)據(jù)處理操作的處理結(jié) 果。
【文檔編號】H04L29/08GK104283906SQ201310274957
【公開日】2015年1月14日 申請日期:2013年7月2日 優(yōu)先權(quán)日:2013年7月2日
【發(fā)明者】劉哲, 沈柯 申請人:華為技術(shù)有限公司