Cassandra ArchiFactor de tecnología y replicación

⚡ Resumen inteligente

Cassandra La arquitectura distribuye los datos entre nodos pares sin un único punto de fallo, utilizando el protocolo gossip para la coordinación y la replicación para la durabilidad. Esta página abarca todos los componentes, las estrategias de replicación, los niveles de consistencia y las rutas internas de lectura y escritura.

  • 🕸️ Diseño entre pares: Todos los nodos son iguales e intercambian información de estado a través del protocolo gossip, por lo que no existe ningún nodo maestro que pueda fallar.
  • 🧱 Componentes de almacenamiento: Una escritura se registra en el registro de confirmación y en la tabla en memoria, y luego se guarda en una tabla SSTable inmutable en el disco.
  • 🔁 Estrategia de replicación: SimpleStrategy es adecuado para un solo centro de datos, mientras que NetworkTopologyStrategy coloca réplicas por centro de datos y por rack.
  • 🔢 Factor de replicación: Tres copias en tres nodos es la configuración estándar para eliminar cualquier punto único de fallo.
  • 🇧🇷 Niveles de consistencia: El nivel seleccionado para cada consulta determina cuántas réplicas deben confirmar la recepción antes de que el cliente reciba una respuesta.
  • 🔍 Ruta de lectura: Las solicitudes de reparación directa, digest y de lectura se combinan para devolver los datos actuales y corregir discretamente las réplicas obsoletas.

Cassandra ArchiReplicación de la estructura

Cassandra está diseñado para manejar Big Data. CassandraLa característica principal de es almacenar datos en múltiples nodos sin un único punto de falla.

La razón de este tipo de CassandraLa arquitectura de 's era tal que la falla del hardware podía ocurrir en cualquier momento. Cualquier nodo podía dejar de funcionar. En caso de falla, se podían utilizar los datos almacenados en otro nodo. Por lo tanto, Cassandra está diseñado con su arquitectura distribuida.

Cassandra almacena datos en diferentes nodos con una arquitectura distribuida de igual a igual.

Todos los nodos intercambian información entre sí mediante Protocolo de chismes. El chisme es un protocolo en Cassandra mediante el cual los nodos pueden comunicarse entre sí.

Componentes de Cassandra Architectura

Hay los siguientes componentes en el Cassandra Architectura:

Cassandra Architectura
Cassandra ArchiDiagrama de tecnología

El diagrama anterior muestra la estructura de los componentes: los nodos se ubican dentro de un centro de datos, los centros de datos se ubican dentro de un clúster, y el registro de confirmación, la tabla de memoria (memtable) y la tabla SSTable residen dentro de cada nodo individual.

Nodo

El nodo es el lugar donde se almacenan los datos. Es el componente básico de Cassandra.

Data Center

Un conjunto de nodos se denomina centro de datos. Muchos nodos se clasifican como centros de datos.

Cluster

El clúster es la colección de muchos centros de datos.

Registro de confirmación

Cada operación de escritura se escribe en el registro de confirmación. El registro de confirmación se utiliza para la recuperación de fallos.

tabla de memoria

Después de escribir los datos en el registro de confirmación, los datos se escriben en la tabla de memoria. Los datos se escriben temporalmente en la tabla Mem.

SSTable

Cuando Mem-table alcanza un cierto umbral, los datos se vacían en un archivo de disco SSTable. Los archivos SSTable son inmutables, por lo que una actualización escribe una nueva versión en lugar de editar la anterior, y un proceso en segundo plano llamado compactación posteriormente fusiona esas versiones y descarta las filas reemplazadas.

Replicación de datos en Cassandra

Como pueden ocurrir problemas de hardware o el enlace puede fallar en cualquier momento durante el proceso de datos, se requiere una solución para proporcionar una copia de seguridad cuando ocurra el problema. Por lo tanto, los datos se replican para garantizar que no haya ningún punto único de falla.

Cassandra coloca réplicas de datos en diferentes nodos en función de estos dos factores.

  • Dónde colocar la siguiente réplica está determinado por el Estrategia de replicación.
  • Si bien el número total de réplicas colocadas en diferentes nodos está determinado por el Factor de replicación.

