2017-09-05 196 views
2

防止卡桑德拉節點當在Java中,我創建了一個卡桑德拉集羣建設者,我提供多個卡桑德拉節點列表,如下圖所示:從被Overwhelemed

Cluster cluster = Cluster.builder().addContactPoint(host1, host2, host3, host4).build(); 

但是從我個人理解,連接器只連接到列表中的第一個主機可用,並且該主機成爲我與Cassandra集羣的連接點。

現在,我的問題是,如果我的Java應用程序從/向Cassandra讀取/寫入大量數據,那麼我的Java應用程序不會覆蓋它所連接的節點?

有沒有一種方法來配置我的連接,使它使用Cassandra的多個節點進行讀/寫操作?常用的做法是什麼?

回答

2

它使用聯繫點查找羣集中的其餘節點,然後創建一個到所有主機的連接池,並在它們之間平衡請求。它不僅連接到您提供的主機,除非您使用白名單負載平衡策略或自定義策略。

如果您擔心壓倒性節點使用RoundRobinLoadBalancingPolicy(如果有多個DC,則可以感知DC),並且它將均勻分配給所有節點。如果您有數據熱點並使用TokenAware策略,則可能會使其不均衡,但您不必擔心。

+0

因此,連接器連接到所有主機,即使我有例如Cassandra羣集中的400個節點?或者當需求出現時連接? – user1888243

+0

它將連接到所有400 –