Ir al contenido principal

3.1 Consistencia y Replicación

 

INTRODUCCIÓN

La replicación juega un importante rol en los sistemas distribuidos y, por lo general, se utiliza para incrementar la confiabilidad y mejorar el rendimiento de un sistema. Sin embargo, uno de los principales retos en los sistemas distribuidos es hacer que estas replicas se mantengan consistentes, lo que implica garantizar que todas las copias del sistema sean actualizadas. Un reto importante en la consistencia es con respecto a los datos compartidos, que son accedidos por varios procesos simultáneamente, ya que implementar la consistencia crece en complejidad conforme el sistema distribuido es escalado. En este escenario, dos cuestiones relacionados a la consistencia deben ser considerados [Tanenbaum & Van Steen, 2008]. La primera está relacionada con la administración de la réplica, donde se consideran aspectos como la ubicación de los servidores de réplicas y distribución del contenido entre estos servidores. La segunda cuestión a considerar es sobre el mantenimiento de consistencia de las réplicas, lo cual implica que las actualizaciones de todas las réplicas se deben de realizar de una manera rápida (casi inmediata). Por otro lado, también los sistemas distribuidos son diseñados de manera que puedan recuperarse automáticamente de fallas parciales, sin que se afecte seriamente el desempeño total. Esto es una característica sobresaliente de los sistemas distribuidos que los distingue de los sistemas de una sola máquina o centralizados.





CONSISTENCIA

La consistencia en los sistemas de cómputo es una necesidad vital, ya que sin ella el sistema simplemente no funciona. El problema de la consistencia está presente tanto en los sistemas de cómputo centralizados como en los sistemas distribuidos. El acceso a los datos en un sistema centralizado puede caer en estado inconsistente ante accesos concurrentes, por lo que se requiere prever mecanismos de exclusión que eviten estos escenarios. Sin embargo, en los sistemas distribuidos el problema de la inconsistencia es de mayor dimensión, tanto por su importancia como por la gran cantidad de situaciones en que puede producirse. Debido a que un sistema distribuido es un único sistema, entonces debe tener un único estado global compartido por todas las computadoras que la componen. Este estado global comprende las tablas de mantenimiento del sistema, la hora actual o los datos que están siendo compartidos por distintas computadoras.


Tipos de consistencias 

En un sistema distribuido, los diferentes tipos de consistencias más frecuentemente estudiadas son:
  • Consistencia de actualización.
  • Consistencia de replicación.
  • Consistencia de caché.
  • Consistencia de reloj. 


Consistencia de actualización

La consistencia de actualización es importante observarla cuando varios procesos acceden concurrentemente a un dato para actualizarlo, ya que la actualización de todo el dato en su conjunto no se realiza como una única operación atómica y se puede caer en una inconsistencia de actualización. Este tipo de inconsistencia es un problema clásico en el acceso a bases de datos o datos compartidos. Sin embargo, en los sistemas distribuidos esto tiene una mayor relevancia debido a que estos sistemas generalmente tienen un gran número de usuarios. Este tipo de inconsistencia se evita usando transacciones.
Las transacciones son las primitivas equivalentes a las entradas y salidas de una región crítica usada para proteger la consistencia de un dato compartido. Asimismo, una transacción asegura que las operaciones incluidas en esta se ejecuten todas o no se ejecuta una sola.

Consistencia de replicación 

Una situación de inconsistencia de replicación puede producirse cuando un conjunto de datos debe replicarse en diversas computadoras de la red, pudiendo ser modificado por cualquiera de estas. En este escenario, es muy probable que se puedan producir situaciones en que los datos no sean iguales en todas las computadoras al mismo tiempo. Los juegos interactivos multiusuarios pueden ser un ejemplo de inconsistencia de replicación, pues las acciones que introduzca un jugador deben de propagarse usando un protocolo de difusión de manera inmediata al resto de los jugadores en la red. En caso de que la red falle o tenga alta latencia, cada jugador tendrá una visión distinta del juego. La consistencia de replicación tiene gran importancia en  los sistemas distribuidos, más aún si estos son en ambientes colaborativos e interactivos.

Consistencia de caché

Cuando una aplicación cliente accede a archivo de datos, se pueden guardar estos datos en un espacio de la memoria local del lado del cliente para facilitar el acceso a este dato en futuras referencias. Esto se conoce como memoria caché y reduce la transferencia de datos por la red. La memoria caché tiene como objetivo mejorar los accesos locales mediante el modelo de jerarquías de memoria [Patterson & Hennessy, 1994]. Sin embargo, el problema de inconsistencia se puede presentar cuando el cliente también tiene que actualizar el mismo dato pero este reside en las memorias cachés de otros clientes. En este caso, existe el riesgo de que las copias del dato en las otras memorias cachés queden desactualizadas. Para evitar este escenario, se deben considerar técnicas que aseguren la consistencia de los cachés por parte de los sistemas operativos distribuidos o por las arquitecturas de sistemas multiprocesadores.

Consistencia de reloj

