一種節點訪問方法和系統、客戶端代理和客戶端的制作方法
【技術領域】
[0001]本發明涉及通信技術領域,特別是涉及一種節點訪問方法和系統、客戶端代理和客戶端。
【背景技術】
[0002]zookeeper是一個針對分布式系統的可靠協調軟件,其可用于各個服務器之間共享數據。
[0003]例如,在集中式配置管理系統中,服務器可以在zookeeper上以節點(node)的形式存儲應用程序的配置信息,其中,一個節點可以代表一個配置項,多個節點所述節點信息具體可以包括:節點名稱(path)和節點值(data),并且,可以按照鍵值對(key-value)的形式對所述節點名稱(path)和節點值(data)進行組織、索引和存儲。
[0004]目前,zookeeper僅僅支持一次獲取一個節點值的功能,而不支持批量獲取節點值的功能,這樣,對于客戶端而言,其需要通過多次請求來獲取多個節點值,這耗費了客戶端的流量,且增加了客戶端用戶的操作成本。
【發明內容】
[0005]鑒于上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的一種節點訪問方法和系統、客戶端代理和客戶端。
[0006]依據本發明的一個方面,提供了一種節點訪問方法,包括:
[0007]從消息隊列中獲取批量節點的信息,其中,所述批量節點包括多個子節點;
[0008]在服務端上注冊所述子節點的監視事件,其中,所述子節點的監視事件至少包括子節點的增刪事件;
[0009]接收所述服務端通知的所述子節點的監視事件及對應的事件內容;以及
[0010]依據所述子節點的增刪事件對應的事件內容,生成包含所述批量節點的信息與子節點集合的映射關系的序列,并將所述序列寫入共享內存。
[0011]可選地,所述方法由客戶端代理執行。
[0012]可選地,所述在服務端上注冊所述子節點的監視事件的步驟,包括:
[0013]向所述服務端發送事件注冊請求,所述事件注冊請求中攜帶有所述子節點的監視事件、以及回調參數的指針,以使在所述服務端在所述子節點的監視事件發生時,使用所述指針調用所述回調函數進行所述子節點的監視事件及對應的事件內容的通知。
[0014]可選地,所述子節點的監視事件還包括:子節點對應值的變化事件;
[0015]則所述方法還包括:
[0016]依據所述子節點對應值的變化事件對應的事件內容,得到所述子節點的最新值,并將所述子節點的最新值寫入所述共享內存。
[0017]可選地,所述消息隊列中批量節點的信息為客戶端在第一查詢失敗時寫入的信息,其中,所述第一查詢為依據批量節點的信息在共享內存中進行第一查詢以得到批量節點的信息對應的子節點集合。
[0018]依據本發明的另一方面,提供了一種節點訪問方法,應用于一客戶端,所述方法包括:
[0019]依據批量節點的信息在共享內存中進行第一查詢,以得到批量節點的信息對應的子節點集合,其中,所述共享內存中存儲有包含所述批量節點的信息與子節點集合的映射關系的序列;以及
[0020]在所述第一查詢失敗時,將所述批量節點的信息寫入消息隊列。
[0021]可選地,所述方法還包括:依據所述子節點集合中各子節點在所述共享內存進行第二查詢,以得到所述子節點集合中各子節點的值。
[0022]可選地,所述方法還包括:在所述第二查詢失敗時,所述客戶端將對應子節點的信息寫入所述消息隊列。
[0023]依據本發明的再一方面,提供了一種客戶端代理,包括:
[0024]信息獲取模塊,用于從消息隊列中獲取批量節點的信息;其中,所述批量節點包括多個子節點;
[0025]事件注冊模塊,用于在服務端上注冊所述子節點的監視事件;其中,所述子節點的監視事件至少包括子節點的增刪事件;
[0026]事件接收模塊,用于接收所述服務端通知的所述子節點的監視事件及對應的事件內容;
[0027]序列生成模塊,用于依據所述子節點的增刪事件對應的事件內容,生成包含所述批量節點的信息與子節點集合的映射關系的序列;以及
[0028]序列寫入模塊,用于將所述序列寫入共享內存。
[0029]可選地,所述事件注冊模塊,具體用于向所述服務端發送事件注冊請求,所述事件注冊請求中攜帶有所述子節點的監視事件、以及回調參數的指針,以使在所述服務端在所述子節點的監視事件發生時,使用所述指針調用所述回調函數進行所述子節點的監視事件及對應的事件內容的通知。
[0030]可選地,所述子節點的監視事件還包括:子節點對應值的變化事件;
[0031]則所述客戶端代理還包括:
[0032]更新模塊,用于代理依據所述子節點對應值的變化事件對應的事件內容,得到所述子節點的最新值;
[0033]值寫入模塊,用于將所述子節點的最新值寫入所述共享內存。
[0034]可選地,所述消息隊列中批量節點的信息為客戶端在第一查詢失敗時寫入的信息,其中,所述第一查詢為依據批量節點的信息在共享內存中進行第一查詢以得到批量節點的信息對應的子節點集合。
[0035]依據本發明的又一方面,提供了一種客戶端,包括:
[0036]第一查詢模塊,用于依據批量節點的信息在共享內存中進行第一查詢,以得到批量節點的信息對應的子節點集合;其中,所述共享內存中存儲有包含所述批量節點的信息與子節點集合的映射關系的序列;以及
[0037]第一寫入模塊,用于在所述第一查詢失敗時,所述客戶端將所述批量節點的信息寫入消息隊列。
[0038]可選地,所述客戶端還包括:
[0039]第二查詢模塊,用于依據所述子節點集合中各子節點在所述共享內存進行第二查詢,以得到所述子節點集合中各子節點的值。
[0040]可選地,所述客戶端還包括:
[0041]第二寫入模塊,用于在在所述第二查詢失敗時,所述客戶端將對應子節點的信息寫入所述消息隊列。
[0042]依據本發明的又一方面,提供了一種節點訪問系統,包括:服務端、前述的客戶端代理和前述的客戶端。
[0043]根據本發明實施例的一種節點訪問方法和系統、客戶端代理和客戶端,其中的客戶端代理可以在服務端上注冊所述子節點的監視事件,所述子節點的監視事件至少可以包括:子節點的增刪事件,依據服務端通知的所述子節點的增刪事件對應的事件內容,生成包含所述批量節點的信息與子節點集合的映射關系的序列,并將所述序列寫入共享內存;這樣,可以使得客戶端在節點訪問流程中依據批量節點的信息在共享內存中進行第一查詢,以得到批量節點的信息對應的子節點集合,因此可以實現批量節點的訪問功能。
[0044]上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發明的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本發明的【具體實施方式】。
【附圖說明】
[0045]通過閱讀下文可選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出可選實施方式的目的,而并不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0046]圖1示出了根據本發明一個實施例的一種節點訪問方法的步驟流程示意圖;
[0047]圖2示出了示出了根據本發明一個示例的一種節點訪問系統的結構示意圖;
[0048]圖3示出了根據本發明一個實施例的一種節點訪問方法的步驟流程示意圖;
[0049]圖4示出了根據本發明一個實施例的一種節點訪問方法的步驟流程示意圖;
[0050]圖5示出了根據本發明一個實施例的一種節點訪問方法的步驟流程示意圖;
[0051]圖6示出了根據本發明一個實施例的一種客戶端代理的結構示意圖;
[0052]圖7示出了根據本發明一個實施例的一種客戶端的結構示意圖;以及
[0053]圖8示出了根據本發明一個實施例的一種節點訪問系統的結構示意圖。
【具體實施方式】
[0054]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
[0055]參照圖1,示出了根據本發明一個實施例的一種節點訪問方法的步驟流程示意圖,具體可以包括如下步驟:
[0056]步驟101、從消息隊列中獲取批量節點的信息,其中,所述批量節點具體可以包括多個子節點;
[0057]本發明實施例可用于對服務端上存儲節點的訪問流程,其中,既可提供單個節點的訪問功能,又可提供批量節點的訪問功能。
[0058]本實施例的方法可由客戶端代理執行。參照圖2,示出了根據本發明一個示例的一種節點訪問系統的結構示意圖,其具體可以包括:客戶端201、客戶端代理202和服務端203,其中,客戶端201和客戶端代理202可運行于客戶端的機器上,客戶端代理202負責與服務端203通訊以獲取節點及節點值,并將節點及節點值寫入共享內存,客戶端201可以在共享內存中查詢訪問請求對應的值,而對服務端203 —無所知,并且,在共享內存命中失敗后,客戶端可以將訪問請求的信息寫入消息隊列。
[0059]在具體實現中,且客戶端代理202可以與服務端203上部署的zooke印er保