Arquitectura tolerante
Introducción
La tolerancia a fallos es la propiedad que le permite a un sistema seguir funcionando correctamente en caso de fallo de uno o varios de sus componentes. Si disminuye su calidad de funcionamiento, la disminución es proporcional a la gravedad de la avería, en comparación con un sistema diseñado ingenuamente de forma que hasta un pequeño fallo puede causar el colapso total del sistema. Tolerancia a fallos es particularmente buscado en sistemas de alta disponibilidad.
Un diseño tolerante a fallos es un sistema que está capacitado para continuar su funcionamiento cuando algún componente del sistema falla.,[1] posiblemente a un nivel más reducido, lo que es mejor a que el sistema falle completamente. El término es comúnmente usado para describir sistemas basados en computadoras diseñados para continuar en mayor o menor medida las operaciones que realiza con, a lo mejor, una reducción de su rendimiento o un incremento de los tiempos de respuesta en las componentes que fallan. Esto significa que el sistema, dada una falla de software o de hardware no se detiene. Un ejemplo en otra rama es el de un automóvil diseñado para continuar su funcionamiento si uno de sus neumáticos recibe un pinchazo.
Tolerancia a fallos es sólo una propiedad de cada una de las máquinas, sino que también puede caracterizar las reglas según las cuales interactúan. Por ejemplo, el protocolo TCP está diseñado para permitir una comunicación fiable de dos sentidos en una red de conmutación de paquetes, incluso en la presencia de enlaces de comunicaciones que son imperfectos o sobrecargados. Esto es así debido a que en los extremos de la comunicación se puede esperar pérdida de paquetes, la duplicación, la reordenación y la corrupción, a fin de que estas condiciones no dañen la integridad de los datos, y sólo reduzcan la capacidad de una cantidad proporcional.
La recuperación de errores en sistemas tolerantes de fallos puede caracterizarse como avanzar o retroceso. Cuando el sistema detecta que se ha cometido un error, la recuperación "avanzar" toma el estado del sistema en ese momento y lo corrige, para poder avanzar. La recuperación "retroceso" recupera el estado del sistema a algunos de los primeros y la versión correcta, por ejemplo mediante los puntos de recuperación, y se mueve hacia adelante. La recuperación en retroceso requiere que las operaciones entre el puesto de control y los errores detectados pueda ser inalterable. Algunos sistemas hacen uso de ambos tipos de recuperación de errores para diferentes partes de un mismo error.