una ejemplo datos crear conexion conectar con como cadena java singleton cassandra pelops

java - ejemplo - Manera eficiente de conectarse a la base de datos de Cassandra usando el cliente de Pelops



jdbc java (1)

Los nodos de semillas son dos (o más, pero 2 es el número sugerido de la documentación de Cassandra) nodos de su clúster. En cada archivo de configuración de nodo de cassandra (cassandra.yaml) existe la dirección de los nodos de semillas para el clúster. Imagina que tienes un grupo de 5 nodos

192.168.1.100 192.168.1.101 192.168.1.102 192.168.1.103 192.168.1.104

en cada archivo de configuración habrá, por ejemplo

Semillas 192.168.1.101 192.168.1.103

Para este clúster, estas 2 direcciones son los nodos de semilla. Cada nodo del clúster al inicio se pondrá en contacto con estos 2 nodos y obtendrá la información necesaria. En su ejemplo, puede pasar las direcciones que se encuentran en la configuración o solo dos nodos de direcciones del clúster

String[] nodes = new String[2]; nodes[1] = "192.168.1.101"; nodes[2] = "192.168.1.103";

2) El Singleton es absolutamente innecesario ya que la clase Pelops está hecha solo por elementos estáticos. Si tienes un Init / Startup en tu aplicación, solo declara allí la conexión a Cassandra y estará disponible en todo tu código

3) No hay una respuesta correcta, la forma correcta de conectarse a un clúster depende del clúster. Puede que necesite establecer sus parámetros personalizados o dejar el de Pelops. En mi entorno de producción (5 nodos, RF = 3) estoy usando parámetros predeterminados sin problemas.

Ciao

Estoy trabajando en un proyecto en el que necesito usar Cassandra Database . Tengo un programa de ejemplo que completará los datos en la Cassandra database datos de Cassandra database . Estoy usando el Pelops client para eso.

Así que ahora estoy pensando en hacer una Singleton class para la Cassandra database que hará una conexión a la Cassandra database y luego Singelton class esa instancia de la Singelton class en mi CassandraDAO para insertar en la base de datos de Cassandra y recuperar los datos de la base de datos de Cassandra.

Debajo está mi clase de Singleton que he construido hasta ahora y que hará una conexión con la base de datos de Cassandra.

public class CassandraConnection { private static CassandraConnection _instance; private String keyspace; private String[] seeds; private int port; private String poolName; public static synchronized CassandraConnection getInstance() { if (_instance == null) { _instance = new CassandraConnection(); } return _instance; } private CassandraConnection() { setKeyspace(ICassandraDo.KEYSPACE_NAME); setSeeds(ICassandraDo.NODES).split(","); setPort(ICassandraDo.CASSANDRA_PORT); setPoolName(ICassandraDo.THRIFT_CONNECTION_POOL); createPool(); } //This is the right way to `addPool` in pelops? private void createPool() { Pelops.addPool(getPoolName(), getSeeds(), getPort(), false, getKeyspace(), new Policy()); } private String setSeeds(String nodes) { // I am not sure what I am supposed to do here? // Any guidance will be of great help } private void setPoolName(String thriftConnectionPool) { this.poolName = thriftConnectionPool; } private void setPort(int cassandraPort) { this.port = cassandraPort; } private void setKeyspace(String keyspaceName) { this.keyspace = keyspaceName; } public void setSeeds(String[] seeds) { this.seeds = seeds; } public String[] getSeeds() { return seeds; } public int getPort() { return port; } public String getKeyspace() { return keyspace; } public String getPoolName() { return poolName; } }

Planteamiento del problema:-

Tengo algunas dudas en mi código anterior.

  1. En primer lugar, ¿qué se supone que debo hacer en el método setSeeds en mi clase anterior? Cualquier puntero o ejemplo será de gran ayuda.
  2. En segundo lugar, no estoy seguro de si esta es la manera correcta de hacerlo ya que estoy creando una clase Singleton. Me pregunto cuál es el mejor enfoque para administrar una conexión de clúster con el cliente Pelops.
  3. Y también, ¿cuál es la mejor forma de usar el método addPool en mi código anterior? ¿Supongo que yo también arruiné algo allí? ¿Como sigo viendo diferentes métodos addPool en la Pelops class ? Entonces, qué método debo usar teniendo en cuenta que voy a ejecutar esto en el entorno de producción.

Y después de que la clase Singleton anterior esté lista, planeo usar la clase anterior en mi código DAO , algo como esto-

Mutator mutator = Pelops.createMutator(CassandraConnection.getInstance().getPoolName()); mutator.writeColumns(other data inside) ;

Y luego haga el selector también para recuperar los datos.

Solo para su información, estoy trabajando con Cassandra 1.2.3 y Scale 7 pelops client .

Cualquier ayuda será apreciada. Gracias por adelantado.

Código actualizado: -

A continuación está mi código actualizado.

public class CassandraConnection { private static CassandraConnection _instance; private String keyspace; private String[] nodes; private int port; private String poolName; public static synchronized CassandraConnection getInstance() { if (_instance == null) { _instance = new CassandraConnection(); } return _instance; } private CassandraConnection() { setKeyspace(ICassandraDo.KEYSPACE_NAME); setNodes(ICassandraDo.NODES); setPort(ICassandraDo.CASSANDRA_PORT); setPoolName(ICassandraDo.THRIFT_CONNECTION_POOL); createPool(); } private void createPool() { Pelops.addPool(getPoolName(), getCluster(), getKeyspace()); } private Cluster getCluster() { Config casconf = new Config(ICassandraDo.CASSANDRA_PORT, true, 0); Cluster cluster= new Cluster(nodes, casconf, ICassandraDo.NODE_DISCOVERY); return cluster; } private void setPoolName(String thriftConnectionPool) { this.poolName = thriftConnectionPool; } private void setPort(int cassandraPort) { this.port = cassandraPort; } private void setKeyspace(String keyspaceName) { this.keyspace = keyspaceName; } private void setNodes(String nodes) { this.nodes = nodes.split(","); } public int getPort() { return port; } public String getKeyspace() { return keyspace; } public String getPoolName() { return poolName; } }

Solo FYI, en mi caso, voy a tener dos clusters cada uno con 12 nodos.

¿Alguien puede echar un vistazo y decirme que obtuve todo correctamente? Gracias por la ayuda.