La replicación en informática se refiere al mantenimiento de múltiples copias de datos, procesos o recursos para garantizar la coherencia entre componentes redundantes. Esta técnica fundamental abarca bases de datos , sistemas de archivos y sistemas distribuidos , y sirve para mejorar la disponibilidad , la tolerancia a fallos , la accesibilidad y el rendimiento. [ 1 ] Mediante la replicación, los sistemas pueden seguir funcionando cuando fallan los componentes ( conmutación por error ), atender solicitudes de ubicaciones geográficamente distribuidas y equilibrar la carga entre varias máquinas. El desafío reside en mantener la coherencia entre las réplicas, gestionando al mismo tiempo las compensaciones fundamentales entre la coherencia de los datos, la disponibilidad del sistema y la tolerancia a la partición de la red , restricciones conocidas como el teorema CAP . [ 2 ]
Terminología
La replicación en informática puede referirse a:
- Replicación de datos , donde los mismos datos se almacenan en varios dispositivos de almacenamiento.
- Replicación de computación , donde la misma tarea computacional se ejecuta muchas veces. Las tareas computacionales pueden ser:
- Replicado en el espacio , donde las tareas se ejecutan en dispositivos separados.
- Replicado en el tiempo , donde las tareas se ejecutan repetidamente en un solo dispositivo.
La replicación en el espacio o en el tiempo suele estar vinculada a algoritmos de planificación. [ 3 ]
El acceso a una entidad replicada suele ser uniforme con el acceso a una única entidad no replicada. La replicación en sí misma debe ser transparente para un usuario externo. En caso de fallo, la conmutación por error de las réplicas debe ocultarse lo máximo posible en lo que respecta a la calidad del servicio . [ 4 ]
Los científicos informáticos describen además la replicación como:
- Replicación activa , que se realiza procesando la misma solicitud en cada réplica.
- Replicación pasiva , que implica procesar cada solicitud en una sola réplica y transferir el resultado a las demás réplicas.
Cuando se designa una réplica líder mediante elección para procesar todas las solicitudes, el sistema utiliza un esquema primario-secundario o primario-réplica , predominante en clústeres de alta disponibilidad . En cambio, si cualquier réplica puede procesar una solicitud y distribuir un nuevo estado, el sistema utiliza un esquema multi-primario o multi-maestro . En este último caso, debe emplearse algún tipo de control de concurrencia distribuida , como un gestor de bloqueos distribuido .
El balanceo de carga se diferencia de la replicación de tareas, ya que distribuye una carga de diferentes cálculos entre varias máquinas y permite descartar un cálculo en caso de fallo. Sin embargo, en ocasiones, el balanceo de carga utiliza la replicación de datos (especialmente la replicación multimaster ) internamente para distribuir sus datos entre las máquinas.
La copia de seguridad se diferencia de la replicación en que la copia guardada de los datos permanece inalterada durante un largo período de tiempo. [ 5 ] Las réplicas, por otro lado, se actualizan con frecuencia y pierden rápidamente cualquier estado histórico. La replicación es uno de los temas más antiguos e importantes en el ámbito general de los sistemas distribuidos .
Tanto la replicación de datos como la replicación de cálculos requieren procesos para gestionar los eventos entrantes. Los procesos de replicación de datos son pasivos y se limitan a mantener los datos almacenados, responder a las solicitudes de lectura y aplicar actualizaciones. La replicación de cálculos se realiza generalmente para proporcionar tolerancia a fallos y asumir una operación si falla un componente. En ambos casos, la necesidad fundamental es garantizar que las réplicas reciban los mismos eventos en un orden equivalente, de modo que mantengan estados consistentes y cualquier réplica pueda responder a las consultas.
Modelos de replicación en sistemas distribuidos
Existen tres modelos ampliamente citados para la replicación de datos, cada uno con sus propias propiedades y rendimiento:
- Replicación transaccional : se utiliza para replicar datos transaccionales , como una base de datos. Se emplea el modelo de serializabilidad de una sola copia , que define los resultados válidos de una transacción en los datos replicados de acuerdo con las propiedades ACID (atomicidad, consistencia, aislamiento y durabilidad) que los sistemas transaccionales buscan garantizar.
- Replicación de máquinas de estado : asume que el proceso replicado es un autómata finito determinista y que es posible la difusión atómica de cada evento. Se basa en el consenso distribuido y tiene mucho en común con el modelo de replicación transaccional. A veces se utiliza erróneamente como sinónimo de replicación activa. La replicación de máquinas de estado se implementa generalmente mediante un registro replicado que consta de múltiples rondas consecutivas del algoritmo Paxos . Este algoritmo fue popularizado por el sistema Chubby de Google y es el núcleo del almacén de datos de código abierto Keyspace . [ 6 ] [ 7 ]
- Sincronización virtual : implica un grupo de procesos que cooperan para replicar datos en memoria o coordinar acciones. El modelo define una entidad distribuida llamada grupo de procesos . Un proceso puede unirse a un grupo y recibe un punto de control que contiene el estado actual de los datos replicados por los miembros del grupo. Los procesos pueden enviar multidifusiones al grupo y recibirán las multidifusiones entrantes en el mismo orden. Los cambios de membresía se gestionan como una multidifusión especial que proporciona una nueva "vista de membresía" a los procesos del grupo. [ 8 ]
Replicación de bases de datos
La replicación de bases de datos implica mantener copias de los mismos datos en varias máquinas, implementándose normalmente mediante tres enfoques principales: replicación con un solo líder, con múltiples líderes y sin líder. [ 1 ]
En la replicación de líder único (también llamada primaria/réplica), una instancia de base de datos se designa como líder (primaria) y gestiona todas las operaciones de escritura. El líder registra estas actualizaciones, que luego se propagan a los nodos réplica. Cada réplica confirma la recepción de las actualizaciones, lo que permite las operaciones de escritura posteriores. Las réplicas atienden principalmente las solicitudes de lectura, aunque pueden contener datos obsoletos debido al retardo de replicación, es decir, la demora en la propagación de los cambios desde el líder.
En la replicación multimaster (también llamada multilíder), las actualizaciones se pueden enviar a cualquier nodo de la base de datos, que luego se propagan a otros servidores. Este enfoque es particularmente beneficioso en implementaciones de múltiples centros de datos, donde permite el procesamiento de escritura local a la vez que enmascara la latencia de la red entre centros de datos. [ 1 ] Sin embargo, introduce costos y complejidad sustancialmente mayores, lo que puede hacerlo poco práctico en algunas situaciones. El desafío más común que existe en la replicación multimaster es la prevención o resolución de conflictos transaccionales cuando ocurren modificaciones concurrentes en diferentes nodos líderes.
La mayoría de las soluciones de replicación síncrona (o inmediata) realizan prevención de conflictos, mientras que las soluciones asíncronas (o diferidas) deben realizar resolución de conflictos. Por ejemplo, si el mismo registro se modifica simultáneamente en dos nodos, un sistema de replicación inmediata detectaría el conflicto antes de confirmar la transacción y abortaría una de ellas. Un sistema de replicación diferida permitiría que ambas transacciones se confirmaran y ejecutaría una resolución de conflictos durante la resincronización. Los métodos de resolución de conflictos pueden incluir técnicas como la de última escritura, lógica específica de la aplicación o la fusión de actualizaciones concurrentes. [ 1 ]
Sin embargo, no siempre se puede lograr la transparencia de replicación. Cuando los datos se replican en una base de datos, se ven limitados por el teorema CAP o el teorema PACELC . En el ámbito de las bases de datos NoSQL , la consistencia de los datos suele sacrificarse a cambio de otras propiedades más deseables, como la disponibilidad (A), la tolerancia a particiones (P), etc. También se han desarrollado diversos modelos de consistencia de datos para servir como Acuerdo de Nivel de Servicio (SLA) entre los proveedores de servicios y los usuarios.
Existen varias técnicas para replicar cambios de datos entre nodos: [ 1 ]
- Replicación basada en sentencias : Las solicitudes de escritura (como las sentencias SQL) se registran y se transmiten a las réplicas para su ejecución. Esto puede resultar problemático con funciones no deterministas o sentencias que tengan efectos secundarios.
- Envío del registro de escritura anticipada (WAL) : El registro de escritura anticipada de bajo nivel del motor de almacenamiento se replica, lo que garantiza estructuras de datos idénticas en todos los nodos.
- Replicación lógica (basada en filas) : Los cambios se describen a nivel de fila mediante un formato de registro específico, lo que proporciona mayor flexibilidad e independencia de los detalles internos del motor de almacenamiento.
replicación de almacenamiento en disco

