新四季網

一種分布式協同方法和協同器的製造方法

2023-06-13 14:38:26

一種分布式協同方法和協同器的製造方法
【專利摘要】本申請提供一種分布式協同方法,包括:協同器接收到來自協同客戶端的節點創建請求後,為所述協同客戶端建立節點,並確定所述節點所屬的域,其中,每個節點只屬於一個域;以及,在節點發生變化或域發生變化時,所述協同器通知滿足預設條件的協同客戶端。本申請還提供一種協同器。本申請進行協同管理時,配置僅為域和節點兩層,簡化了配置,提高了性能。
【專利說明】一種分布式協同方法和協同器
【技術領域】
[0001]本申請涉及計算機系統,尤其涉及一種分布式協同方法和協同器。
【背景技術】
[0002]大型分布式應用通常需要調度器、控制器、協同器等管理任務進程的資源分配和任務調度,為避免大多數應用將協同器嵌入在調度控制等實現中,造成系統擴充困難,開發維護成本高的問題,通常將協同器獨立出來設計成為通用、可伸縮的協同系統。計算機集群中通常需要維持一個領導者的伺服器,它負責進行集群管理和調度等職責,因此集群需要在啟動和運行等各個階段保證一個領導者提供服務,並且在故障和恢復後能重新選擇領導者。
[0003]目前業界分布式協同系統的主要實現有Zookeeper和Chubby, Zookeeper實際上是Google的Chubby—個開源的實現。zookeeper的配置中心實現更像一個文件系統,文件系統中的所有文件形成一個樹狀結構,zookeeper維護著這樣的樹形層次結構,樹中的節點稱為znode,每個znode存儲的數據有小於1M(兆)的大小限制。zookeeper對znode提供了幾種類型,臨時znode、持久znode、順序znode等幾種類型,用於不同的一致性需求。在znode發生變化時,通過觀察(watch)機制可以讓客戶端得到通知。可以針對Zookeeper服務的「操作」來設置觀察,該服務的其他操作可以觸發觀察。Zookeeper服務的「操作」包括一些對znode添加修改獲取操作。Zookeeper採用一種類似Paxos的算法實現領導者選舉,用於解決集群宕機的一致性和協同保障。總體上,Zookeeper提供了一個分布式協同系統,包括配置維護、名字服務、分布式同步、組服務等功能,並將相關操作接口提供給用戶。
[0004]Zookeeper的結構如圖1所示,其實現包括:
[0005]1、啟動Zookeeper伺服器集群環境後,多個Zookeeper伺服器在工作前會選舉出一個領導者(Leader),在接下來的工作中這個被選舉出來的Leader失活,而剩下的Zookeeper伺服器會知道這個Leader失活,在正常運行的Zookeeper集群中會繼續選出一個Leader,選舉出leader的目的是為了可以在分布式的環境中保證數據的一致性。
[0006]2、另外,Zookeeper支持watch的概念。客戶端可以在每個znode結點上設置一個觀察。如果被觀察服務端的znode結點有變更,那麼watch就會被觸發,這個watch所屬的客戶端將接收到一個通知包被告知結點已經發生變化。若客戶端和所連接的Zookeeper伺服器斷開連接時,其他客戶端也會收到一個通知,也就說一個Zookeeper伺服器端可以對應多個客戶端,當然也可以多個Zookeeper伺服器端對應多個客戶端。
[0007]Zookeeper作為一個chubby和paxos模仿品,存在以下缺點:
[0008]1、樹型配置節點的繁瑣複雜,性能低下。為了保證這種結構,Zookeeper需要維持一套虛擬文件結構的開銷,對於目錄結構深的樹節點,造成性能影響。
[0009]2、watch機制的僵化設計:zookeeper沒有獲取最新版本信息的方法支持,它只能粗暴的在每次寫入更新等方法時註冊一個watch,當這些方法被調用後就回調,它不考慮信息內容是否變化,對於沒有使信息內容發生改變的更新,zookeeper仍然會回調,並且zookeeper的回調比較呆板,它只能用一次,如果信息持續變化,必須又重新註冊watch。
[0010]3、領導者選舉機制實現的太過局限,集群只有兩個節點,ZOOke印er無法進行領導者選舉,zookeeper的領導者選舉必須要奇數節點的奇怪限制。另外,Zookeeper的領導者選舉實現雖然比原始的Paxos要簡化,但是它仍然存在領導者(Leader)、跟隨者(Follower)、觀察者(observer)、學習者(Learner)等眾多角色和跟隨狀態(Following)、尋找狀態(Looking)、觀察狀態(Observing)、領導狀態(Leading)等複雜狀態。一個zookeeper的選舉流程大致如下:
[0011]選舉線程由當前Follower發起選舉的線程擔任,其主要功能是對投票結果進行統計,並選出推薦的Follower ;選舉線程首先向所有Follower發起一次詢問(包括自己);選舉線程收到回復後,驗證是否是自己發起的詢問(驗證ZXid是否一致),然後獲取對方的id(myid),並存儲到當前詢問對象列表中,最後獲取對方提議的leader相關信息(id,zxid),並將這些信息存儲到當次選舉的投票記錄表中;收到所有Follower回復以後,就計算出zxid最大的那個Follower,並將這個Follower相關信息設置成下一次要投票的Follower ;線程將當前zxid最大的Follower設置為當前Follower要推薦的Leader,如果此時獲勝的Follower獲得n/2+l的Follower票數,設置當前推薦的leader為獲勝的Follower,將根據獲勝的Follower相關信息設置自己的狀態,否則,繼續這個過程,直到leader被選舉出來。通過流程分析我們可以得出:要使Leader獲得多數Follower的支持,則Follower總數必須是奇數2n+l,且存活的Follower的數目不得少於n+1。

【發明內容】

[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]接收到所述協同客戶端的節點更新請求後,使用所述節點更新請求中攜帶的值對所述節點更新請求中指定的節點的值進行更新;
[0047]接收到所述協同客戶端的獲取節點信息請求後,將所述節點信息請求中指定的節點的值返回給所述協同客戶端;
[0048]接收到所述協同客戶端的節點刪除請求後,刪除所述節點刪除請求中指定的節
佔.[0049]接收到所述協同客戶端的域刪除請求後,刪除所述域刪除請求中指定的域及其下的所有節點;
[0050]接收到所述協同客戶端的域獲取請求後,返回所述域獲取請求中指定的域中所有節點的值。
[0051]上述協同器還可具有以下特點,所述協同器為多個協同器中的協同器領導者,且所述協同器領導者上的域及其下的節點信息與協同器候選者同步,所述協同器候選者為所述多個協同器中除所述協同器領導者外的協同器。
[0052]上述協同器還可具有以下特點,所述協同器還包括:領導者選舉模塊,用於:在領導者選舉觸發條件滿足且所述協同器被觸發時,判斷所述協同器是否為協同器領導者,如果是,返回所述協同器是協同器領導者;否則,所述協同器查詢其餘協同器中是否有協同器領導者,如果有,則返回查詢到的協同器領導者;如果所有協同器均不是協同器領導者,則所述被觸發的協同器設置為協同器領導者並返回。
[0053]上述協同器還可具有以下特點,所述領導者選舉觸發條件包括如下之一或其組合:
[0054]集群啟動初始化時,所述集群為所述協同器所管理的協同客戶端的集合;
[0055]所述集群重啟時;
[0056]所述協同器為協同器候選者且接收到協同客戶端的操作請求,且當前的協同器領導者不能提供服務。
[0057]本申請包括以下優點:[0058]1、本申請對協同客戶端進行協同管理時,配置僅為域和節點兩層,簡化了配置,提高了性能。
[0059]2、本申請事件處理可以自由控制是否持續響應信息變化。
[0060]3、本申請的領導者選舉,只存在領導者和候選者兩種角色,同一時刻只有一個協同器處於領導狀態,其餘處於候選狀態,領導者的選舉快捷,易於實現。
[0061]當然,實施本申請的任一產品並不一定需要同時達到以上所述的所有優點。
【專利附圖】

【附圖說明】
[0062]圖1是現有Zookeeper算法實現示意圖;
[0063]圖2是本申請實施例分布式協同方法示意圖;
[0064]圖3是本申請實施例領導者選舉示意圖;
[0065]圖4是本申請實施例1示意圖;
[0066]圖5是本申請實施例協同器框圖。
【具體實施方式】
[0067]為使本申請的目的、技術方案和優點更加清楚明白,下文中將結合附圖對本申請的實施例進行詳細說明。需要說明的是,在不衝突的情況下,本申請中的實施例及實施例中的特徵可以相互任意組合。
[0068]另外,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同於此處的順序執行所示出或描述的步驟。
[0069]本申請提出一種分布式協同方法,採用精簡的兩層結構的配置中心和更直觀的容易保證業務邏輯完整性的內容變化事件以及狀態輪循,以及簡化的領導者選舉算法實現。
[0070]本申請實施例提供一種分布式協同方法,包括:
[0071]協同器接收到來自協同客戶端的節點創建請求後,為所述協同客戶端建立節點,並確定所述節點所屬的域,其中,每個節點只屬於一個域;
[0072]以及,在節點發生變化或域發生變化時,所述協同器通知滿足預設條件的協同客戶端。
[0073]在本實施例的一種備選方案中,所述節點創建請求中還攜帶節點的值,所述協同器為所述協同客戶端建立所述節點時,還保存所述節點的值。
[0074]在本實施例的一種備選方案中,還包括:
[0075]所述協同器接收到協同客戶端的設置節點監聽請求後,從所述設置節點監聽請求中獲取發送該設置節點監聽請求的協同客戶端監聽的節點;和/或,接收到協同客戶端的設置域監聽請求後,從所述設置域監聽請求中獲取發送該設置域監聽請求的協同客戶端監聽的域;
[0076]在節點發生變化或域發生變化時,所述協同器通知滿足預設條件的協同客戶端包括:
[0077]在節點發生變化或域發生變化時,所述協同器通知監聽所述發生變化的節點或域的協同客戶端。通知的方式可以是事件響應。也可以通過其他方式通知。
[0078]在本實施例的一種備選方案中,所述設置節點監聽請求或者所述設置域監聽請求中還攜帶是否連續響應的指示信息;
[0079]如果所述設置節點監聽請求或者所述設置域監聽請求中攜帶連續響應的指示信息,則所述協同器在所述節點或域每次發生變化時,均通知所述滿足預設條件的協同客戶端;
[0080]如果所述設置節點監聽請求或者所述設置域監聽請求中攜帶不連續響應的指示信息,則所述協同器在接收到所述設置節點監聽請求或者所述設置域監聽請求後,僅在所述節點或域首次發生變化時通知所述滿足預設條件的協同客戶端。
[0081]在本實施例的一種備選方案中,所述協同器還用於執行如下之一或其組合:
[0082]接收到所述協同客戶端的節點更新請求後,使用所述節點更新請求中攜帶的值對所述節點更新請求中指定的節點的值進行更新;
[0083]接收到所述協同客戶端的獲取節點信息請求後,將所述節點信息請求中指定的節點的值返回給所述協同客戶端;
[0084]接收到所述協同客戶端的節點刪除請求後,刪除所述節點刪除請求中指定的節
佔.[0085]接收到所述協同客戶端的域刪除請求後,刪除所述域刪除請求中指定的域及其下的所有節點;
[0086]接收到所述協同客戶端的域獲取請求後,返回所述域獲取請求中指定的域中所有節點的值。
[0087]在本實施例的一種備選方案中,所述協同器為多個協同器中的協同器領導者,所述多個協同器中除所述協同器領導者外的為協同器候選者,所述協同器領導者上的域及其下的節點信息與所述協同器候選者同步。
[0088]在本實施例的一種備選方案中,還包括:
[0089]在領導者選舉觸發條件滿足時,所述多個協同器中被觸發的協同器判斷自己是否為協同器領導者,如果是,返回自己是協同器領導者;
[0090]否則,所述被觸發的協同器查詢其餘協同器中是否有協同器領導者,如果有,則返回查詢到的協同器領導者;如果所有協同器均不是協同器領導者,則被觸發的協同器將自己設置為協同器領導者並返回。
[0091]在本實施例的一種備選方案中,所述領導者選舉觸發條件包括如下之一或其組合:
[0092]集群啟動初始化時,所述集群為所述協同器所管理的協同客戶端的集合;
[0093]所述集群重啟時;
[0094]所述協同器為協同器候選者且接收到協同客戶端的操作請求,且當前的協同器領導者不能提供服務。
[0095]在存在多個協同器時,協同客戶端可以通過查詢方式獲知協同器領導者,當然,也可以由協同器領導者告知協同客戶端哪個協同器是協同器領導者。
[0096]下面通過一個實施例進一步說明本申請。
[0097]本申請提供的分布式協同系統,包括協同器和協同客戶端,協同器上建立一個domain(域),node(節點)兩層結構的節點信息。其中,domain可以是分類或者包,node可以是具體屬性,domain和node可以根據需求設計命名,比如可以將domain命名為「a.b.c...」表不一個樹型類目。一個domain下可以有很多個node,每個node只指定一個domain,可以通過domain返回它下面所有的node。domain不需要單獨建立,通常在建立node時,如果不存在domain會自動創建。如果domain下沒有node 了,該domain會自動刪除。如果刪除domain,該domain下面node也都會刪除。每個node下可以存放一個值,可以是任意對象。
[0098]所有的節點信息存放在協同器領導者和協同器候選者(也稱備份者)裡,協同客戶端上安裝有協同器代理,通過協同器代理與協同器交互,實現對協同器的操作。如圖2所
/Jn ο
[0099]從圖2可以看到,協同器提供domain,node的兩層配置信息結構管理,以及同步備份、領導者選舉等功能。集群中可以有一個協同器領導者和多個協同器候選者,它們的配置信息(即域及其下的節點信息,包括節點的值)是同步複製的,該配置信息可以以內存的方式保存在協同器內,當然也可以非內存的方式保存。當然,也可以只存在一個協同器,此時,該協同器即為協同器領導者。
[0100]協同客戶端上安裝的協同器代理提供對節點進行一系列的交互操作,並且結合協同器的領導者選舉等功能,共同來實現眾多分布式協同功能,協同器代理提供的操作包括但不局限於:
[0101]1、創建node:通過提供domain和node的名稱,以及值,進行創建節點;
[0102]2、更新node:通過提供domain和node的名稱,對指定的域下的節點的值進行更新;
[0103]3、獲取node:通過提供domain和node的名稱,獲取node的值;
[0104]4、獲取domain下所有node:通過提供domain,獲取該domain下所有node的值;
[0105]5、刪除node:通過提供domain和node的名稱,對node進行刪除;
[0106]6、刪除domain:通過提供domain的名稱,對domain下所有node進行刪除;
[0107]7、設置node監聽:當node發生變化時(包括node的值變化,node刪除等),提供事件響應,並可指定是否連續響應;
[0108]8、設置domain監聽:當domain發生變化時(包括:domain下任意一個node值發生變化,domain下有node增加或刪除等),提供事件響應,並可指定是否連續響應。
[0109]當協同器領導者出現宕機等故障時,協同器候選者繼續提供服務,領導者選舉流程如圖3所示,包括:
[0110]當領導者選舉觸發條件滿足後,會首先對一臺協同器進行詢問,該協同器會判斷自己是否為協同器領導者,如果是就返回,說明已經存在協同器領導者;如果不是,就需要進一步逐個詢問其他協同器是否為協同器領導者,如果其中一個是,那麼返回查詢到的協同器領導者;如果所有協同器都不是協同器領導者,最初接受詢問的那臺協同器就將自己設置為協同器領導者,完成領導者選舉,該協同器領導者為協同客戶端提供服務。
[0111]在本實施例的一種備選方案中,領導者選舉觸發條件包括但不限於:集群啟動初始化時,集群重啟時,協同器領導者不能提供服務,協同器候選者接收到來自協同客戶端的請求時。具體的,當集群初始化啟動時,需要選取一臺伺服器作為領導者,當出現故障重新啟動和維護時也需要重新選舉,或者當原有的領導者故障不能提供服務時,協同器候選者接收到請求時,也要進行領導者選舉。[0112]協同器領導者不能提供服務,協同器候選者接收到來自協同客戶端的請求時觸發的領導者選舉流程具體包括:協同客戶端發現無法與協同器領導者建立連接,則發送請求至協同器候選者,協同器候選者開始領導者選舉過程;或者,協同客戶端發送請求至協同器領導者,協同器領導者無法提供服務時,將請求轉發至協同器候選者,協同器候選者開始領導者選舉過程。
[0113]協同器客戶端和協同器交互時,會進行查詢,並由查詢到的協同器領導者與協同器客戶端交互。
[0114]下面通過具體實施例進一步說明本申請的應用。
[0115]實施例1
[0116]將本申請提供的分布式協同方法應用到集群管理。
[0117]對於像淘寶這樣上萬臺伺服器集群環境的大型網際網路應用,通常面臨這樣一種需求:需要一個集群管理者管理集群裡的伺服器,同一個集群中任何一臺伺服器宕機,其他伺服器都能感知。如果是集群管理者宕機,集群中所有的伺服器不能受任何影響,能實時切換到備份管理者上被提供服務。如圖4所示。圖4中的主管理者相同於協同器領導者,備管理者相當於協同器候選者。
[0118]集群管理者(主管理者和備管理者)內部提供一個「集群組」(group)和「伺服器"(server)的配置信息,相當於本申請中的域和節點,分別用來表示不同的集群和它包含的伺服器。這裡的集群管理者採用一個或者多個協同器實現。
[0119]當集群中的伺服器(相當於協同客戶端)啟動時,會通過協同器代理向集群管理者進行註冊,在集群管理者的配置信息中建立一個該伺服器的節點信息,當該伺服器故障時,集群管理者會實時刪除該伺服器的節點信息。伺服器註冊後,會對該集群組進行監聽,這裡採用domain監聽實現,當集群組的配置信息有變更時,也就是其他伺服器啟動或者死去時,伺服器都會通過變化事件實時感知。
[0120]集群管理者包括主、備兩個實例,這裡採用協同器領導者和協同器候選者實現,它們之間數據是同步的,也就是主集群管理者的配置信息發生變化時,備管理者上的配置信息也會實時發生更新,如果主管理者故障宕機,備管理者會馬上提供管理服務,伺服器可以從備管理者獲取集群的實時信息。
[0121]實施例2,
[0122]將本申請提供的分布式協同方法應用到配置信息的統一。
[0123]在分布式多臺機器環境下,維持統一的配置信息是最常見的需求,當配置信息改變時,所有的機器能實時獲取並更新。例如淘寶的業務服務需求,每個業務系統如商品、交易對外都提供的有服務地址,而且依賴其他業務系統的服務,那麼服務地址是一個公共使用的配置信息,如果服務地址變換,應該所有的業務系統能實時獲知並響應變換。
[0124]假如商品業務系統需要註冊自己的服務地址,則在協同器上建立一個「domain =商品,node =服務,value =地址1、地址2、地址3...」的節點;
[0125]如果交易業務系統依賴商品的服務,則可以對「domain =商品,node =服務」進行節點監聽,如果商品業務系統的服務地址有變化(即節點的value發生變化),協同器會通知交易業務系統,從而交易業務系統能夠實時獲知並響應變化。
[0126]如果協同器領導者出現故障,交易業務系統仍然能找到協同器候選者,觸發領導者選舉過程,選取協同器領導者後,繼續獲取商品業務系統的服務地址信息,而不受任何影響。
[0127]實施例3,分布式鎖的應用
[0128]分布式環境下,多個業務系統爭搶一個公共資源時,通常需要分布式鎖的控制,t匕如淘寶的一個數據下載系統,如果太多的業務系統並發的進行數據下載,造成大量的壓力導致緩慢,可以通過分布式鎖進行控制。
[0129]首先,數據下載系統在協同器上建立一個鎖的domain,然後各業務系統通過協同器代理在該domain下建立一個自己的node用來排隊,並監聽該domain的變化信息。
[0130]某個業務系統如果發現自己的node滿足預設條件,比如自己的node排在首位,便下載數據,下載完成後刪除該node達到釋放鎖的目的,這樣domain的信息發生變化,協同器發送事件給監聽該domain的業務系統,其餘的業務系統收到事件,檢查自己的node是否輪到了首位,如果發現自己的node排在首位,便下載數據,否則繼續等待,這樣通過分布式鎖依次執行完成所有的數據下載。
[0131]對於上面所述的淘寶數據下載系統場景,假設共有10臺計算機,都需要從一臺伺服器上下載數據,這臺伺服器的帶寬資源有限,無法支持10臺計算機多個進程同時請求下載,可以通過上述分布式鎖進行維持次序。
[0132]首先協同器建立一個domain用於代表鎖,然後10臺計算機分別監聽該domain的變化,10臺計算機按照上面所述,依次在該domain下建立各自的node,該node相當於一個令牌。然後各計算機檢查自己是否處在第一位,如果是,就下載數據,當自己完成下載後,將該node刪除,然後第二位開始下載...直到10臺計算機全部下載完為止。
[0133]本申請實施例還提供一種協同器,如圖5所示,包括:
[0134]節點管理模塊501,用於接收到來自協同客戶端的節點創建請求後,為所述協同客戶端建立節點,並確定所述節點所屬的域,其中,每個節點只屬於一個域;
[0135]通知模塊502,用於在節點發生變化或域發生變化時,通知滿足預設條件的協同客戶端。
[0136]在本實施例的一種備選方案中,所述節點管理模塊501還用於:為所述協同客戶端建立所述節點時,獲取並保存所述節點創建請求中攜帶的所述節點的值。
[0137]在本實施例的一種備選方案中,所述節點管理模塊501還用於:接收到協同客戶端的設置節點監聽請求後,從所述設置節點監聽請求中獲取發送該設置節點監聽請求的協同客戶端監聽的節點;和/或,接收到協同客戶端的設置域監聽請求後,從所述設置域監聽請求中獲取發送該設置域監聽請求的協同客戶端監聽的域;
[0138]所述通知模塊502在節點發生變化或域發生變化時,通知滿足預設條件的協同客戶端包括:
[0139]在節點發生變化或域發生變化時,通知監聽所述發生變化的節點或域的協同客戶端。
[0140]在本實施例的一種備選方案中,所述節點管理模塊501還用於:保存所述設置節點監聽請求或者所述設置域監聽請求中攜帶的是否連續響應的指示信息;
[0141]所述通知模塊502還用於:如果所述指示信息為連續響應,則在所述節點或域每次發生變化時,均通知所述滿足預設條件的協同客戶端;如果所述指示信息為不連續響應,則僅在接收到所述設置節點監聽請求或者所述設置域監聽請求後,所述節點或域首次發生變化時通知所述滿足預設條件的協同客戶端。
[0142]在本實施例的一種備選方案中,所述節點管理模塊501還用於執行如下之一或其組合:
[0143]接收到所述協同客戶端的節點更新請求後,使用所述節點更新請求中攜帶的值對所述節點更新請求中指定的節點的值進行更新;
[0144]接收到所述協同客戶端的獲取節點信息請求後,將所述節點信息請求中指定的節點的值返回給所述協同客戶端;
[0145]接收到所述協同客戶端的節點刪除請求後,刪除所述節點刪除請求中指定的節
佔.[0146]接收到所述協同客戶端的域刪除請求後,刪除所述域刪除請求中指定的域及其下的所有節點;
[0147]接收到所述協同客戶端的域獲取請求後,返回所述域獲取請求中指定的域中所有節點的值。
[0148]在本實施例的一種備選方案中,所述協同器為多個協同器中的協同器領導者,且所述協同器領導者上的域及其下的節點信息與協同器候選者同步,所述協同器候選者為所述多個協同器中除所述協同器領導者外的協同器。
[0149]在本實施例的一種備選方案中,所述協同器還包括:領導者選舉模塊503,用於:在領導者選舉觸發條件滿足且所述協同器被觸發時,判斷所述協同器是否為協同器領導者,如果是,返回所述協同器是協同器領導者;否則,所述協同器查詢其餘協同器中是否有協同器領導者,如果有,則返回查詢到的協同器領導者;如果所有協同器均不是協同器領導者,則將所述被觸發的協同器設置為協同器領導者並返回。
[0150]在本實施例的一種備選方案中,所述領導者選舉觸發條件包括如下之一或其組合:
[0151]集群啟動初始化時,所述集群為所述協同器所管理的協同客戶端的集合;
[0152]所述集群重啟時;
[0153]所述協同器為協同器候選者且接收到協同客戶端的操作請求,且當前的協同器領導者不能提供服務。
[0154]本領域普通技術人員可以理解上述方法中的全部或部分步驟可通過程序來指令相關硬體完成,所述程序可以存儲於計算機可讀存儲介質中,如只讀存儲器、磁碟或光碟等。可選地,上述實施例的全部或部分步驟也可以使用一個或多個集成電路來實現。相應地,上述實施例中的各模塊/單元可以採用硬體的形式實現,也可以採用軟體功能模塊的形式實現。本申請不限制於任何特定形式的硬體和軟體的結合。
【權利要求】
1.一種分布式協同方法,其特徵在於,包括: 協同器接收到來自協同客戶端的節點創建請求後,為所述協同客戶端建立節點,並確定所述節點所屬的域,其中,每個節點只屬於一個域; 以及,在節點發生變化或域發生變化時,所述協同器通知滿足預設條件的協同客戶端。
2.如權利要求1所述的方法,其特徵在於,所述節點創建請求中還攜帶節點的值,所述協同器為所述協同客戶端建立所述節點時,還保存所述節點的值。
3.如權利要求1所述的方法,其特徵在於,所述方法還包括: 所述協同器接收到協同客戶端的設置節點監聽請求後,從所述設置節點監聽請求中獲取發送該設置節點監聽請求的協同客戶端監聽的節點;和/或,接收到協同客戶端的設置域監聽請求後,從所述設置域監聽請求中獲取發送該設置域監聽請求的協同客戶端監聽的域; 在節點發生變化或域發生變化時,所述協同器通知滿足預設條件的協同客戶端包括:在節點發生變化或域發生變化時,所述協同器通知監聽所述發生變化的節點或域的協同客戶端。
4.如權利要求3所述的方法,其特徵在於,所述設置節點監聽請求或者所述設置域監聽請求中還攜帶是否連續響應的指示信息; 如果所述設置節點監聽請求或者所述設置域監聽請求中攜帶連續響應的指示信息,則所述協同器在所述節點或域每次發生變化時,均通知所述滿足預設條件的協同客戶端; 如果所述設置節點監聽請求或者所述設置域監聽請求中攜帶不連續響應的指示信息,則所述協同器在接收到所述設置節點監聽請求或者所述設置域監聽請求後,僅在所述節點或域首次發生變化時通知所述滿足預設條件的協同客戶端。
5.如權利要求2所述的方法,其特徵在於,所述協同器還用於執行如下之一或其組合: 接收到所述協同客戶端的節點更新請求後,使用所述節點更新請求中攜帶的值對所述節點更新請求中指定的節點的值進行更新; 接收到所述協同客戶端的獲取節點信息請求後,將所述節點信息請求中指定的節點的值返回給所述協同客戶端; 接收到所述協同客戶端的節點刪除請求後,刪除所述節點刪除請求中指定的節點;接收到所述協同客戶端的域刪除請求後,刪除所述域刪除請求中指定的域及其下的所有節點; 接收到所述協同客戶端的域獲取請求後,返回所述域獲取請求中指定的域中所有節點的值。
6.如權利要求1所述的方法,其特徵在於,所述方法還包括:所述協同器為多個協同器中的協同器領導者,所述多個協同器中除所述協同器領導者外的為協同器候選者,所述協同器領導者上的域及其下的節點信息與所述協同器候選者同步。
7.如權利要求6所述的方法,其特徵在於,所述方法還包括: 在領導者選舉觸發條件滿足時,所述多個協同器中被觸發的協同器判斷自己是否為協同器領導者,如果是,返回自己是協同器領導者; 否則,所述被觸發的協同器查詢其餘協同器中是否有協同器領導者,如果有,則返回查詢到的協同器領導者;如果所有協同器均不是協同器領導者,則被觸發的協同器將自己設置為協同器領導者並返回。
8.如權利要求7所述的方法,其特徵在於,所述領導者選舉觸發條件包括如下之一或其組合: 集群啟動初始化時,所述集群為所述協同器所管理的協同客戶端的集合; 所述集群重啟時; 所述協同器為協同器候選者且接收到協同客戶端的操作請求,且當前的協同器領導者不能提供服務。
9.一種協同器,其特徵在於,包括: 節點管理模塊,用於接收到來自協同客戶端的節點創建請求後,為所述協同客戶端建立節點,並確定所述節點所屬的域,其中,每個節點只屬於一個域; 通知模塊,用於在節點發生變化或域發生變化時,通知滿足預設條件的協同客戶端。
10.如權利要求9所述的協同器,其特徵在於,所述節點管理模塊還用於:為所述協同客戶端建立所述節點時,獲取並保存所述節點創建請求中攜帶的所述節點的值。
11.如權利要求9所述的協同器,其特徵在於, 所述節點管理模塊還用於:接收到協同客戶端的設置節點監聽請求後,從所述設置節點監聽請求中獲取發送該設置節點監聽請求的協同客戶端監聽的節點;和/或,接收到協同客戶端的設置域監聽請求後,從所述設置域監聽請求中獲取發送該設置域監聽請求的協同客戶端監聽的域; 所述通知模塊在節點發生變化或域發生變化時,通知滿足預設條件的協同客戶端包括: 在節點發生變化或域發生變化時,通知監聽所述發生變化的節點或域的協同客戶端。
12.如權利要求11所述的協同器,其特徵在於, 所述節點管理模塊還用於:保存所述設置節點監聽請求或者所述設置域監聽請求中攜帶的是否連續響應的指示信息; 所述通知模塊還用於:如果所述指示信息為連續響應,則在所述節點或域每次發生變化時,均通知所述滿足預設條件的協同客戶端;如果所述指示信息為不連續響應,則僅在接收到所述設置節點監聽請求或者所述設置域監聽請求後,所述節點或域首次發生變化時通知所述滿足預設條件的協同客戶端。
13.如權利要求10所述的協同器,其特徵在於,所述節點管理模塊還用於執行如下之一或其組合: 接收到所述協同客戶端的節點更新請求後,使用所述節點更新請求中攜帶的值對所述節點更新請求中指定的節點的值進行更新; 接收到所述協同客戶端的獲取節點信息請求後,將所述節點信息請求中指定的節點的值返回給所述協同客戶端; 接收到所述協同客戶端的節點刪除請求後,刪除所述節點刪除請求中指定的節點; 接收到所述協同客戶端的域刪除請求後,刪除所述域刪除請求中指定的域及其下的所有節點; 接收到所述協同客戶端的域獲取請求後,返回所述域獲取請求中指定的域中所有節點的值。
14.如權利要求9所述的協同器,其特徵在於,所述協同器為多個協同器中的協同器領導者,且所述協同器領導者上的域及其下的節點信息與協同器候選者同步,所述協同器候選者為所述多個協同器中除所述協同器領導者外的協同器。
15.如權利要求14所述的協同器,其特徵在於,所述協同器還包括:領導者選舉模塊,用於:在領導者選舉觸發條件滿足且所述協同器被觸發時,判斷所述協同器是否為協同器領導者,如果是,返回所述協同器是協同器領導者;否則,所述協同器查詢其餘協同器中是否有協同器領導者,如果有,則返回查詢到的協同器領導者;如果所有協同器均不是協同器領導者,則所述被觸發的協同器設置為協同器領導者並返回。
16.如權利要求15所述的協同器,其特徵在於,所述領導者選舉觸發條件包括如下之一或其組合: 集群啟動初始化時,所述集群為所述協同器所管理的協同客戶端的集合; 所述集群重啟時; 所述協同器為協同器候選者且接收到協同客戶端的操作請求,且當前的協同器領導者不能提供服務。
【文檔編號】H04L29/08GK103973725SQ201310032087
【公開日】2014年8月6日 申請日期:2013年1月28日 優先權日:2013年1月28日
【發明者】彭淵 申請人:阿里巴巴集團控股有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