一、前言
前面分析了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。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26