ver tutorial replicacion datos cursos crear consultas comando bases cassandra

tutorial - Comprender el factor de replicación de cassandra versus el nivel de consistencia



replicacion en cassandra (3)

Este formulario web le permite probar diferentes valores para su clúster Apache Cassandra y ver cuál es el impacto para su aplicación.

Quiero aclarar un concepto muy básico de factor de replicación y nivel de consistencia en Cassandra. Aprecio mucho si alguien puede responder las siguientes preguntas.

RF- Factor de replicación RC- Coherencia de lectura WC- Coherencia de escritura

2 nodos de cassandra (Ej: A, B) RF = 1, RC = ONE, WC = ONE o ANY

  • ¿Puedo escribir datos en el nodo A y leer desde el nodo B?
  • ¿Qué pasará si A cae?

3 nodos de cassandra (Ej .: A, B, C) RF = 2, RC = QUÓRUM, WC = QUÓRUM

  • ¿Puedo escribir datos en el nodo A y leer desde el nodo C?
  • ¿Qué pasará si el nodo A cae?

3 nodos de cassandra (Ej .: A, B, C) RF = 3, RC = QUORUM, WC = QUORUM

  • ¿Puedo escribir datos en el nodo A y leer desde el nodo C?
  • ¿Qué pasará si el nodo A cae?

Resumen breve: el factor de replicación describe cuántas copias de sus datos existen. El nivel de coherencia describe el comportamiento visto por el cliente. Tal vez hay una mejor manera de categorizar estos.

Como ejemplo, puede tener un factor de replicación de 2. Cuando escriba, siempre se almacenarán dos copias, suponiendo que hay suficientes nodos activos. Cuando un nodo está inactivo, las escrituras de ese nodo se guardan y se escriben cuando vuelven a aparecer, a menos que estén lo suficientemente bajas como para que Cassandra decida que se han ido para siempre.

Ahora diga en ese ejemplo que escribe con un nivel de consistencia de UNO. El cliente recibirá un reconocimiento de éxito después de que se haya realizado una escritura en un nodo, sin esperar la segunda escritura. Si realizó una escritura con una CL de TODO, el reconocimiento al cliente esperará hasta que se escriban ambas copias. Hay muchas otras opciones de nivel de consistencia, demasiadas para cubrir todas las variantes aquí. Lea el documento de Datastax , sin embargo, hace un buen trabajo al explicarlos.

En el mismo ejemplo, si lee con un nivel de coherencia de ONE, la respuesta se enviará al cliente después de que responda una única réplica. Otra réplica puede tener datos más nuevos, en cuyo caso la respuesta no estará actualizada. En muchos contextos, eso es suficiente. En otros, el cliente necesitará la información más actualizada, y usará un nivel de consistencia diferente en la lectura, quizás un nivel TODO. De esa forma, la consistencia de Cassandra y otras bases de datos posrelacionales se puede ajustar de manera que las bases de datos relacionales generalmente no lo son.

Ahora volviendo a tus ejemplos.

Ejemplo uno: Sí, puede escribir en A y leer desde B, incluso si B no tiene su propia réplica. B le preguntará a A en nombre de su cliente. Esto también es cierto para sus otros casos donde los nodos están todos arriba. Cuando terminan, puede escribir en uno y leer de otro.

Para las escrituras, con WC = ONE, si el nodo para la única réplica está activo y es el que está conectado, la escritura tendrá éxito. Si es para el otro nodo, la escritura fallará. Si usa CUALQUIER, la escritura tendrá éxito, asumiendo que está hablando con el nodo que está activo. Creo que también debe haber sugerido transferencia disponible para eso. El nodo hacia abajo obtendrá los datos más tarde, y no podrá leerlos hasta que eso ocurra, ni siquiera desde el nodo que está activo.

En los otros dos ejemplos, el factor de replicación afectará la cantidad de copias eventualmente escritas, pero no afecta el comportamiento del cliente más allá de lo que he descrito anteriormente. El QUORUM afectará el comportamiento del cliente, ya que tendrá que tener una cantidad suficiente de nodos y responder por escrituras y lecturas. Si tiene suerte y al menos (nodos / 2) + 1 nodo está fuera de los nodos que necesita, las escrituras y lecturas tendrán éxito. Si no tiene suficientes nodos con las réplicas activadas, las lecturas y escrituras fallarán. En general, algunas lecturas y escrituras de QUORUM pueden tener éxito si un nodo está inactivo, suponiendo que ese nodo no es necesario para almacenar su réplica o si su interrupción aún deja suficientes nodos de réplica disponibles.


Vea esta calculadora simple que le permite simular diferentes escenarios:

http://www.ecyrd.com/cassandracalculator/

Por ejemplo, con 2 nodos, un factor de replicación de 1, consistencia de lectura = 1 y consistencia de escritura = 1:

Your reads are consistent You can survive the loss of no nodes. You are really reading from 1 node every time. You are really writing to 1 node every time. Each node holds 50% of your data.