Diversas aplicaciones y programación en ambientes distribuidos basan su funcionalidad en algoritmos que muchas veces dependen de estampillas de tiempo. Estas estampillas de tiempo  son usadas para indicar el momento en que un evento ha sucedido. Por ejemplo, algunos algoritmos de reemplazo de página en memoria virtual hacen uso de estampillas de tiempo. Una computadora en un sistema distribuido puede generar una estampilla de tiempo, la cual se puede enviar a cualquier otra computadora del sistema. Así, cada computadora puede comparar su estampilla de tiempo local con la estampilla de tiempo recibida. El problema de inconsistencia de reloj se presenta debido a que no es fácil mantener la misma hora física en todas las computadoras del sistema de manera simultánea.

(López Fuentes, 2015)

REPLICACIÓN

La replicación significa mantener copias de una información en múltiples computadoras. Este recurso es ampliamente usado en los sistemas distribuidos, debido a que proporciona un mejor rendimiento, alta disponibilidad y tolerancia a fallas. 
Algunos ejemplos donde se usa la replicación son [Coulouris et al., 2012]: 
  • Almacenamiento en caché en los servidores web y servidores proxy web. 
  • El servicio de nombres DNS.

Beneficios de usar replicación en los sistemas distribuidos

Mejoras del rendimiento

Entre las características con respecto al rendimiento del sistema distribuido que deben de ser observadas al replicar datos se pueden mencionar las siguientes [Coulouris et al., 2012]: 
  • La replicación se implementa principalmente a través de cachés en clientes o servidores. 
  • Es importante mantener copias de los resultados obtenidos en llamadas anteriores al servicio para evitar o reducir el coste de llamadas idénticas.
  • Se evita el tiempo de latencia derivado del cálculo del resultado o de realizar consultas a otros servidores. 
  • La replicación de datos con actualizaciones muy frecuentes en la red genera un costo en el uso de protocolos de intercambio y actualización, además de limitar la efectividad de la réplica. 

Alta disponibilidad 

Entre las características con respecto a la disponibilidad del sistema distribuido que deben de ser observadas al replicar datos se pueden mencionar las siguientes [Coulouris et al., 2012]:
  • La proporción de tiempo que un servicio está accesible con tiempos de respuesta razonables, que debe de ser cercana al 100%.
  • Existen pérdidas de disponibilidad debido a los siguientes factores:
    • Fallas en el servidor. Si se replica n veces el servidor, la disponibilidad será 1-pn . Por ejemplo, para n = 2 servidores, la disponibilidad es 1 - 0.052 = 1 – 0.0025 = 99.75%.
    • Particiones de red o desconexiones.
    • Operación desconectada (son aquellas desconexiones de comunicación que a menudo no se planifican y son un efecto secundario de la movilidad del usuario). 

Tolerancia a fallas

Entre las características respecto a la tolerancia a falla en los sistemas distribuidos, se pueden mencionar las siguientes [Coulouris et al., 2012]: 
  • Una alta disponibilidad no implica necesariamente corrección, esto se debe a que puede haber datos no actualizados, o inconsistentes, originados por procesos concurrentes.
  • Se puede utilizar la replicación para alcanzar una mayor tolerancia a fallas.
    • Ante una caída o suspensión de servidores; por ejemplo, si se tienen n servidores, pueden fallar n-1 sin que el servicio sufra alteración.
    • Ante fallas bizantinas, es decir, si f servidores presentan fallas bizantinas, un sistema con 2f+1 servidores proveería un servicio correcto.


(López Fuentes, 2015)


Bibliografía

López Fuentes, F. (2015). Sistemas Distribuidos. México: Casa abierta al tiempo.

Comentarios

Entradas populares de este blog

Base de Datos Distribuidas

  Los años noventa: distribución   Al acabar la década de los ochenta, los SGBD relacionales ya se utilizaban prácticamente en todas las empresas. A pesar de todo, hasta la mitad de los noventa, cuando se ha necesitado un rendimiento elevado se han seguido utilizando los SGBD prerrelacionales. A finales de los ochenta y principios de los noventa, las empresas se han encontrado con el hecho de que sus departamentos han ido comprando ordenadores departamentales y personales, y han ido haciendo aplicaciones con BD. El resultado ha sido que en el seno de la empresa hay numerosas BD y varios SGBD de diferentes tipos o proveedores. Este fenómeno de multiplicación de las BD y de los SGBD se ha visto incrementado por la fiebre de las fusiones de empresas. La necesidad de tener una visión global de la empresa y de interrelacionar diferentes aplicaciones que utilizan BD diferentes, junto con la facilidad que dan las redes para la intercomunicación entre ordenadores, ha conducido a los S...

Sistemas Operativos Distribuidos

SISTEMAS  DISTRIBUIDOS Desde hace algunos años el uso de los computadores ha cambiado enormemente, debido a la transición, desde los sistemas centralizados que constan de un único CPU, sus periféricos de memoria y algunas terminales, hacia sistemas de cómputo compuestos por un gran número de CPUs, conectados mediante una red de alta velocidad, conocidos como Sistemas Distribuidos. Los sistemas operativos distribuidos presentan algunas de las siguientes ventajas [Sánchez, 1995]: Facilitan la implementación de sistemas distribuidos. Proveen abstracciones de los recursos en un sistema distribuido, por ejemplo, canales de comunicación y procesos en lugar de redes y procesadores.  En los sistemas abiertos no existe una clara división entre el sistema operativo distribuido y las aplicaciones que se ejecutan en él. (López Fuentes, 2015) Ventajas de los Sistemas Distribuidos respecto de los Centralizados La fuerza real, detrás de la tendencia hacia la descentralización, es la economía...