如何将基于Java的Cassandra客户端连接到Cassandra集群而不是特定节点?

| 我正在尝试学习Cassandra,并设置了4个节点的Cassandra集群。我使用Hector用Java编写了一个客户端,该客户端当前连接到集群中的硬编码单节点。理想情况下,我希望我的客户端连接到“群集”,而不是特定节点。...因此,如果4个节点中的任何一个都关闭,则客户端仍将连接到某个节点。从客户端应用程序的角度来看,这是如何工作的?我似乎找不到很好的解释。 目前是我的Hector连接字符串,我需要在此处指定一个特定的节点:
Cluster c = getOrCreateCluster(\"Test Cluster\", cassandraNode1:9160);
我的Cassandra节点都配置了rpc_address:0.0.0.0     
已邀请:
如果将ѭ1传递给
getOrCreateCluster()
,则可以将多个节点指定为以逗号分隔的字符串:
  public CassandraHostConfigurator(String hosts) {
    this.hosts = hosts;
  }

  ...

  String[] hostVals = hosts.split(\",\");

  CassandraHost[] cassandraHosts = new CassandraHost[hostVals.length];
  ...
    
您也可以切换CassandraHostConfigurator#setAutoDiscoverHosts和#setUseAutoDiscoverAtStartup以使用初始主机自动添加通过Thrift API方法describe_keyspaces找到的所有主机。这使配置稍微容易一些,因为您只需要引用一个主机即可。 保持启用自动发现功能(默认情况下处于禁用状态)可以使扩展变得容易一些,因为将在发现新节点时添加新节点。也可以通过JMX使用添加节点的功能,因此可以随时手动添加节点,尽管您必须为每个Hector实例执行一次添加操作。     

要回复问题请先登录注册