Está en la página 1de 5

Tratamiento de Fallos

El fallo tanto del hardware como el software es algo prcticamente inevitable, y por ms
confiable que pueda parecer algn componente, siempre es importante estar preparado
para cuando este falle. En un sistema centralizado por lo general el fallo de cualquier
componente del sistema provoca que todos los servicios que este ofrece dejen de
funcionar, en cambio, en un sistema distribuido, los fallos son parciales, puesto que solo
afectan a los servicios que el componente que fallo este prestando, mientras que otros
servicios que prestan otros componentes siguen funcionando.
El tratamiento de fallos en un sistema distribuido es una tarea difcil, pero que se puede
lograr si se utilizan las tcnicas adecuadas, segn el sistema que se desee proteger.
Algunas de las tcnicas ms comunes son:
Deteccin de Fallos: obviamente no es posible tratar un fallo si este no se ha detectado ,
sin embargo, la deteccin de un fallo dentro de un sistema distribuido puede no ser tan
sencillo como parece, recordemos que adems de componentes de hardware y software, los
sistemas distribuidos operan gracias a la transmisin de mensajes, y el funcionamiento del
sistema depende en gran parte de estas transmisiones de datos entre los diferentes
componentes; un fallo en la transmisin de datos entre componentes no es fcil detectar, pero
es algo que podemos esperar (dependiendo del medio por el que se haga la transmisin y
otras condiciones) y al saber que existe la posibilidad de ese fallo, podemos monitorear y
aplicar tcnicas que aseguren que dicha transmisin siempre sea correcta.
Enmascaramiento de Fallos: una vez que un fallo es detectado, es importante encontrar la
manera para que un usuario del sistema no note dicho fallo y que pueda seguir utilizando el
sistema de manera normal, esto es, ocultar los fallos del sistema y encargarse de que los
servicios que se ofrecen al cliente nunca sean interrumpidos. Son muchos ejemplos del
enmascaramiento de fallos, en el caso de un mensaje que se corrompi al ser enviado, una
manera de ocultar el fallo es haciendo la solicitud de reenvo del mensaje, y de esta manera el
usuario nunca notar que hubo un problema. Otro ejemplo lo dan las tcnicas de redundancia
que explicaremos ms adelante, pero que bsicamente consiste en tener disponibles varios
elementos que puedan dar el mismo servicio y que en caso de que uno falle, otro este en la
disponibilidad de realizar el trabajo en su lugar, esto puede darse cuando fallan componentes
de un servidor (discos duros, tarjetas de red, etc.), o incluso cuando fallan las conexiones a la
red o los sistemas de bases de datos.
Tolerancia a Fallos: es importante saber cuando un sistema puede llegar a tener ciertos
problemas sin que estos afecten de manera grave al usuario de los servicios proporcionados,
para as, ignorar la ocurrencia de dichos fallos cuando la aplicacin lo soporte, o bien, hacer
saber al cliente que hay un problema en lugar de gastar tiempo y recursos innecesarios para
corregirlo cuando probablemente el problema no se pueda arreglar rpido y el cliente termine
por abortar el proceso; Pretender arreglar de manera inmediata todos los problemas que
puedan surgir en un sistema puede resultar incluso daino para el mismo sistema, puesto que
hay problemas que mientras son arreglados pueden afectar el rendimiento de otros
componentes del sistema que s estn trabajando.
Recuperacin Frente a Fallos: Una vez que fue detectado un fallo y que se ha decidido
arreglarlo, hay que encontrar la mejor manera de hacerlo, y adems, de recuperar el estado
del sistema antes de que ocurriera el fallo; esto requiere del software adecuado para poder
reconstruir o bien retractar los cambios que no fueron completados al momento en que fue
interrumpido el sistema, un ejemplo de esto lo podemos ver en los sistemas manejadores de

bases de datos, que se sirven de una bitcora de las transacciones que se realizan y de
acuerdo a esta bitcora se decide reconstruir o retractar las transacciones hechas sobre la
base de datos antes de que se interrumpiera el funcionamiento de la misma.
Redundancia: un sistema distribuido puede lograr ser tolerante a fallos gracias a la utilizacin
de componentes redundantes dentro del sistema. La redundancia se logra con la replicacin
de dichos componentes y con la habilidad del sistema de recurrir a los componentes de
respaldo en caso de que el componente de uso primario falle, todo esto por supuesto, sin que
el usuario se percate de lo que esta sucediendo. La redundancia se puede dar en muchas
partes del sistema: componentes internos de los servidores, servidores de aplicaciones, de
Web, de archivos, de correo o de bases de datos, sistemas de almacenamiento, conexiones a
la red de comunicacin, etc. Es muy importante tomar en cuenta que todos los componentes
que estn replicados en el sistema deben mantenerse actualizados para evitar problemas de
consistencia, y adems, la actualizacin de la informacin entre dichos componentes no debe
de tener un efecto significativo para las necesidades de transmisin de datos del sistema. Las
tcnicas antes mencionadas no son las nicas, pero si las ms utilizadas, estas tcnicas deben
de proporcionar las herramientas necesarias para aumentar el grado de disponibilidad de
cualquier sistema distribuido, ya que al saber como tratar un fallo del sistema, tambin es
posible encontrar la manera de reconfigurar el sistema para que los servicios que este
proporciona no sean interrumpidos, o que en el peor de los casos slo sean afectados los
servicios proporcionados por los componentes afectados
FUENTE: introduccin a sistemas distribuidos
http://www.capacinet.gob.mx/Cursos/Tecnologia
%20amiga/desarrolladordesoftware/IntroduccionSistemasDistribuidos_SE.pdf

