一種基於Zookeeper的多服務間異步進度控制的方法及系統的製作方法
2023-10-09 14:17:29
一種基於Zookeeper的多服務間異步進度控制的方法及系統的製作方法
【專利摘要】一種基於Zookeeper的多服務間異步進度控制的方法及系統,所述方法包括,新建一個節點;多個服務分別在Zookeeper上註冊觀察所述新建的節點的監聽;當總任務開始後,在所述新建的節點上寫入包括當前需要處理的子任務和處理該子任務的服務的相關信息;所述多個服務通過監聽獲取所述相關信息;每個服務根據所述相關信息進行處理;當所有子任務處理完畢,則總任務結束。本發明能夠高效、簡便地實現多服務間的異步進度控制。
【專利說明】—種基於Zookeeper的多服務間異步進度控制的方法及系統
【技術領域】
[0001]本發明涉及分布式系統領域,尤其涉及一種基於Zook^per的多服務間異步進度控制的方法及系統。
【背景技術】
[0002]複雜軟體一般由不同的服務共同協調完成一項複雜的功能。這些不同的服務有可能運行在相同的物理伺服器上,也有可能運行在不同的物理伺服器上。不管對方服務運行在哪,多服務間需要以某種事先協商好的機制統一協調進度,並按照一定步驟共同完成某項負責的任務,但是目前還沒有一種很好的方法來高效、簡便地實現上述多服務間的異步進度控制。
[0003]Zookeeper是一個分布式的,開放源碼的分布式應用程式協調服務。在Zookeeper中,znode是一個跟Unix文件系統路徑相似的節點,可以往這個節點存儲或獲取數據。Zookeeper使用Watcher察覺事件信息,當客戶端接收到事件信息,比如連接超時,節點數據改變,子節點改變,可以調用相應的行為來處理數據。在對現有技術的研究和實踐過程中,發明人發現現有技術至少存在以下問題:對於上述複雜軟體目前還沒有一種很好的方法來高效、簡便地實現上述多服務間的異步進度控制,同時Zookeeper尚不能直接應用於對複雜軟體進行異步進度控制。
【發明內容】
[0004]本發明所要解決的技術問題是如何高效、簡便地實現上述多服務間的異步進度控制。
[0005]為了解決上述技術問題本發明提供一種基於Zook^per的多服務間異步進度控制的方法,包括,新建一個節點;多個服務分別在Zookeeper上註冊觀察所述新建的節點的監聽;當總任務開始後,在所述新建的節點上寫入包括當前需要處理的子任務和處理該子任務的服務的相關信息;所述多個服務通過監聽獲取所述相關信息;每個服務根據所述相關信息進行處理;當所有子任務處理完畢,則總任務結束。
[0006]根據本發明的一個方面,提供一種基於Zookeeper的多服務間異步進度控制的方法,包括步驟:
[0007]S1、新建一個節點;
[0008]S2、多個服務分別在Zook^per上註冊觀察所述新建的節點的監聽;
[0009]S3、當總任務開始後,在所述新建的節點上寫入包括當前需要處理的子任務和處理該子任務的服務的相關信息;
[0010]S4、所述多個服務通過監聽獲取所述相關信息;
[0011]S5、每個服務根據所述相關信息進行處理;
[0012]S6、當所有子任務處理完畢,則總任務結束。[0013]在上述方法中,所述每個服務根據所述相關信息進行處理包括步驟:
[0014]在上述方法中,判斷所述相關信息中的子任務是否為自己的子任務,如果不是則忽略所述相關信息;
[0015]在上述方法中,如果是,則開始處理所述子任務;
[0016]在上述方法中,處理完畢後,在所述新建節點中寫入新的包括當前需要處理的子任務和處理該子任務的服務的相關信息。
[0017]在上述方法中,所述步驟S6具體包括:當所有子任務處理完畢,刪除所述新建的節點,所述多個服務通過監聽獲知所述新建的節點被刪除,總任務結束。
[0018]根據本發明的另一個方面,提供一種基於Zook^per的多服務間異步進度控制的系統,包括:
[0019]節點控制單元,用於新建和刪除節點;
[0020]任務控制單元,用於寫入包括當前需要處理的子任務和處理該子任務的服務的相關信息;
[0021]處理單元,用於處理所述子任務;
[0022]註冊單元,用於註冊觀察新建節點的監聽;
[0023]獲取單元,用於通過監聽獲取所述相關信息和節點的建立和刪除信息。
[0024]在上述系統中,多個服 務通過註冊單元分別在Zookeeper上註冊觀察所述新建節點的監聽。
[0025]在上述系統中,當總任務開始後,通過所述任務控制單元在所述新建節點上寫入包括當前需要處理的子任務和處理該子任務的服務的相關信息。
[0026]在上述系統中,所述多個服務通過所述獲取單元獲取所述相關信息。
[0027]在上述系統中,所述多個服務中的各服務通過所述處理單元判斷所述相關信息中的子任務是否為自己的子任務,如果不是則忽略所述相關信息。
[0028]在上述系統中,所述多個服務中的各服務通過所述處理單元處理各自的所述子任務。
[0029]在上述系統中,當前所述子任務處理完畢後,處理當前所述子任務的服務通過所述任務控制單元在所述新建節點中寫入新的包括當前需要處理的子任務和處理該子任務的服務的相關信息。
[0030]在上述系統中,當所有子任務處理完畢後,通過所述節點控制單元刪除所述新建節點。
[0031]在上述系統中,當所述多個服務通過所述獲取單元獲知所述新建節點被刪除時,總任務結束。
[0032]本發明的有益效果是:通過本發明提供的方法和系統,能夠高效、簡便地實現多服務間的異步進度控制。
【專利附圖】
【附圖說明】
[0033]圖1是本發明實施例提供的基於Zookeeper的多服務間異步進度控制的方法的處理流程圖;
[0034]圖2是本發明實施例提供的基於Zookeeper的多服務間異步進度控制的系統的結構框圖;
【具體實施方式】
[0035]為使本發明的目的、技術方案和優點更加清楚明了,下面結合【具體實施方式】並參照附圖,對本發明進一步詳細說明。應該理解,這些描述只是示例性的,而並非要限制本發明的範圍。此外,在以下說明中,省略了對公知結構和技術的描述,以避免不必要地混淆本發明的概念。
[0036]本發明實施例提供的基於Zooke^er的多服務間異步進度控制的方法的處理流程如圖1所示,其中Zookeeper是一個分布式的,開放源碼的分布式應用程式協調服務。在Zookeeper中,znode是一個跟Unix文件系統路徑相似的節點,可以往這個節點存儲或從中獲取數據。
[0037]本發明實施例提供的基於Zookeeper的多服務間異步進度控制的方法具體步驟如下:
[0038]101、新建一個節點。
[0039]新建一個節點,如Nodel,這個節點中可以存儲數據,並可從該節點中獲取存儲的數據。
[0040]102、多個服務分別在Zookeeper上註冊觀察新建的節點的監聽。
[0041]以多服務A、B、C為例,服務A,B, C分別在Zooke^er上註冊觀察所述新建Nodel的監聽Watcher,即在Zookeeper上註冊Watch Nodel的事件處理函數;
[0042]103、當總任務開始後,在所述新建的節點上寫入包括當前需要處理的子任務和處理該子任務的服務的相關信息。
[0043]當總任務開始後,所述新建的Nodel上寫入包括當前需要處理的子任務和處理該子任務的服務的相關信息,如:{ 「服務A」,「子任務I」 }。
[0044]104、多個服務通過監聽獲取所述相關信息。
[0045]服務A, B, C通過Watcher獲取Nodel的內容;
[0046]105、每個服務根據所述相關信息進行處理。
[0047]每個服務根據所述相關信息進行處理,即服務A發現輪到自己處理了,就開始處理「子任務1」,服務B和C發現不是自己的子任務,忽略該信息;服務A處理完畢後,在Nodel中把包括當前需要處理的子任務和處理該子任務的服務的相關信息{ 「服務B」,「子任務2」}寫入;服務B處理完「子任務2」後,在Nodel中寫入{ 「服務C」,「子任務3」 };
[0048]106、當所有子任務處理完畢後,刪除所述新建的節點。
[0049]服務C處理完「子任務3」,則所有子任務處理已經完畢,此時刪除Nodel,總任務結束。因服務A、B、C都會激發事件處理函數,發現Nodel刪除了,就都知道總任務完成了。
[0050]綜上,本發明實施例通過新建一個Node,當總任務開始後,Zookeeper在所述新建Node上寫入包括當前需要處理的子任務和處理該子任務的服務的相關信息,每個服務根據所述相關信息進行處理,完成總任務,使得能夠高效、簡便地實現多服務間的異步進度控制。
[0051]本發明實施例提供的基於Zooke印er的多服務間異步進度控制的系統的結構框圖如圖2所示,該系統包括:[0052]節點控制單元201,用於新建和刪除節點;
[0053]任務控制單元202,用於寫入包括當前需要處理的子任務和處理該子任務的服務的相關信息;
[0054]處理單元203,用於處理所述子任務;
[0055]註冊單元204,用於 註冊觀察新建節點的監聽;
[0056]獲取單元205,用於通過監聽獲取相關信息和節點的建立和刪除信息。
[0057]以多服務A、B、C為例,Zookeeper通過節點控制單兀201新建Nodel。
[0058]服務A, B, C通過註冊單元204分別在Zookeeper上註冊觀察Nodel的Watcher,即在Zookeeper上註冊Watch Nodel的事件處理函數。
[0059]當總任務開始後,Zookeeper通過任務控制單元202在所述新建Nodel上寫入包括當前需要處理的子任務和處理該子任務的服務的相關信息,如:{ 「服務A」,「子任務I」}。
[0060]服務A,B, C通過獲取單元205獲取所述相關信息。
[0061]每個服務根據所述相關信息進行處理,即服務A通過處理單元203判斷是否輪到自己處理了,就通過處理單元203開始處理「子任務I 」,服務B和C通過處理單元203發現不是自己的子任務,忽略該信息。
[0062]服務A處理完畢後,通過任務控制單元202在所述新建Nodel中寫入新的包括當前需要處理的子任務和處理該子任務的服務的相關信息:{ 「服務B」,「子任務2」 }。
[0063]服務B通過處理單元203處理「子任務2」並在處理完後,在Nodel中寫入{ 「服務C」,「子任務3」};
[0064]服務C通過處理單元203處理「子任務3」,當所有子任務處理完畢後,通過節點控制單元201刪除所述Nodel。
[0065]服務A,B, C通過獲取單元205獲知所述Nodel被刪除,總任務結束。
[0066]綜上,本發明實施例通過實施例提供的基於Zook^per的多服務間異步進度控制的系統,通過節點控制單元201、任務控制單元202、處理單元203、註冊單元204和獲取單元205,實現新建一個Node,當總任務開始後,Zookeeper在所述新建Node上寫入包括當前需要處理的子任務和處理該子任務的服務的相關信息;每個服務根據所述相關信息進行處理,完成總任務,使得能夠高效、簡便地實現多服務間的異步進度控制。
[0067]應當理解的是,本發明的上述【具體實施方式】僅僅用於示例性說明或解釋本發明的原理,而不構成對本發明的限制。因此,在不偏離本發明的精神和範圍的情況下所做的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。此外,本發明所附權利要求旨在涵蓋落入所附權利要求範圍和邊界、或者這種範圍和邊界的等同形式內的全部變化和修改例。
【權利要求】
1.一種基於Zookeeper的多服務間異步進度控制的方法,其特徵在於:包括步驟: S1、新建一個節點; S2、多個服務分別在Zooke^er上註冊觀察所述新建的節點的監聽; S3、當總任務開始後,在所述新建的節點上寫入包括當前需要處理的子任務和處理該子任務的服務的相關信息; S4、所述多個服務通過監聽獲取所述相關信息; S5、每個服務根據所述相關信息進行處理; S6、當所有子任務處理完畢,則總任務結束。
2.根據權利要求1所述的方法,其特徵在於:步驟S5中,所述每個服務根據所述相關信息進行處理包括步驟: S501、判斷所述相關信息中的子任務是否為自己的子任務,如果不是則忽略所述相關信息; S502、如果是,則開始處理所述子任務; S503、處理完畢後,在所述新建節點中寫入新的包括當前需要處理的子任務和處理該子任務的服務的相關信息。
3.根據權利要求1所述的方法,其特徵在於:所述步驟S6具體包括:當所有子任務處理完畢,刪除所述新建的節點,所述多個服務通過監聽獲知所述新建的節點被刪除,總任務結束。
4.一種基於Zook^per的多服務間異步進度控制的系統,其特徵在於,包括: 節點控制單元,用於新建和刪除節點; 任務控制單元,用於寫入包括當前需要處理的子任務和處理該子任務的服務的相關信息; 處理單元,用於處理所述子任務; 註冊單元,用於註冊觀察新建節點的監聽; 獲取單元,用於通過監聽獲取所述相關信息和節點的建立和刪除信息。
5.根據權利要求4所述的系統,其特徵在於:多個服務通過註冊單元分別在Zookeeper上註冊觀察所述新建節點的監聽。
6.根據權利要求4所述的系統,其特徵在於:當總任務開始後,通過所述任務控制單元在所述新建節點上寫入包括當前需要處理的子任務和處理該子任務的服務的相關信息。
7.根據權利要求5所述的系統,其特徵在於:所述多個服務通過所述獲取單元獲取所述相關信息。
8.根據權利要求7所述的系統,其特徵在於:所述多個服務中的各服務通過所述處理單元判斷所述相關信息中的子任務是否為自己的子任務,如果不是則忽略所述相關信息。
9.根據權利要求8所述的系統,其特徵在於:所述多個服務中的各服務通過所述處理單元處理各自的所述子任務。
10.根據權利要求9所述的系統,其特徵在於:當前所述子任務處理完畢後,處理當前所述子任務的服務通過所述任務控制單元在所述新建節點中寫入新的包括當前需要處理的子任務和處理該子任務的服務的相關信息。
11.根據權利要求10所述的系統,其特徵在於:當所有子任務處理完畢後,通過所述節點控制單元刪除所述新建節點。
12.根據權利要求11所述的系統,其特徵在於:當所述多個服務通過所述獲取單元獲知所述新建 節點被刪除時,總任務結束。
【文檔編號】H04L29/08GK103577255SQ201310522126
【公開日】2014年2月12日 申請日期:2013年10月29日 優先權日:2013年10月29日
【發明者】徐安 申請人:漢柏科技有限公司