一、前言

  前面分析了Zookeeper客戶端的細(xì)節(jié),接著繼續(xù)學(xué)習(xí)Zookeeper中的一個(gè)非常重要的概念:會(huì)話。

二、會(huì)話

  客戶端與服務(wù)端之間任何交互操作都與會(huì)話息息相關(guān),如臨時(shí)節(jié)點(diǎn)的生命周期、客戶端請(qǐng)求的順序執(zhí)行、Watcher通知機(jī)制等。Zookeeper的連接與會(huì)話就是客戶端通過實(shí)例化Zookeeper對(duì)象來實(shí)現(xiàn)客戶端與服務(wù)端創(chuàng)建并保持TCP連接的過程.

  2.1 會(huì)話狀態(tài)

  在Zookeeper客戶端與服務(wù)端成功完成連接創(chuàng)建后,就創(chuàng)建了一個(gè)會(huì)話,Zookeeper會(huì)話在整個(gè)運(yùn)行期間的生命周期中,會(huì)在不同的會(huì)話狀態(tài)中之間進(jìn)行切換,這些狀態(tài)可以分為CONNECTING、CONNECTED、RECONNECTING、RECONNECTED、CLOSE等。

  一旦客戶端開始創(chuàng)建Zookeeper對(duì)象,那么客戶端狀態(tài)就會(huì)變成CONNECTING狀態(tài),同時(shí)客戶端開始嘗試連接服務(wù)端,連接成功后,客戶端狀態(tài)變?yōu)镃ONNECTED,通常情況下,由于斷網(wǎng)或其他原因,客戶端與服務(wù)端之間會(huì)出現(xiàn)斷開情況,一旦碰到這種情況,Zookeeper客戶端會(huì)自動(dòng)進(jìn)行重連服務(wù),同時(shí)客戶端狀態(tài)再次變成CONNCTING,直到重新連上服務(wù)端后,狀態(tài)又變?yōu)镃ONNECTED,在通常情況下,客戶端的狀態(tài)總是介于CONNECTING和CONNECTED之間。但是,如果出現(xiàn)諸如會(huì)話超時(shí)、權(quán)限檢查或是客戶端主動(dòng)退出程序等情況,客戶端的狀態(tài)就會(huì)直接變更為CLOSE狀態(tài)。

網(wǎng)友評(píng)論