es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Conecte a Cassandra en Kubernetes usando java-driver.

Estamos levantando un clúster de Cassandra, utilizando el paquete helm de k8ssandra, el cual expone varios servicios. Nuestras aplicaciones cliente están utilizando el controlador de Java de DataStax y se ejecutan en el mismo clúster de k8s que el clúster de Cassandra (esta es una fase de prueba).

¿Cuál es la forma recomendada de conectar la aplicación (a través del controlador) a Cassandra?

¿Agregar todos los nodos?

for (String node: nodes) {
builder.addContactPoint(new InetSocketAddress(node, 9042));
}

¿Agregar solo la dirección del servicio?

builder.addContactPoint(new InetSocketAddress(service-dns-name , 9042))

¿Agregar la dirección del servicio como no resuelta? (¿funcionaría eso incluso?)

builder.addContactPoint(InetSocketAddress.createUnresolved(service-dns-name , 9042))

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La forma recomendada de conectar la aplicación (a través del controlador) a Cassandra cuando se utiliza el gráfico Helm de k8ssandra que expone varios servicios es agregar solo la dirección del servicio sin resolver. Esto se debe a que el clúster de Cassandra puede escalar hacia arriba o hacia abajo dinámicamente, lo que significa que las direcciones IP de los nodos individuales pueden cambiar con el tiempo. La dirección del servicio brinda un punto final estable para que el controlador se conecte, incluso si los nodos subyacentes cambian. Por lo tanto, la forma correcta de instanciar CqlSessionBuilder sería:

    builder.addContactPoint(new InetSocketAddress("nombre-de-dns-de-servicio", 9042));
    

    Vale la pena señalar que la dirección del servicio en este caso debe ser la misma que el nombre del servicio definido en el gráfico Helm.

Comments are closed.