更新時間:2021-03-11 來源:黑馬程序員 瀏覽量:
同一個事件類型在不同的連接狀態(tài)中代表的含義有所不同,下表列舉了常見的連接狀態(tài)和事件類型,如表1所示。
表1 Zookeeper連接狀態(tài)和事件類型
連接狀態(tài) | 狀態(tài)含義 | 事件類型 | 事件含義 |
---|---|---|---|
Disconnected | 連接失敗 | NodeCreated | 節(jié)點被創(chuàng)建 |
SyncConnected | 連接成功 | NodeDataChanged | 節(jié)點數(shù)據(jù)變更 |
AuthFailed | 認證失敗 | NodeChildrentChanged | 子節(jié)點數(shù)據(jù)變更 |
Expired | 會話過期 | NodeDeleted | 節(jié)點被刪除 |
從表1可知,Zookeeper常見的連接狀態(tài)和事件類型分別有4種,具體含義如下。
當客戶端斷開連接,這時客戶端和服務(wù)器的連接就是Disconnected狀態(tài),說明連接失敗;當客戶端和服務(wù)器的某一個節(jié)點建立連接,并完成一次version、zxid的同步,這時客戶端和服務(wù)器的連接狀態(tài)就是SyncConnected,說明連接成功;當Zookeeper客戶端連接認證失敗,這時客戶端和服務(wù)器的連接狀態(tài)就是AuthFailed,說明認證失敗;當客戶端發(fā)送Request請求,通知服務(wù)器其上一個發(fā)送心跳的時間,服務(wù)器收到這個請求后,通知客戶端下一個發(fā)送心跳的時間是哪個時間點。當客戶端時間戳達到最后一個發(fā)送心跳的時間,而沒有收到服務(wù)器發(fā)來的新發(fā)送心跳的時間,即認為自己下線,這時客戶端和服務(wù)器的連接狀態(tài)就是Expired狀態(tài),說明會話過期。
當節(jié)點被創(chuàng)建時,NodeCreated事件被觸發(fā);當節(jié)點的數(shù)據(jù)發(fā)生變更時,NodeDataChanged事件被觸發(fā);當節(jié)點的直接子節(jié)點被創(chuàng)建、被刪除、子節(jié)點數(shù)據(jù)發(fā)生變更時,NodeChildrentChanged事件被觸發(fā);當節(jié)點被刪除時,NodeDeleted事件被觸發(fā)。
猜你喜歡: