我最近开始为我们的 Cassandra 用例使用 Datastax Java 驱动程序......我们将使用 Datastax Java 驱动程序来读取/写入 Cassandra......
我能够使用 Datastax Java 驱动程序成功创建 Cassandra 连接......但我想知道,在与 Cassandra 建立连接时,我应该在生产环境中使用哪些其他设置来使用 Datastax Java 驱动程序获得更好的性能?
/**
* Creating Cassandra connection using Datastax driver
*
*/
private DatastaxConnection() {
try{
builder = Cluster.builder();
builder.addContactPoint("some-node");
// Can anybody explain me what does below piece of code do?
builder.poolingOptions().setCoreConnectionsPerHost(
HostDistance.LOCAL,
builder.poolingOptions().getMaxConnectionsPerHost(HostDistance.LOCAL));
// And also what does below piece of code is doing?
cluster = builder
.withRetryPolicy(DowngradingConsistencyRetryPolicy.INSTANCE)
.withReconnectionPolicy(new ConstantReconnectionPolicy(100L))
.build();
StringBuilder s = new StringBuilder();
Set<Host> allHosts = cluster.getMetadata().getAllHosts();
for (Host h : allHosts) {
s.append("[");
s.append(h.getDatacenter());
s.append("-");
s.append(h.getRack());
s.append("-");
s.append(h.getAddress());
s.append("]");
}
System.out.println("Cassandra Cluster: " + s.toString());
session = cluster.connect("testdatastaxks");
} catch (NoHostAvailableException e) {
} catch (Exception e) {
}
}
我的首要任务是:-
- 根据本地数据中心过滤掉 Cassandra 节点。因此在连接池中它将只有本地数据中心 Cassandra 节点。
- 并在某些设置下使用 Datastax java 驱动程序时获得最佳性能。
我知道某些设置可能会在不同的环境中有所不同,但在使用 Datastax Java 驱动程序建立 Cassandra 连接时,每个人都必须遵循一些设置才能获得最佳性能。
就像我之前在 Astyanax 中使用的示例一样,您需要使用 TOKEN_AWARE ...
那么在使用 Datastax java 驱动程序时也应该有一些最佳设置或推荐?