noviembre 02, 2023

Manejo de Fallas en Sistemas Distribuidos

 Los sistemas informáticos a veces fallan. Cuando estas ocurren, ya sea en hardware o
software, los programas pueden producir resultados incorrectos o detenerse antes de que
hayan completado el cálculo. Las fallas en un sistema distribuido son parciales, es decir,
algunos componentes fallan mientras otros continúan funcionando. Por lo tanto, el manejo
de fallas es particularmente difícil.


Existen técnicas para lidiar con fallas: detección de la ocurrencia de fallas, enmascaramiento
de las fallas, tolerancia a las fallas, recuperación luego de la ocurrencia de
fallas y la redundancia de rutas, caminos o servidores para garantizar funcionamiento de
las aplicaciones, a pesar de la fallas.


En [1] destacan que las fallas en los sistemas distribuidos puede atribuirse a la
complejidad de la ingeniería de los mismos y se deben a los siguientes motivos:
Los ingenieros no pueden combinar las condiciones de error. En su lugar, deben
considerar muchas combinaciones de fallas. La mayoría de los errores pueden ocurrir
en cualquier momento, independientemente de cualquiera otra condición de error,
por lo que podrían combinarse entre ellos.

Causas de las Fallas

  • El resultado de cualquier operación de red puede ser DESCONOCIDO. En cuyo caso es posible que la solicitud haya fallado, se haya procesado correctamente o se haya recibido pero no procesado. 

  • Los problemas distribuidos se producen en todos los niveles. No solo en los equipos físicos de nivel bajo, sin también, en los niveles lógicos del sistema distribuido. 

  • Recursividad. Los problemas distribuidos empeoran en los niveles superiores del sistema, debido a la recursividad. 

  •  Aparición del error. Los errores distribuidos suelen aparecer mucho después de su implementación en un sistema. 

  • Propagación del error. Los errores distribuidos se pueden propagar en todo el sistema. 

  •  Origen de la falla. Muchos de estos problemas provienen de las leyes físicas de las redes, que no se pueden cambiar.

Tipos de Fallas

Las fallas se caracterizan como [2]:
  • Fallos por omisión. Los fallos clasificados como fallos por omisión se refieren a casos en los que un proceso o el canal de comunicación no realiza las acciones que se supone que debe realizar
  • Fallos por omisión del proceso. El principal fallo por omisión de un proceso es que el proceso se bloquee. Un proceso se ha bloqueado cuando se ha detenido y no ejecutará ningún paso de su programa. 
    • En los sistemas síncronos el método de detección de estas fallas se basa en el uso de tiempos de espera - es decir, un método en el que un proceso permite un período de tiempo fijo para que ocurra algo. En un sistema asincrónico, un tiempo de espera puede indicar solo que un proceso no responde: puede que se haya bloqueado o sea lento, o los mensajes pueden que no han llegado. 
  • Fallos de omisión de comunicación. Considere las primitivas de comunicación que envían y reciben mensajes. Un proceso p realiza un envío insertando el mensaje en su buffer de mensaje saliente. El canal de comunicación transporta m al búfer de mensajes entrantes de q. El proceso q realiza una recepción tomando m de su búfer de mensajes entrantes y lo entrega (ver Figura 1 ). 
Los búferes de mensajes entrantes y salientes son proporcionado por el sistema operativo. El canal de comunicación produce una falla por omisión si no transporta un mensaje del búfer de mensajes salientes de p al búfer de mensajes entrantes de q. Esto se debe a la falta de espacio en el búfer en el receptor o en una puerta de enlace intermedia, o por un error de transmisión de red, detectado por un control de suma (check sum) llevada con los datos del mensaje.

 

Fallas de omisión en sistemas 

Por ejemplo, si los procesos p y q están programados para que q pueda responder a un mensaje de p, y si el proceso no ha recibido respuesta del proceso q en un tiempo máximo medido en el reloj local de p, entonces el proceso p puede concluir que el proceso q ha fallado.

  

  • Fallos arbitrarios. El término fallo arbitrario o bizantino se utiliza para describir lo peor falla de semántica posible, en la que puede ocurrir cualquier tipo de error. Por ejemplo, un proceso puede establecer valores incorrectos en sus elementos de datos, o puede devolver un valor incorrecto en respuesta a un invocación. Un fallo arbitrario de un proceso es aquel en el que omite arbitrariamente el pasos de procesamiento o toma pasos de procesamiento no deseados.


1. Procesos y Canales


Bibliografia

    1. Jacob Gabrielson. “Los desafíos de los sistemas distribuidos”. In: Amazon Web Services, Inc. (2019). URL: https://aws.amazon.com/es/builders-library/challenges-with-distributed-systems/ 
    2. George Coulouris et al. Distributed Systems: Concepts and Design. 5th. USA: Addison-Wesley Publishing Company, 2011. ISBN: 0132143011. 

    No hay comentarios.:

    Publicar un comentario