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