Fault tolerance and high-availability
Fault tolerance and high-availability are two terms that are often used interchangeably in IT circles. The truth is, though, that there are several important distinctions between a fault tolerant system and a high-availability system. If you are considering upgrading to one of these two systems, it’s important to understand the unique advantages that both systems offer.
What is Fault Tolerance?
Like high-availability, fault tolerance is designed to minimise downtime. This is very important in any business for IT Disaster Recovery (DR). However, the methods used to minimise downtime in a fault tolerant system differ from those used by a high-availability system. In the end, a fault tolerant system is designed to enable the system to continue operating even if one of its components goes down. How to build an IT Disaster Recovery Plan.
There are several different methods of fault tolerance that you will want to be aware of.
Triple modular redundancy
In a triple modular redundancy fault tolerant system, redundancy is achieved by having three different systems set up to perform the same process. The results that these systems produce are then checked by a majority voting system, which then produces a single output. In the event that one of the three systems fails, a correct output can still be generated since the other two systems will still provide a correct output to the majority voting system.
Forward error correction
Forward error correction involves adding redundancies directly to the message that a system sends out rather than the adding redundancies to the system itself. By adding redundancies within the message itself, the receiver is able to verify the data and correct certain errors that are caused by unstable or noisy channels.
Checkpointing is one of the most common methods of fault tolerance and is used regularly in common applications such as word processors. This method involves automatically saving data periodically so that the system can be restarted back to its saved state in the event of a crash. While checkpointing may seem simple enough, it can actually become a complicated process when you are backing up data on whole distributed systems. However, there are a number of solutions such as Distributed MultiThreading CheckPointing that simplify the process and allow you to checkpoint the status of multiple distributed systems.
Byzantine fault-tolerance is essentially a combination of all the above methods. This multi-faceted approach to fault tolerance is designed to deal with situations where the majority of your system’s monitoring modules are not able to reach a consensus on what a given output should be. There are numerous solutions that Byzantine fault-tolerance relies on in order to address this problem. For now, though, suffice it to say that Byzantine fault-tolerance is the most comprehensive approach that you will have available when building a fault tolerant system.
What’s the Difference Between Fault Tolerance and High-Availability?
While high-availability systems and fault tolerant systems are both designed to accomplish basically the same objective, there are a number of important distinctions between the two approaches. One key difference is that high-availability systems are designed to both limit downtime as well as keep the performance of the system from being negatively affected. With a fault tolerant system, downtime is still limited, but maintaining performance isn’t as much of a priority.
While this makes it sound as if high-availability systems have a clear advantage, there is an important benefit to fault tolerance that must be taken into account as well. If an error occurs during an active action in a fault tolerant system, the correct end state of that action will still be outputted. This is not the case with a high-availability system.
For example, if a user submits a request to your website that is hosted on a high-availability platform and a node crashes, the user will be given a 500 error message. However, the system will still remain operational and will be able to respond to new requests. With a fault tolerant system, though, the failure is worked around and a valid response is still displayed to the user – though it might be delayed. This is the most important distinction between high-availability and fault tolerance that you will want to keep in mind when deciding which system is best for your organisation.
Both high-availability systems and fault tolerant systems excel at preventing downtime and ensuring that single failures don’t crash the entire system, as understanding the importance of having an IT disaster recovery plan is essential. In the end, whether high-availability or fault tolerance is the right choice for your organisation comes down to your specific priorities and requirements.