As discussed in the preceding sections, generating a timely response is an important aspect of reactive systems. The requirement means that reactive systems must provide a deterministic response in a timely manner. However, all software systems are inherently unreliable. The underlying network itself is unreliable. All components can fail without providing a response. As a result, systems with streaming results can get stuck waiting for a response.
A way to address this unreliability is to adapt the fail-fast system design. This design dictates that a system makes some assumptions for normal operations, and it must fail as soon as these assumptions are broken. This leads to the early reporting of likely issues. In order to do this, we must assume a likely response time, the most common fail-fast metric. If the response is not received in this time, then the system must...