1. 程式人生 > >zookeeper學習系列(二)zookeeper簡介(續)

zookeeper學習系列(二)zookeeper簡介(續)

1 一致性

<1>讀操作
由於效能的原因,讀操作由zookeeper服務的記憶體提供,而且不參與寫操作的全域性排序,這一特性
會導致使用機制交流的客戶端與zookeeper狀態不一致。
為了避免這種情況,可以在讀之前能進行sync,它會強制它臉上的zookeeper與leader保持一致。
##但是sync是非同步執行,更新可能會在讀之後完成。


<2>寫操作
在ensemble中,跟隨者通過更新號來滯後領導者,結果導致只有大部分而不是歲所有的resemble
元素進行更新就能提交了。
<<1 將客戶端連線到跟著領導者的zookeeper伺服器上,客戶端連線到領導者,但是不能控制它,
跟隨者執行讀操作,領導者執行寫操作。
<<2 每一個對znode的更新都會給定一個唯一的全域性標示(zxid),更新是被排序的,小的先執行,
對於zookeeper說,這是分散式系統中的排序的唯一標準。
<<3 順序一致性:任何一個客戶端的更新都會按照他們的傳送順序。
<<4 原子性:成功或者失敗。客戶端知道結果
<<5 單系統映像:在一次會話中,無論系統連線哪臺伺服器,它與系統看見的檢視都是一樣的。


2 會話

<1>zookeeper客戶端與ensemble伺服器列表配置保持一致,啟動時,依次連線知道成功或者失敗。
連線即建立新的會話。
無論什麼時候,當會話空閒一定時間,客戶端有Ping程式請求保持活躍。


3 time

<1>tick time是zookeeper中的基本時間長度,為ensemble裡的伺服器所使用,用來定義對於
互動執行的排程。
<2>當會話超時時,每個會話都有伺服器給定的唯一身份和密碼,如果建立連線時,傳輸給
zookeeper,能恢復會話。
<3>zookeeper的ensemble越大,會話超時時間應該越長。連線超時,讀取超時,ping週期都為一個
函式定義在ensemble的一個函式中。因此當ensemble擴大,這些時間會變小。


4 狀態

<1>與zookeeper服務建立連線時,為conneting狀態,連線建立後,為connected狀態,斷開連線,
為disconnected狀態。
<2>zookeeper的watcher物件的倆個職責。
<<1 瞭解zookeeper狀態的改變。傳遞給zookeeper物件建構函式的watcher被用來檢測物件的改變。
<<2 瞭解znode的改變。使用watcher的專門例項(通過將其傳遞到對於的讀操作上)。