Los sistemas computacionales a veces fallan. Cuando aparecen fallos en el hardware o el


software, los programas pueden producir resultados incorrectos o pueden parar antes de haber
completado el clculo pedido. Los fallos en un sistema distribuido son parciales; es decir,
algunos componentes fallan mientras otros siguen funcionando. Consecuentemente, el
tratamiento de fallos es particularmente difcil. Entre las principales tcnicas para tratar fallos se
encuentran las siguientes:

1. Deteccin de fallos

Algunos fallos son detectables. Por ejemplo, se pueden utilizar sumas de comprobacin
(checksums) para detectar datos corruptos en un mensaje o un archivo. Por otra parte, los
sistemas que trabajan con el protocolo IP tienen algoritmos para detectar errores en los datos
transmitidos.

2. Enmascaramiento de fallos
Algunos fallos que han sido detectados pueden ocultarse o atenuarse. Dos ejemplos de ocultacin
de fallos son:

Los mensajes pueden retransmitirse cuando falla la recepcin.

Los archivos con datos pueden escribirse en una pareja de discos de forma que si uno est
deteriorado el otro seguramente est en buen estado.

Simplemente eliminar un mensaje corrupto es un ejemplo de atenuar un fallo (pudiera


retransmitirse de nuevo).

3. Tolerancia de fallos
La mayora de los servicios en Internet exhiben fallos; es posible que no sea prctico para ellos
pretender detectar y ocultar todos los fallos que pudieran aparecer en una red tan grande y con
tantos componentes. Sus clientes pueden disearse para tolerar ciertos fallos, lo que implica que
tambin los usuarios tendrn que tolerarlos generalmente. Por ejemplo, cuando un visualizador
web no puede contactar con un servidor web no hace que el cliente tenga que esperar
indefinidamente mientras hace sucesivos intentos; informa al usuario del problema, dndole la
libertad de intentarlo ms tarde.

4. Recuperacin frente a fallos


La recuperacin implica el diseo de software en el que, tras una cada del servidor, el estado de
los datos pueda reponerse o "reversarse" (roll back) a una situacin anterior. En general, cuando
aparecen fallos los clculos realizados por algunos programas se encontrarn incompletos y al
actualizar datos permanentes (archivos e informacin ubicada en almacenamiento persistente)
pudiera encontrarse en un estado inconsistente.

5. Redundancia
Puede lograrse que los servicios toleren fallos mediante el empleo redundante (duplicidad) de
componentes. Considere los siguientes ejemplos:

Siempre debe haber al menos dos rutas diferentes entre cualesquiera dos encaminadotes
(routers)[1] en Internet.

En el Sistema de Nombres de Dominio, cada tabla de nombres se encuentra replicada en


dos servidores diferentes.

Una base de datos puede encontrarse replicada en varios servidores para asegurar que los
datos siguen siendo accesibles tras el fallo de cualquier servidor concreto; los servidores
pueden disearse para detectar fallos entre sus iguales; cuando se detecta algn error en
un servidor se redirigen los clientes a los servidores restantes.

Los sistemas distribuidos proporcionan un alto grado de disponibilidad frente a los fallos del
hardware. La disponibilidad de un sistema mide la proporcin de tiempo en que est utilizable.
Cuando falla algn componente del sistema distribuido slo resulta afectado el trabajo
relacionado con el componente defectuoso. As como cuando un computador falla el usuario
puede desplazarse a otro, tambin puede iniciarse un proceso de servicio en otra ubicacin

http://samadistribuidos.blogspot.com/2012/05/tolerancia-fallos.html
datateca.unad.edu.co/contenidos/208017/ContLin/leccin_9_tratamiento_de_fallos.ht
ml
http://www.arcos.inf.uc3m.es/~dsd/lib/exe/fetch.php?media=dsd-tf.pdf

Concurrencia
El control de concurrencia trata con los problemas de aislamiento y consistencia del
procesamiento de transacciones.

El control de concurrencia de un sistema distribuido asegura que la consistencia de los datos


que se almacenan y que se procesan en el sistema se mantienen en un ambiente distribuido
multiusuario. Si las transacciones son internamente consistentes, la manera ms simple de
lograr este objetivo es ejecutar cada transaccin sola, una despus de otra. Sin embargo, esto
puede afectar mucho el desempeo de un sistema distribuido dado que el nivel de concurrencia
se reduce al mnimo. El nivel de concurrencia,
es decir, el nmero de transacciones simultneas activas, es probablemente el parmetro ms
importante en sistemas distribuidos. Por lo tanto, los mecanismos de control de concurrencia
buscan encontrar un balance entre el
mantenimiento de la consistencia de los datos y el mantenimiento de un alto nivel de
concurrencia.
Si no se hace un adecuado control de concurrencia, se pueden presentar dos anomalas. En
primer lugar, se pueden perder actualizaciones provocando que los efectos de algunas
transacciones no se reflejen en los datos almacenados.
En segundo trmino, pueden presentarse recuperaciones de informacin inconsistentes. Las
tcnicas que se utilizan para asegurar un control de concurrencia de un sistema distribuido,
como hilos, semforos, candados, etc., se discutirn ms adelante, en la parte de anlisis de la
arquitectura de cliente servidor.

FUENTE
http://www.capacinet.gob.mx/Cursos/Tecnologia
%20amiga/desarrolladordesoftware/IntroduccionSistemasDistribuidos_SE.pdf