Zookeeper會話
Zookeeper會話的狀態(tài)可以分為以下四種:CONNECTING,CONNECTED,CLOSED和NOT_CONNECTED。下圖展示了會話的狀態(tài)和狀態(tài)之間的轉(zhuǎn)移過程:

會話的初始狀態(tài)為NOT_CONNECTED,狀態(tài)之間的轉(zhuǎn)移依賴于對應(yīng)事件的發(fā)生。
(1、當客戶端完成初始化后,會話狀態(tài)轉(zhuǎn)移到CONNECTING
(2、當客戶端與服務(wù)端的連接完成時,會話狀態(tài)轉(zhuǎn)移到CONNECTED
(3、當客戶端與服務(wù)端失去連接時,會話狀態(tài)轉(zhuǎn)移到CONNECTING,并試圖與另外一個服務(wù)端進行連接
(4、如果客戶端找到了一個新的服務(wù)端并建立連接,或者恢復與之前的服務(wù)端所建立的連接并且服務(wù)端認為會話仍然有效,會話狀態(tài)轉(zhuǎn)移到CONNECTED
(5、當會話失效或者客戶端主動關(guān)閉會話時,會話狀態(tài)變?yōu)镃LOSED
在創(chuàng)建會話時通常應(yīng)該設(shè)置會話超時時間t。如果服務(wù)端在設(shè)置的超時時間內(nèi)沒有收到客戶端發(fā)送的消息,那么會話失效。如果客戶端在t/3時間內(nèi)沒有收到服務(wù)端發(fā)送的消息,客戶端會向服務(wù)端發(fā)送心跳消息。如果在接下來的t/3時間內(nèi),客戶端仍然沒有收到服務(wù)端的消息,那么客戶端開始尋找另外的服務(wù)端建立連接。如果在剩下的t/3時間內(nèi)沒有找到另外的服務(wù)端建立連接,那么會話失效。當客戶端嘗試與不同的服務(wù)端建立連接時,一定要保證服務(wù)端的狀態(tài)至少與客戶端的狀態(tài)一樣新。
浙公網(wǎng)安備 33010602011771號