摘要: Zookeeper客戶端和服務端維持一個長連接,每隔10s向服務端發送一個心跳,服務端返回客戶端一個響應。這就是一個Session連接,擁有全局唯一的session id。Session連接通常是一直有效,如果因為網絡原因斷開了連接,客戶端會使用相同的session id進行重連。由于服務端保留了session的各種狀態,尤其是各種瞬時節點是否刪除依賴于session是否失效。
Session失效問題
通常客戶端主動關閉連接認為是一次session失效。另外也有可能因為其它未知原因,例如網絡超時導致的session失效問題。在服務端看來,無法區分session失效是何種情況,一次一旦發生session失效,一定時間后就會將session持有的所有watcher以及瞬時節點刪除。
而對于Zookeeper客戶端而言,一旦發生失效不知道是否該重連,這涉及到watcher和瞬時節點問題,因此Zookeeper客戶端認為,一旦發生了seesion失效,那么就認為客戶端死掉了。從而所有操作都不能夠進行。參考 How should I handle SESSION
閱讀全文