La replicación de almacenamiento activa (en tiempo real) se implementa generalmente distribuyendo las actualizaciones de un dispositivo de bloques a varios discos duros físicos . De esta forma, cualquier sistema de archivos compatible con el sistema operativo puede replicarse sin modificaciones, ya que el código del sistema de archivos funciona en un nivel superior a la capa del controlador del dispositivo de bloques. Se implementa tanto en hardware (en un controlador de matriz de discos ) como en software (en un controlador de dispositivo ).
El método más básico es la duplicación de discos , típica para discos conectados localmente. La industria del almacenamiento suele restringir las definiciones, por lo que la duplicación se considera una operación local (de corta distancia). La replicación se puede extender a través de una red informática , de modo que los discos pueden ubicarse en ubicaciones físicamente distantes, y generalmente se aplica el modelo de replicación de base de datos primario/réplica. El objetivo de la replicación es prevenir daños por fallas o desastres que puedan ocurrir en una ubicación o, en caso de que ocurran, mejorar la capacidad de recuperación de datos. Para la replicación, la latencia es el factor clave, ya que determina la distancia máxima entre los sitios o el tipo de replicación que se puede emplear.
La característica principal de este tipo de replicación entre sitios es cómo se gestionan las operaciones de escritura, ya sea mediante replicación asíncrona o síncrona; la replicación síncrona necesita esperar la respuesta del servidor de destino en cualquier operación de escritura, mientras que la replicación asíncrona no.
La replicación síncrona garantiza la ausencia total de pérdida de datos mediante operaciones de escritura atómicas , donde la operación no se considera completa hasta que tanto el almacenamiento local como el remoto la confirman. La mayoría de las aplicaciones esperan a que finalice una transacción de escritura antes de continuar con otras tareas, lo que reduce considerablemente el rendimiento general. Intrínsecamente, el rendimiento disminuye proporcionalmente a la distancia, ya que la latencia mínima está determinada por la velocidad de la luz . Para una distancia de 10 km, el viaje de ida y vuelta más rápido posible tarda 67 μs, mientras que una escritura completa en caché local se completa en aproximadamente 10-20 μs.
En la replicación asíncrona , la operación de escritura se considera completada en cuanto el almacenamiento local la confirma. El almacenamiento remoto se actualiza con un pequeño retraso . El rendimiento aumenta considerablemente, pero en caso de fallo del almacenamiento local, no se garantiza que el almacenamiento remoto disponga de la copia más reciente de los datos (los datos más recientes podrían perderse).
La replicación semisíncrona generalmente considera que una operación de escritura está completa cuando el almacenamiento local la confirma y el servidor remoto la recibe o registra. La escritura remota se realiza de forma asíncrona, lo que resulta en un mejor rendimiento, pero el almacenamiento remoto se retrasa con respecto al almacenamiento local, por lo que no hay garantía de durabilidad (es decir, transparencia total) en caso de fallo del almacenamiento local.
La replicación puntual genera instantáneas periódicas que se replican en lugar del almacenamiento principal. El objetivo es replicar únicamente los datos modificados, en vez de todo el volumen. Dado que se replica menos información con este método, la replicación puede realizarse a través de enlaces de menor costo, como iSCSI o T1, en lugar de líneas de fibra óptica.
Implementaciones
Muchos sistemas de archivos distribuidos utilizan la replicación para garantizar la tolerancia a fallos y evitar un único punto de fallo.
Muchos sistemas comerciales de replicación síncrona no se bloquean cuando la réplica remota falla o pierde la conexión (comportamiento que garantiza la ausencia de pérdida de datos), sino que continúan operando localmente, perdiendo así el objetivo deseado de punto de recuperación cero .
Se pueden aplicar técnicas de optimización de redes de área amplia (WAN) para abordar las limitaciones impuestas por la latencia.
Replicación basada en archivos
La replicación basada en archivos realiza la replicación de datos a nivel lógico (es decir, archivos de datos individuales) en lugar de a nivel de bloque de almacenamiento. Existen muchas maneras diferentes de realizar esto, que casi exclusivamente dependen de software.
Captura con un controlador de kernel
Un controlador de kernel (específicamente un controlador de filtro ) puede utilizarse para interceptar las llamadas a las funciones del sistema de archivos, capturando cualquier actividad a medida que ocurre. Esto utiliza el mismo tipo de tecnología que emplean los antivirus activos en tiempo real. En este nivel, se capturan las operaciones lógicas de archivos, como abrir, escribir, eliminar, etc. El controlador de kernel transmite estos comandos a otro proceso, generalmente a través de una red a una máquina diferente, que imitará las operaciones de la máquina de origen. Al igual que la replicación de almacenamiento a nivel de bloque, la replicación a nivel de archivo permite modos síncronos y asíncronos. En el modo síncrono, las operaciones de escritura en la máquina de origen se retienen y no se permiten hasta que la máquina de destino haya confirmado la replicación exitosa. El modo síncrono es menos común en los productos de replicación de archivos, aunque existen algunas soluciones.
Las soluciones de replicación a nivel de archivo permiten tomar decisiones informadas sobre la replicación en función de la ubicación y el tipo de archivo. Por ejemplo, se pueden excluir archivos temporales o partes de un sistema de archivos que no tengan valor para el negocio. Los datos transmitidos también pueden ser más granulares; si una aplicación escribe 100 bytes, solo se transmiten esos 100 bytes en lugar de un bloque de disco completo (generalmente 4096 bytes). Esto reduce sustancialmente la cantidad de datos enviados desde la máquina de origen y la carga de almacenamiento en la máquina de destino.
Entre las desventajas de esta solución basada únicamente en software se incluyen la necesidad de implementación y mantenimiento a nivel del sistema operativo, y una mayor carga sobre la capacidad de procesamiento de la máquina.
replicación del registro del sistema de archivos
De forma similar a los registros de transacciones de las bases de datos , muchos sistemas de archivos tienen la capacidad de registrar su actividad. Este registro se puede enviar a otra máquina, ya sea periódicamente o en tiempo real mediante transmisión continua. En la réplica, el registro se puede utilizar para reproducir las modificaciones del sistema de archivos.
Una de las implementaciones más destacadas es System Center Data Protection Manager (DPM) de Microsoft , lanzado en 2005, que realiza actualizaciones periódicas pero no ofrece replicación en tiempo real.
Replicación por lotes
Este proceso consiste en comparar los sistemas de archivos de origen y destino y asegurar que el destino coincida con el origen. La principal ventaja es que estas soluciones suelen ser gratuitas o económicas. La desventaja es que el proceso de sincronización consume muchos recursos del sistema y, por lo tanto, se ejecuta con poca frecuencia.
Una de las implementaciones más destacadas es rsync .
Replicación dentro del archivo
En un sistema operativo con paginación , las páginas de un archivo de paginación a veces se replican dentro de una pista para reducir la latencia rotacional.
En VSAM de IBM , los datos de índice a veces se replican dentro de una pista para reducir la latencia rotacional.
Replicación de memoria compartida distribuida
Otro ejemplo del uso de la replicación se observa en los sistemas de memoria compartida distribuida , donde varios nodos del sistema comparten la misma página de memoria. Esto generalmente significa que cada nodo tiene una copia independiente (réplica) de una página específica.
Replicación primaria-secundaria y multiprimaria
Muchos enfoques clásicos de replicación se basan en un modelo primario-de respaldo, donde un dispositivo o proceso tiene control unilateral sobre uno o más procesos o dispositivos. Por ejemplo, el proceso primario podría realizar algún cálculo y enviar un registro de actualizaciones a un proceso de respaldo (en espera), que puede tomar el control si el primario falla. Este enfoque es común para replicar bases de datos, a pesar del riesgo de que, si se pierde una parte del registro durante un fallo, el respaldo podría no estar en un estado idéntico al del primario y, por lo tanto, se podrían perder transacciones.
Una desventaja de los esquemas de respaldo principal es que solo uno realiza operaciones. Si bien se logra tolerancia a fallos, un sistema de respaldo idéntico duplica los costos. Por esta razón, a partir de 1985 , la comunidad de investigación de sistemas distribuidos comenzó a explorar métodos alternativos de replicación de datos. Como resultado de este trabajo , surgieron esquemas en los que un grupo de réplicas podía cooperar, actuando cada proceso como respaldo y, al mismo tiempo, gestionando una parte de la carga de trabajo.
El científico informático Jim Gray analizó esquemas de replicación multiprimaria bajo el modelo transaccional y publicó un artículo ampliamente citado en el que se mostraba escéptico sobre el enfoque "Los peligros de la replicación y una solución". [ 9 ] [ 10 ] Argumentó que, a menos que los datos se dividan de forma natural para que la base de datos pueda tratarse como n subbases de datos disjuntas, los conflictos de control de concurrencia darán lugar a un rendimiento seriamente degradado y el grupo de réplicas probablemente se ralentizará en función de n . Gray sugirió que los enfoques más comunes probablemente resulten en una degradación que escala como O(n³) . Su solución, que consiste en particionar los datos, solo es viable en situaciones donde los datos realmente tienen una clave de partición natural.
Entre 1985 y 1987, se propuso el modelo de sincronización virtual , que se consolidó como un estándar ampliamente adoptado (se utilizó en los sistemas Isis Toolkit, Horus, Transis, Ensemble, Totem, Spread , C-Ensemble, Phoenix y Quicksilver, y constituye la base del estándar de computación tolerante a fallos CORBA ). La sincronización virtual permite un enfoque multiprimario en el que un grupo de procesos coopera para paralelizar ciertos aspectos del procesamiento de solicitudes. Este esquema solo puede utilizarse para algunos tipos de datos en memoria, pero puede proporcionar aceleraciones lineales en función del tamaño del grupo.
Varios productos modernos admiten esquemas similares. Por ejemplo, Spread Toolkit admite este mismo modelo de sincronización virtual y puede utilizarse para implementar un esquema de replicación multiprimaria; también sería posible utilizar C-Ensemble o Quicksilver de esta manera. WANdisco permite la replicación activa, donde cada nodo de la red es una copia exacta o réplica, por lo que todos los nodos de la red están activos simultáneamente; este esquema está optimizado para su uso en redes de área amplia (WAN).
Los protocolos modernos de replicación multiprimaria optimizan el funcionamiento sin fallos. La replicación en cadena [ 11 ] es una familia popular de estos protocolos. Las variantes de última generación [ 12 ] de la replicación en cadena ofrecen un alto rendimiento y una gran consistencia al organizar las réplicas en cadena para las escrituras. Este enfoque permite lecturas locales en todos los nodos de réplica, pero presenta una alta latencia para las escrituras que deben atravesar varios nodos secuencialmente.
Un protocolo multiprimario más reciente, Hermes [ 13 ], combina invalidaciones inspiradas en la coherencia de caché y marcas de tiempo lógicas para lograr una fuerte consistencia con lecturas locales y escrituras de alto rendimiento desde todas las réplicas. Durante el funcionamiento sin fallos, sus escrituras basadas en difusión no presentan conflictos y se confirman tras un único viaje de ida y vuelta de multidifusión a los nodos réplica. Este diseño da como resultado un alto rendimiento y una baja latencia tanto para lecturas como para escrituras.
Véase también
Referencias
- 1 2 3 4 5 Kleppmann, Martin (2017). Diseño de aplicaciones con gran cantidad de datos: Las grandes ideas detrás de los sistemas fiables, escalables y mantenibles . O'Reilly Media. págs. 151–185 . ISBN 9781491903100.
- ↑ Brewer, Eric A. (2000). "Hacia sistemas distribuidos robustos (Resumen)". Actas del decimonoveno simposio anual de la ACM sobre Principios de computación distribuida . pág. 7. doi : 10.1145/343477.343502 . ISBN 1-58113-183-6.
- ↑ Mansouri, Najme, Gholam, Hosein Dastghaibyfard y Ehsan Mansouri. "Combinación de algoritmos de replicación y programación de datos para mejorar la disponibilidad de datos en redes de datos", Journal of Network and Computer Applications (2013)
- ↑ V. Andronikou, K. Mamouras, K. Izan, D. Kyriazis, T. Varvarigou, "Replicación dinámica de datos con conciencia de QoS en entornos de computación en malla", Elsevier Future Generation Computer Systems - The International Journal of Grid Computing and eScience , 2012
- ↑ "Copia de seguridad y replicación: ¿Cuál es la diferencia?" . Zerto . 6 de febrero de 2012.
- ↑ Marton Trencseni, Attila Gazso (2009). "Keyspace: Un almacén de clave-valor altamente disponible y replicado de forma consistente" . Recuperado el 18 de abril de 2010 .
- ↑ Mike Burrows (2006). "El servicio Chubby Lock para sistemas distribuidos débilmente acoplados" . Archivado del original el 9 de febrero de 2010. Consultado el 18 de abril de 2010 .
- ↑ Birman, K.; Joseph, T. (1987-11-01). «Aprovechamiento de la sincronía virtual en sistemas distribuidos» . Actas del undécimo Simposio ACM sobre Principios de Sistemas Operativos - SOSP '87 . Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 123–138 . doi : 10.1145/41457.37515 . ISBN 978-0-89791-242-6. S2CID 7739589 .
- ↑ "Los peligros de la replicación y una solución"
- ↑ Actas de la Conferencia Internacional ACM SIGMOD de 1999 sobre Gestión de Datos: SIGMOD '99 , Filadelfia, PA, EE. UU.; 1-3 de junio de 1999, Volumen 28; pág. 3.
- ↑ van Renesse, Robbert; Schneider, Fred B. (2004-12-06). "Replicación en cadena para soportar alto rendimiento y disponibilidad" . Actas de la 6.ª Conferencia sobre Simposio sobre Diseño e Implementación de Sistemas Operativos - Volumen 6. OSDI'04. EE. UU.: USENIX Association: 7.
- ↑ Terrace, Jeff; Freedman, Michael J. (14 de junio de 2009). "Almacenamiento de objetos en CRAQ: replicación de cadena de alto rendimiento para cargas de trabajo principalmente de lectura" . Conferencia Técnica Anual de USENIX . USENIX'09. EE. UU.: 11.
- ↑ Katsarakis, Antonios; Gavrielatos, Vasilis; Katebzadeh, MR Siavash; Joshi, Arpit; Dragojevic, Aleksandar; Grot, Boris; Nagarajan, Vijay (2020-03-13). "Hermes: Un protocolo de replicación rápido, tolerante a fallos y linealizable" . Actas de la Vigésimo Quinta Conferencia Internacional sobre Soporte Arquitectónico para Lenguajes de Programación y Sistemas Operativos (PDF) . ASPLOS '20. Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 201–217 . doi : 10.1145/3373376.3378496 . hdl : 20.500.11820/c8bd74e1-5612-4b81-87fe-175c1823d693 . ISBN 978-1-4503-7102-5. S2CID 210921224 .
- Sincronización de datos
- Sistemas informáticos tolerantes a fallos
- Sistemas de gestión de bases de datos