我最近开始使用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客户端建立连接?任何人都可以帮我吗?
感谢您的帮助。
答案 0 :(得分:2)
种子列表是逗号分隔的列表。所以你可以在setSeeds调用中添加其余部分:
setSeeds("server1:9160,server2:9160,server3:9160")
此外,Astyanax将发现环中的其他服务器。您只需要列出一个以发现所有其他服务器,但如果该服务器已关闭,则您需要列出更多服务器。它非常像cassandra.yaml中的种子列表。
请注意,您已复制了行中的端口:
.setSeeds( “lp-host01.vip.slc.qa.host.com:9160:9160”)