Un factor de replicación significa que hay solo una copia de los datos, mientras que tres factores de replicación significa que hay tres copias de los datos en tres nodos diferentes.

Para garantizar que no haya un único punto de fallo, El factor de replicación debe ser tres.

Hay dos tipos de estrategias de replicación en Cassandra.

Estrategia Simple en Cassandra

SimpleEstrategia Se utiliza cuando solo se tiene un centro de datos. SimpleStrategy coloca la primera réplica en el nodo seleccionado por el particionador. Después de eso, las réplicas restantes se colocan en el sentido de las agujas del reloj en el anillo de nodos.

Aquí está la representación pictórica de SimpleStrategy:

Estrategia Simple en Cassandra
Estrategia Simple en Cassandra

Estrategia de topología de red en Cassandra

RedTopologíaEstrategia Se utiliza cuando hay más de dos centros de datos. En NetworkTopologyStrategy, las réplicas se configuran para cada centro de datos por separado. NetworkTopologyStrategy coloca las réplicas en el sentido de las agujas del reloj en el anillo hasta que llega al primer nodo en otro rack. Esta estrategia intenta colocar réplicas en diferentes racks en el mismo centro de datos.

Esto se debe a que a veces pueden ocurrir fallas o problemas en el bastidor. Entonces las réplicas en otros nodos pueden proporcionar datos.

Aquí está la representación gráfica de la estrategia de topología de red:

Estrategia de topología de red en Cassandra
Estrategia de topología de red en Cassandra

El factor de replicación determina cuántas copias existen. La cantidad de esas copias que deben responder a una solicitud determinada es una configuración aparte, que se describe a continuación.

Niveles de consistencia en Cassandra

El nivel de consistencia se establece por consulta en lugar de por clúster, lo que hace que Cassandra Ajustable. Indica cuántas réplicas deben confirmar una escritura o responder a una lectura antes de que el coordinador responda al cliente. Un nivel bajo devuelve datos más rápidos; un nivel alto devuelve datos más actualizados.

Nivel Comportamiento Uso típico
ONE Una réplica debe responder. Registro de alto rendimiento donde se acepta alguna lectura obsoleta ocasional.
QUÓRUM Debe responder la mayoría de todas las réplicas, calculada como (RF / 2) + 1. La opción ideal para uso general, que ofrece un equilibrio entre consistencia y disponibilidad.
QUÓRUM LOCAL La mayoría de las réplicas dentro del centro de datos local deben responder. Los clústeres multi-centro de datos son preferibles porque evitan la latencia entre regiones.
TODO Cada réplica debe responder. Es poco común. Si un nodo falla, la solicitud falla por completo.
CUALQUIER (solo escribe) Una entrega sugerida se considera un éxito aunque no se pueda alcanzar ninguna réplica. Máxima disponibilidad de escritura donde se puede flexibilizar la durabilidad.

Se garantiza una consistencia fuerte cuando la suma de los niveles de lectura y escritura supera el factor de replicación. Con un factor de replicación de tres, escribir y leer en QUORUM cumple esta regla, ya que dos más dos es mayor que tres. Escribir y leer en ONE no la cumple, por lo que una lectura podría devolver un valor anterior.

Cuando una réplica no es accesible, el coordinador almacena una indirecta y lo reproduce una vez que el nodo regresa, que es como el nivel ANY y gran parte de Cassandrasu trabajo de autocuración conductual.

Escribe. Operación en Cassandra

El coordinador envía una solicitud de escritura a las réplicas. Si todas las réplicas están activas, recibirán una solicitud de escritura independientemente de su nivel de coherencia.

Nivel de consistencia determina cuántos nodos responderán con el reconocimiento de éxito.

El nodo responderá con el reconocimiento de éxito si los datos se escriben correctamente en el registro de confirmación y memTable.

Por ejemplo, en un único centro de datos con un factor de replicación igual a tres, tres réplicas recibirán una solicitud de escritura. Si el nivel de coherencia es uno, solo una réplica responderá con el reconocimiento de éxito y las dos restantes permanecerán inactivas.

Supongamos que si las dos réplicas restantes pierden datos debido a caídas de nodos o algún otro problema, Cassandra hará que la fila sea consistente mediante el mecanismo de reparación incorporado en Cassandra.

Aquí se explica cómo ocurre el proceso de escritura en Cassandra,

  1. Cuando la solicitud de escritura llega al nodo, en primer lugar, se registra en el registro de confirmación.
  2. Entonces Cassandra Escribe los datos en la tabla de memoria. Los datos escritos en la tabla de memoria en cada solicitud de escritura también se escriben en el registro de confirmación por separado. La tabla de memoria son datos almacenados temporalmente en la memoria, mientras que el registro de confirmación registra los registros de transacciones con fines de copia de seguridad.
  3. Cuando la tabla de memoria está llena, los datos se vacían en el archivo de datos SSTable.
Escribe. Operación en Cassandra
Escribe. Operación en Cassandra

Debido a que las SSTables nunca se editan en el mismo lugar, una eliminación no elimina la fila inmediatamente. En su lugar, un marcador llamado lápida sepulcral Se escribe, y la fila desaparece solo cuando se ejecuta la compactación después del período de gracia. Por eso, las cargas de trabajo de eliminación intensivas ralentizan las lecturas hasta que la compactación se pone al día.

Leer Operación en Cassandra

Hay tres tipos de solicitudes de lectura que un coordinador envía a las réplicas.

  1. Solicitud directa
  2. Solicitud de resumen
  3. Leer solicitud de reparación

El coordinador envía una solicitud directa a una de las réplicas. Después de eso, el coordinador envía la solicitud de resumen al número de réplicas especificadas por el nivel de coherencia y verifica si los datos devueltos son datos actualizados.

Después de eso, el coordinador envía una solicitud de resumen a todas las réplicas restantes. Si algún nodo proporciona un valor desactualizado, una solicitud de reparación de lectura en segundo plano actualizará esos datos. Este proceso se llama mecanismo de reparación de lectura.

Dentro de la réplica que recibe la solicitud directa, el orden de búsqueda está diseñado para evitar acceder al disco siempre que sea posible.

  1. El tabla de memoria Se comprueba primero, ya que las escrituras más recientes aún no se han vaciado.
  2. El caché de filasSi está habilitada, puede responder a toda la solicitud sin necesidad de realizar ningún trabajo adicional.
  3. A filtro de floración Se consulta para cada SSTable. Responde que definitivamente no está presente o que posiblemente esté presente, lo que permite omitir la mayoría de los SSTables sin leerlos.
  4. El índice de partición y su resumen localiza el desplazamiento exacto en bytes dentro de cualquier SSTable que sobreviva a la comprobación del filtro bloom.
  5. Los fragmentos coincidentes de varias tablas SSTable se fusionan, y la marca de tiempo más reciente prevalece para cada columna.

El filtro bloom es el paso que mantiene las lecturas rápidas a medida que los datos crecen, porque elimina casi todos los SSTable de la consideración antes de que se produzca cualquier búsqueda en el disco. La aplicación de estos mecanismos en varias máquinas se trata en el Cassandra grupo tutorial.

Preguntas Frecuentes

Cada nodo se comunica con algunos pares cada segundo y comparte información sobre sí mismo y sobre todos los que conoce: estado de actividad, carga, versión del esquema y rangos de tokens. Así es como un clúster se mantiene coordinado sin un nodo maestro.

La compactación fusiona múltiples SSTables en uno solo, manteniendoping la versión más reciente de cada columna y descartando las filas marcadas como obsoletas. Sin esto, una lectura tendría que acceder a cada vez más archivos.

Los nodos virtuales dividen la parte del anillo de tokens que corresponde a cada máquina física en muchos rangos pequeños. Esto distribuye los datos de manera más uniforme y hace que agregar o reemplazar un nodo sea mucho más rápido que la asignación manual de tokens.

La IA puede aplicar la regla de lectura más escritura mayor que el factor de replicación y sugerir un emparejamiento, pero el grado de obsolescencia aceptable para cada consulta es una decisión empresarial que debe proporcionarse previamente.

La IA interpreta correctamente la salida y las métricas de nodetool, por lo que es eficaz para detectar particiones activas, acumulación de marcadores de eliminación y retrasos en la compactación. Cualquier cambio de configuración que proponga debe probarse en un clúster de prueba.

Resumir este post con: