一、前言

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

二、會話

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

2.1 會話狀態(tài)

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

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

2.2 會話創(chuàng)建

Session是Zookeeper中的會話實體,代表了一個客戶端會話,其包含了如下四個屬性

1. sessionID。會話ID,唯一標(biāo)識一個會話,每次客戶端創(chuàng)建新的會話時,Zookeeper都會為其分配一個全局唯一的sessionID。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式