分佈式學習--Zookeeper相關安裝、配置以及使用筆記

zookeeper

協同服務系統。
分佈式系統協同處理。
小集羣.

單機版

文件系統層級結構存儲。
path:/home/centos/xxx = znode ---> byte[] <= 1M
節點類型:1. 永久 2.臨時 3.序列節點。10遞增.
		  數據狀態:版本.

zkServer.sh start
zkServer.sh status

zkCli.sh -server s201:2181
[zkCli]ls /
[zkCli]create / ""
[zkCli]get /
[zkCli]set /
[zkCli]rmr /

api
ZooKeeper zk = new ZooKeeper("s201:2181,s202:2181,...");

zk架構

1.Client
	從server獲取信息,週期性發送數據給server,表示自己還活着。
	client連接時,server回傳ack信息。
	如果client沒有收到reponse,自動重定向到另一個server.

2.Server
	zk集羣中的一員,向client提供所有service,回傳ack信息給client,表示自己還活着。

3.ensemble
	一組服務器。
	最小節點數是3.

4.Leader
	如果連接的節點失敗,自定恢復,zk服務啓動時,完成leader選舉。

5.Follower
	追尋leader指令的節點。

znode

zk中的節點,維護了stat,由Version number, Action control list (ACL), Timestamp,Data length.構成.
data version		//數據寫入的過程變化

ACL					//action control list,

節點類型

1.持久節點
	client結束,還存在。
	
2.臨時節點
	在client活動時有效,斷開自動刪除。臨時節點不能有子節點。
	leader推選是使用。

3.序列節點
	在節點名之後附加10個數字,主要用於同步和鎖.

Session

Session中的請求以FIFO執行,一旦client連接到server,session就建立了。sessionid分配client.

client以固定間隔向server發送心跳,表示session是valid的,zk集羣如果在超時時候,沒有收到心跳,
判定爲client掛了,與此同時,臨時節點被刪除。

Watches

觀察。
client能夠通過watch機制在數據發生變化時收到通知。
client可以在read 節點時設置觀察者。watch機制會發送通知給註冊的客戶端。
觀察模式只觸發一次。
session過期,watch機制刪除了。

zk工作流程

zk集羣啓動後,client連接到其中的一個節點,這個節點可以leader,也可以follower。
連通後,node分配一個id給client,發送ack信息給client。
如果客戶端沒有收到ack,連接到另一個節點。
client週期性發送心跳信息給節點保證連接不會丟失。

如果client讀取數據,發送請求給node,node讀取自己數據庫,返回節點數據給client.


如果client存儲數據,將路徑和數據發送給server,server轉發給leader。
leader再補發請求給所有follower。只有大多數(超過半數)節點成功響應,則
寫操作成功。

leader推選過程(最小號選舉法)

1.所有節點在同一目錄下創建臨時序列節點。
2.節點下會生成/xxx/xx000000001等節點。
3.序號最小的節點就是leader,其餘就是follower.
4.每個節點觀察小於自己節點的主機。(註冊觀察者)
5.如果leader掛了,對應znode刪除了。
6.觀察者收到通知。

配置完全分佈式zk集羣

1.挑選3臺主機
	s201 ~ s203
2.每臺機器都安裝zk
	tar
	環境變量

3.配置zk配置文件
	s201 ~ s203
	[/soft/zk/conf/zoo.cfg]
	...
	dataDir=/home/centos/zookeeper

	server.1=s201:2888:3888
	server.2=s202:2888:3888
	server.3=s203:2888:3888

4.在每臺主機的/home/centos/zookeeper中添加myid,內容分別是1,2,3
	[s201]
	$>echo 1 > /home/centos/zookeeper/myid
	[s202]
	$>echo 2 > /home/centos/zookeeper/myid
	[s203]
	$>echo 3 > /home/centos/zookeeper/myid

5.啓動服務器集羣 
	$>zkServer.sh start
	...

6.查看每臺服務器的狀態
	$>zkServer.sh status

7.修改zk的log目錄
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章