sql >> Base de Datos >  >> NoSQL >> CouchDB

Replicación Couchbase XDCR:paso a paso:prácticas recomendadas

Qué es Couchbase

Couchbase Server es una base de datos de documentos JSON distribuida y de código abierto. Expone un almacén clave-valor de escalabilidad horizontal con caché administrada para operaciones de datos de submilisegundos, indexadores especialmente diseñados para consultas eficientes y un potente motor de consultas para ejecutar consultas de tipo SQL. Para entornos móviles y de Internet de las cosas, Couchbase también se ejecuta de forma nativa en el dispositivo y administra la sincronización con el servidor.

¿Por qué Couchbase?

Couchbase Server es una base de datos de documentos JSON distribuida y de código abierto. Expone un almacén clave-valor de escalabilidad horizontal con caché administrada para operaciones de datos de submilisegundos, indexadores especialmente diseñados para consultas eficientes y un potente motor de consultas para ejecutar consultas de tipo SQL. Para entornos móviles y de Internet de las cosas, Couchbase también se ejecuta de forma nativa en el dispositivo y administra la sincronización con el servidor.

Couchbase Server está especializado en proporcionar gestión de datos de baja latencia para aplicaciones web, móviles e IoT interactivas a gran escala. Los requisitos comunes que Couchbase Server fue diseñado para satisfacer incluyen:

  • Interfaz de programación unificada
  • Consulta
  • Buscar
  • Móvil e IoT
  • Análisis
  • Motor de base de datos central
  • Arquitectura escalable
  • Arquitectura basada en la memoria
  • Integraciones de big data y SQL
  • Seguridad completa
  • Implementaciones de contenedores y en la nube
  • Alta disponibilidad

Muchas bases de datos pueden satisfacer uno o más de estos requisitos, pero requieren compensaciones cuando se ejecutan en producción con aplicaciones de misión crítica a escala de Internet. Por ejemplo, una solución puede ofrecer flexibilidad en el modelo de datos, pero puede carecer de la capacidad de agregar o eliminar nodos sin afectar el tiempo de actividad o el rendimiento. Otra solución podría demostrar una buena escalabilidad de escritura sin poder indexar o cambiar el modelo de datos sobre la marcha. Couchbase Server está diseñado para brindar una experiencia productiva de desarrollo y administración al mismo tiempo que brinda rendimiento a escala, ya sea en la nube, en un contenedor, en las instalaciones o en un dispositivo perimetral.

Comparativa de rendimiento de Nosql

Un nuevo punto de referencia que compara MongoDB, DataStax y Couchbase Server demuestra que Couchbase es la base de datos NoSQL más escalable y con mejor rendimiento.

Comparativa basada en nodos .

Según CAP Theorem Couchbase.

 

Teorema del casquillo

Couchbase está en el diagrama CP y AP.

Detalle del diagrama CP y AP de Couchbase.

¿Qué es XDCR?

Cross Data Center Replication (XDCR) replica datos entre clústeres:esto brinda protección contra fallas en el centro de datos y también proporciona acceso a datos de alto rendimiento para aplicaciones de misión crítica distribuidas globalmente.

XDCR replica datos de un depósito específico en el clúster de origen a un depósito específico en el clúster de destino. Los datos del depósito de origen se envían al depósito de destino por medio de un agente XDCR, que se ejecuta en el clúster de origen, utilizando el Protocolo de cambio de base de datos. Cualquier depósito (Couchbase o Ephemeral) en cualquier clúster se puede especificar como origen o destino para una o más definiciones de XDCR.

Se proporciona una descripción completa de la arquitectura de XDCR en Replicación entre centros de datos (XDCR). Es posible que desee familiarizarse con la información proporcionada allí, antes de realizar las rutinas proporcionadas en esta sección.

Estructura básica de Xdcr;

Requisitos previos;

  • Confirme que su clúster tenga el tamaño adecuado y que pueda manejar nuevas transmisiones XDCR. Por ejemplo, XDCR necesita 1 o 2 núcleos de CPU adicionales por flujo y, en algunos casos, también requerirá más RAM y recursos de red. Si un clúster no tiene el tamaño adecuado para la carga de trabajo existente más los nuevos flujos XDCR, XDCR puede competir por los recursos del servidor y tener un impacto negativo en el rendimiento general.
  • Couchbase Server usa el puerto TCP/IP 8091 para intercambiar información de configuración del clúster. Si se está comunicando con un clúster de destino a través de una conexión dedicada o de Internet, debe asegurarse de que todos los nodos en los clústeres de origen y de destino puedan comunicarse entre sí a través de los puertos 8091 y 8092.
Puertos listados por ruta de comunicación

XDCR (clúster a clúster)

  • Versión 1 (CAPI)
    • Sin cifrar :8091, 8092
  • Versión 2 (XMEM)
    • Sin cifrar :8091, 8092, 11210
    • Cifrado :11207, 18091, 18092

Couchbase almacena datos tanto en el disco como en la RAM. El comportamiento predeterminado es escribir el documento en el disco en algún momento arbitrario (generalmente rápido) después de almacenarlo en la RAM. Esto deja una pequeña ventana donde la falla del nodo puede resultar en la pérdida de datos.

En cualquier caso, después de escribir en la RAM, el documento finalmente se escribirá en el disco. Couchbase mantiene una cola de escritura en disco que puede consultar en la página de informe de métricas en la consola de administración. Ahora, CB sincroniza escrituras en el clúster, y creo que una escritura se sincronizará en un clúster antes de que Couchbase reconozca que ocurrió la escritura (por ejemplo, antes de que el método de escritura regrese a la persona que llama).

Si tiene más documentos que la RAM disponible, solo los documentos a los que se accede con más frecuencia se almacenarán en la RAM para una recuperación rápida, y todos los demás se "desalojarán" al disco.

Consejos;

Cuando el tamaño del depósito se redujo de 200 gb a 10 gb en el origen, la replicación se hizo lo suficientemente rápida. En otras palabras, si el tamaño del depósito es alto y aunque todos los datos están en RAM, he visto que la replicación tenía un intervalo de 10 segundos.

El origen y el destino tienen la misma configuración de Linux y los mismos recursos. Esto es solo un consejo.

El residente del depósito de producción debe ser %100. Porque la velocidad de replicación es importante.

Bucket replication best settings ;

XDCR Source Nozzles per Node: 2 --> 8

XDCR Target Nozzles per Node: 2 --> 24

(Nozzles=Channel=parallel , as  cpu core)

XDCR Checkpoint Interval (sn): 1800 --> 60

Control frequency is low, but not as much as waiting in the queue. The higher this value, the longer it takes for XDCR queues to grow.

XDCR Batch Count: 500 --> 2000

It is beneficial to increase by 2.3 times. It also sends so many data groups at the same time.

XDCR Batch Size (kB): 2048 --> 8192

It is beneficial to increase by 2.3 times. At the same time, it sends such a large amount of data.

XDCR Failure Retry Interval: 10 --> 10

It is used for retry attempts in network errors.

XDCR Optimistic Replication Threshold: 256 --> 1024 --> 256 --> 128 

Increasing or decreasing this value appropriately can speed up replication, collect data above 1 mb and send it in bulk. But collection can be a waste of time and waiting in the queue.

This is the compressed document size in bytes. 0 - 2097152 Bytes (20MB). Default is 256 Bytes. XDCR retrieves metadata for documents larger than this size at once before copying the uncompressed document to a destination set. This option improves XDCR latency.

XDCR Statistics Collection Interval (ms): 1000 --> 1000

XDCR Logging Level: info --> info


Consejos;

Recomiendo  que el origen y el destino tengan la misma configuración y tengan los mismos recursos.

Estos son la configuración del depósito, la configuración del clúster, la CPU, la memoria, la calidad del disco, etc.

La replicación Xdcr es solo replicación de datos. Antes de la replicación, debe crear  metadatos de depósito.

Si lo desea, puede crear un usuario, un índice, una vista, un evento, etc.

Como información adicional;

Puede hacer la replicación xdcr en la versión comunitaria.

Puede realizar la replicación xdcr en la versión empresarial. Esto necesita una licencia adicional. Si no usa el modo de espera como producto, no es una tarifa alta.

Otros conectores de Couchbase para XDCR; Elasticsearch, Hadoop, Kafka, Spark, Talend, SQL (ODBC/JDBC)

La administración de Couchbase se puede realizar a través de la IU WEB, la API REST y la CLI. En particular, la interfaz de usuario web es muy simple y fácil de usar. Puede realizar muchas transacciones operativas y consultas a través de la interfaz de usuario.

Replication Summary;

Stby=Xdcr=Target=Remote same term.

A different name xdcr cluster is established with the same features.

The buckets with the same name with the same features are created in the xdcr cluster.

In Prod, add remote server and xdcr information are entered in the xdcr tab.

Prod in xdcr tab with add remote cluster;

Cluster Name= Xdcr couchbase name

IP/Hostname= Xdcr ip / hostname

Username=Xdcr Admin username

Password=Xdcr Admin user password




Prod in xdcr tab with add bucket replication;

Replicate From Bucket = Bucket name in the prod

Remote Cluster = Added Xdcr name

Remote Bucket = Bucket name added in Xdcr


La configuración de memoria para la configuración del clúster Xdcr se proporciona de acuerdo con el valor de la memoria del servidor.

Debe ser de tamaño libre para la memoria del servidor.

Xdcr necesita memoria adicional en el clúster de producción.

Es posible la replicación de varios cubos base de sofá.

Ejemplo de operación simple de replicación XDCR;

 

Pestaña Xdcr seleccionada en la página de inicio de la base de sofá.

La pestaña Agregar clúster remoto está seleccionada en la pestaña xdcr seleccionada.

La operación de agregar un clúster remoto se realiza siguiendo .

La pestaña Agregar replicación está seleccionada en la pestaña xdcr seleccionada.

La operación de replicación de depósito se realiza siguiendo .

Los mejores parámetros para el rendimiento de xdcr. Pero se puede configurar de nuevo para su sistema.

Estado de replicación en la pestaña xdcr de la fuente (prod)

Estadísticas de replicación de depósitos

Rendimiento de la replicación en el objetivo;

Rendimiento de replicación en origen;

Referencias;

1-) https://resources.couchbase.com/nosql_comparison_web/altoros-nosql-performance-benchmark

2-) https://docs.couchbase.com/

3-) https://www.businesswire.com/news/home/20140625005778/en/Couchbase-Blows-Past-Competition-in-NoSQL-Performance-Benchmark

4-) https://www.quora.com/Cuál-es-la-relación-entre-SQL-NoSQL-el-teorema-CAP-y-ACID

Fatih Gençali - Certificaciones Couchbase