2017-02-23 18 views
0

我需要提供一個H/A機制。如何使用zookeeper實現高可用性服務(2個節點)

我明白泰德動物園管理員可以選擇作爲地區領導人選舉

我在找這個流程正確的模式:

我需要實現調用流程的服務。 當它開始流程[流程是循環流程]時,它必須驗證它是領導者。 (通過它的IP地址說)。

據我所知,我可以把一個值放入一個定義輸入 實例的動物園管理員,並在1循環結束或一段時間內處理它。

它是正確的模式?

也似乎競爭狀態的問題,如果我使用類似:

... 
... 
List<String> names = zk.getChildren(path, false); 
String id = null; 
// See whether we have already run for election in this process 
for (String name : names) { 
{ 
    if (name.startsWith(myIP)) { 
     id = name; 
     break; 
    } 
} 
if (id == null) { 
id = zk.create(path + "/" + myIP, new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL); 
} 
boolean isLeader = id != null; 

例如:

2服務讀空 比第二覆蓋第一署名,兩者的運行任務。

你能幫忙嗎?

感謝

回答

1

使用ZooKeeper的正確是很困難的,並採取它的API和語義的一些研究。有一些不錯的高級庫,如Curator已經實現了常用算法,如leader election。 ZooKeeper文檔也有一個recipe for leader election

相關問題