某分布式系統中,主節點可以有多台,可以動態上下線,任意一台客戶端都能實時感知到主節點伺服器上下線的變化
伺服器端啟動時去註冊資訊【建立的都是臨時節點】
客戶端啟動就getchildren(),獲取到當前伺服器列表,並且註冊監聽
當某一伺服器下線時,zookeeper集群中該伺服器對應的節點消失
伺服器節點上下線事件通知,告知註冊監聽者
註冊監聽者採取相應措施,執行process()程序【重新獲取伺服器列表,並且註冊監聽】
bin/zkserver.sh start
bin/zkcli.sh
create /servers "servers"
public class distributeserver
private void business() throws interruptedexception
private void regist(string hostname) throws keeperexception, interruptedexception
private string connectstring = "192.168.1.10:2181,192.168.1.11:2181,192.168.1.12:2181";
private int sessiontimeout = 2000;
private zookeeper zkclient;
private void getconnect() throws ioexception
});}}
帶序號【-s】的臨時【-e】節點
public class distributeclient
private void business() throws interruptedexception
private void getchildren() throws keeperexception, interruptedexception
system.out.println(hosts);
} private string connectstring = "192.168.1.10:2181,192.168.1.11:2181,192.168.1.12:2181";
private int sessiontimeout = 2000;
private zookeeper zkclient;
private void getconnect() throws ioexception catch (keeperexception e) catch (interruptedexception e)
}});
}}
zooKeeper伺服器角色
zookeeper伺服器角色 leader 事務請求的唯一排程和處理者,保證集群事務處理的順序性 集群內部各伺服器的排程者 follower 處理客戶端非事務請求,事務請求給leader伺服器 參與事務請求proposal的投票 參與leader選舉投票 observer 處理客戶端非事務請求,事務...
伺服器監聽客戶
伺服器端 private void button1 click object sender,eventargs e chatsocket.close acceptedsocket.close catch argumentnullexception es catch socketexception e...
linux伺服器安裝zookeeper
二 解壓安裝包 三 四.修改zoo.cfg配置檔案 vim zoo.cfg 五.在安裝包根目錄下建立data和log存放zk的資料以及日誌的 六.設定環境變數 etc profile 七 重置配置 source etc profile 八 啟動zookeeper sh zkserver.sh sta...