Ho recentemente iniziato a utilizzare il driver Datastax Java per il nostro caso d'uso Cassandra ... Utilizzeremo il driver Datastax Java per leggere/scrivere su Cassandra ...Impostazioni ottimali per il driver Java Cassandra per scrivere solo nel data center locale
Sono riuscito a creare la connessione Cassandra utilizzando il driver Datastax Java ... Ma mi chiedo, ci sono altre impostazioni che dovrei usare in ambiente di produzione per ottenere le prestazioni migliori usando il driver Datastax Java mentre faccio la connessione a Cassandra?
/**
* 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) {
}
}
Le mie priorità sono: -
- filtrare la Cassandra nodi base su data center locale .. Così nel pool di connessioni si avrà solo nodi datacenter Cassandra locali.
- E ottenere le migliori prestazioni durante l'utilizzo del driver java Datastax con alcune impostazioni specifiche.
So che potrebbe essere possibile che alcune impostazioni saranno diversi in un ambiente diverso, ma ci potrebbero essere alcune impostazioni che tutti devono seguire per ottenere le prestazioni ottimali rendendo le connessioni Cassandra che utilizzano driver di Datastax Java ..
Come per un esempio in Astyanax quando usavo in precedenza, era necessario utilizzare TOKEN_AWARE ...
Quindi ci dovrebbero essere anche alcune migliori impostazioni o consigliate durante l'uso del driver java Datastax?
In "PoolingOptions" Non vedo un metodo setter chiamato "setLocalDataCenter" per limitare le connessioni al centro dati locale.In che modo il client conosce il datacenter da cui viene eseguito? – vijay