Saltar al contenido

Replicación pasiva, replicación activa y concurrencia en sistemas distribuidos

Compartir en:
Replicacion

Cuando hablamos de un sistema distribuido, la replicación es una de las piezas más importantes. En términos generales podemos definir la replicación como una serie de técnicas que intentan aportar más rendimiento, mejor disponibilidad y una mayor escalabilidad de un recurso mediante las copias de este.

Si hablamos más concretamente, podemos decir que la replicación es la mantención de un servicio en un grupo de nodos. Estos mantienen una copia funcional del servicio pudiendo asumir el control de este si fuese necesario.

El reto está en la mantención coherente de las copias del servicio y su actualización constante.

Este proceso utilizado en sistemas distribuidos para proporcionar tolerancia  a fallos se ha centrado en dos estrategias para conseguir las réplicas: la replicación activa y la replicación pasiva.

Replicación Pasiva

En los modelos de replicación pasiva, el sistema procesa solicitudes en un nodo de front-end que se comunica con una de las réplicas que tiene el rol de primario o administrador.

Una vez el administrador  recibe una transacción, la procesa y envía actualizaciones a los demás nodos secundarios con la nueva réplica válida. Si se detecta un fallo en el nodo primario, otro de los nodos asume el rol y el sistema puede seguir funcionando con normalidad.

Si es uno de los nodos secundarios el que cae, no afectaría al funcionamiento del sistema, solo se vería disminuida la capacidad de tolerar fallos del sistema. En la siguiente imagen se describe más claramente:

Los sistemas de replicación pasiva son una solución eficiente en cuanto a ahorrar recursos de cómputo y ancho de banda, además, permite operaciones no deterministas. Esto es una ventaja en según qué aplicaciones en la que el tiempo de respuesta no es crítico.

Replicación Activa

En la otra cara de la moneda tenemos la replicación activa, la estructura es similar, pero el modo de actuar es completamente distinto. Ahora cada uno de los nodos puede dar respuesta a las peticiones y el FE envía las peticiones del cliente a todos los nodos mediante multidifusión(se hace de manera concurrente).

No hay roles predefinidos en los servidores y estos al actuar en conjunto tienen un tiempo de respuesta elevado ante un posible fallo. En la siguiente imagen se describe el funcionamiento:

Como vemos en la imagen, si cualquiera de los nodos cae, el sistema no sufre interrupciones y pude seguir funcionando con normalidad.

En contrapartida el ancho de banda exigido es mayor y se producen procesos de peticiones que otros nodos ya han contestado desperdiciando recursos de procesamiento. Sin embargo se consigue tiempo de respuesta mínimo y escalabilidad elevada.

¿Ventajas e inconvenientes?

  • La rápida respuesta (baja latencia) que la replicación activa tiene frente a la pasiva. Si la recuperación rápida es un factor determinante, la replicación activa debe ser la estrategia a seguir.
  • El ahorro de ancho de banda y de procesos en la replicación pasiva frente a la activa. Si es sistema debe ser económico en cuanto a datos enviados/recibidos esta es la estrategia correcta.
  • La replicación pasiva puede actuar de manera no determinista frente a la activa que solo puede ser determinista. Esto es clave, ya que muchos de los servidores de internet no pueden actuar de manera determinista.
  • En cuanto a escalabilidad de clientes, la replicación activa tiene un nivel de escalabilidad/rendimiento mayor.
  • En la replicación pasiva, se requiere un soporte de aplicación adicional para gestionar las actualizaciones del primario sean efectivas en las demás copias.

No hay una estrategia correcta, la elección correcta dependerá de las características del sistema objetivo y de sus necesidades.

Concurrencia

Aparte del modo de funcionamiento de las réplicas, los conflictos de concurrencia son comunes y que deben ser abordados y tratados para garantizar el buen funcionamiento.

Estos problemas se hacen latentes cuando dos clientes hacen una modificación en un mismo registro de manera simultánea. Si no se trata el conflicto, puede ser que los clientes experimenten mal funcionamiento de los sistemas.

Hay dos posibles soluciones para la concurrencia, una solución de control de concurrencia optimista y otra pesimista.

Un control de concurrencia optimista asume que  los conflictos son poco probables por tanto el sistema permite que estos ocurran sin restricciones, y cuando estos ocurren los trata según unos parámetros predefinidos. Por ejemplo, si dos usuarios actualizan un mismo valor en una base de datos, la última actualización temporal será la que se tome como válida, pero ambas estarán registradas con un número de versión por ejemplo.

En el otro lado, el control de concurrencia optimista asume que los conflictos serán elevados, por tanto el sistema tiende a bloquear las transacciones y no permite que dos clientes editen un mismo registro a la vez, si pueden consultarlo en modo de “solo lectura”. Esta estrategia asegura que los registros únicamente pueden ser tratados por un cliente a la vez, pero provoca la espera de los demás clientes y genera muchos problemas de programación y administración dado que aumenta la complejidad de las transacciones.


Juan Ibero

Inmerso en la Evolución Tecnológica. Ingeniero Informático especializado en la gestión segura de entornos TI e industriales, con un profundo énfasis en seguridad, arquitectura y programación. Siempre aprendiendo, siempre explorando.

Compartir en:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *