關於遇到的zookeeper問題以及嘗試的解決方案

在做(MacOS系統下)SSM+Dubbo(vesion 2.6.0)分模塊開發項目時,使用的是zookeeper3.4.6
爲註冊服務器並以本地磁盤啓動註冊中心,idea控制檯報錯

the zookeeper is not connecting yet!

或者

no provider...

又或

Exception: java.lang.NoClassDefFoundError thrown from the UncaughtExceptionHandler in thread "DubboZkclientConnector-SendThread(127.0.0.1:2181)"

很顯然是本地zookeeper的服務中斷,但終端服務沒有異常,考慮到請求超時,去修改/zookeeper…/conf中的zoo.cfg配置文件。

這裏有許多參數,網上有很多解釋,去官網看也沒看到啥,這裏參考一篇博客,點此進入

比如:

tickTime:ZK中的一個時間單元。ZK中所有時間都是以這個時間單元爲基礎,進行整數倍配置的。例如,session的最小超時時間是2*tickTime。

initLimit:Follower在啓動過程中,會從Leader同步所有最新數據,然後確定自己能夠對外服務的起始狀態。Leader允許F在 initLimit 時間內完成這個工作。通常情況下,我們不用太在意這個參數的設置。如果ZK集羣的數據量確實很大了,F在啓動的時候,從Leader上同步數據的時間也會相應變長,因此在這種情況下,有必要適當調大這個參數了。

minSessionTimeoutmaxSessionTimeout:Session超時時間限制,如果客戶端設置的超時時間不在這個範圍,那麼會被強制設置爲最大或最小時間。默認的Session超時時間是在2 * tickTime ~ 20 * tickTime 這個範圍 New in 3.3.0

網上有看到人將tickTime調大就解決了,開始我也這麼做,但後來還是會發生這個問題,仔細看上面第三個參數,zookeeper還是挺智能的嘛。所以這個方法不是主要問題,修改回默認值2000毫秒。

再來,我將dubbo版本從2.6.0降低爲2.5.6,同樣的,問題也只能暫時解決。

小結

1.如果你是windows用戶,請先保證你的網卡只留一個,這個不過多解釋了。

2.遇到zookeeper以上或者其他問題,嘗試降低dubbo依賴的版本。

3.能力有限,評論區歡迎補充。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章