如何使用所有四个节点建立与cassandra数据库的连接

时间:2013-04-23 18:19:33

标签: java cassandra astyanax

我最近开始使用Cassandra数据库,我正在使用Netflix客户端来填充和读取Cassandra数据库中的数据。

我有一个包含四个节点的群集。我已经创建了这样的密钥空间 -

        create keyspace profilekeyspace
        with placement_strategy = 'NetworkTopologyStrategy'
        and strategy_options = {DC2 : 1, DC1 : 1}
        and durable_writes = true;

我的专栏姓氏是 - profile_columnfamily

这是我的四个节点 -

      lp-host01.vip.slc.qa.host.com:9160
      lp-host02.vip.slc.qa.host.com:9160
      lp-host03.vip.phx.qa.host.com:9160
      lp-host04.vip.phx.qa.host.com:9160

现在,我目前只使用上面的一个节点建立与Cassandra数据库的连接并填充数据。但是我的DBA说,你需要使用所有四个节点来建立连接。

private AstyanaxContext<Keyspace> context;

private CassandraAstyanaxConnection() {

    context = new AstyanaxContext.Builder()
    .forCluster("TEST CLUSTER")
    .forKeyspace("PROFILE")
    .withAstyanaxConfiguration(new AstyanaxConfigurationImpl()     
        .setDiscoveryType(NodeDiscoveryType.RING_DESCRIBE)
    )
    .withConnectionPoolConfiguration(new ConnectionPoolConfigurationImpl("MyConnectionPool")
        .setPort(9160)
        .setMaxConnsPerHost(1)
        .setSeeds("lp-host01.vip.slc.qa.host.com:9160:9160")//using only node from above to make the connection
    )
    .withAstyanaxConfiguration(new AstyanaxConfigurationImpl()     
        .setCqlVersion("3.0.0")
        .setTargetCassandraVersion("1.2"))
    .withConnectionPoolMonitor(new CountingConnectionPoolMonitor())
    .buildKeyspace(ThriftFamilyFactory.getInstance());

    context.start();
    keyspace = context.getEntity();

    emp_cf = ColumnFamily.newColumnFamily(
        "PROFILE_COLUMNFAMILY",
        StringSerializer.get(),
        StringSerializer.get());
}

现在我不确定如何使用所有四个节点使用Netflix客户端建立连接?任何人都可以帮我吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

种子列表是逗号分隔的列表。所以你可以在setSeeds调用中添加其余部分:

setSeeds("server1:9160,server2:9160,server3:9160")

此外,Astyanax将发现环中的其他服务器。您只需要列出一个以发现所有其他服务器,但如果该服务器已关闭,则您需要列出更多服务器。它非常像cassandra.yaml中的种子列表。

请注意,您已复制了行中的端口:

  

.setSeeds( “lp-host01.vip.slc.qa.host.com:9160:9160”)