2014-12-31 113 views
0

我想創建一個連接例程,該連接例程不包括在連接期間停機的節點,並且不會爲該節點創建池。如果某個節點在兩者之間停下來,則它會自動從循環賽中列入黑名單。有沒有辦法做到這一點?動態配置數據ast羣集

白名單策略從詢問一堆節點開始,但不會動態改變它(據我所知)。我沒有找到製作「主機」對象的方法。我沒有找到通過從Nodetool實用程序獲得的java代碼來啓動/停止狀態的方法 - 但是我想這樣做而不啓動會話,就像nodetool實用程序不需要進入cqlsh一樣。

+0

看看這裏的TryDiscover方法:https://github.com/pchalamet/cassandra-sharp/blob/master/CassandraSharp/Discovery/SystemPeersDiscoveryService.cs#L86。該庫是用C#編寫的,但這種方法只是簡單地調用CQL查詢來完成節點發現。你可以適應這一點,並使它每隔一段時間運行一次,以使其更「動態」。至於白色/黑色列表節點,再次,這個庫是這樣做的,但我不確定是否有相當的Java在做這件事。如果沒有,你可以再次調整這個項目中的代碼來做你想做的事情。 – kha

+0

此外,上/下狀態只需連接到節點即可確定。如果可以連接,則認爲它已啓動。如果連接失敗,該節點被視爲關閉。我不認爲有任何其他方式來檢查它,或者至少我不知道它。 – kha

回答

0

您使用的是DataStax Java driver?我猜你是通過你提到的白名單政策。該驅動程序已經執行了自動節點發現和透明故障轉移。

如果一個節點出現故障,驅動程序會檢測到它並停止向該節點發出查詢,直到它恢復運行。如果你正在尋找不同的功能,你可以詳細說明一下嗎?

+0

白名單策略要求用戶指定一組特定的節點。我甚至不想這樣做。我只想給它集羣中的所有節點,並且只將它列入「白名單」。如果在做出選擇並且初始化集羣的時間內,由於沒有形成連接池,任何一個節點都會關閉並拋出異常,我希望它再次執行該操作。這個想法是編碼一次,如果某個節點停下來進入白名單,任何時候都不用擔心。 – user3272925