In this post, we are going to talk about reactive system what exactly we mean by reactive systems and how the software industry or application have evolved over a period of time. So today we want a highly reactive system. This post is about understanding the term Reactive System. What exactly we mean by such a system.
What is a Reactive System?
- A system that is robust enough, more resilient, fault-tolerant, more flexible.
- It should be Scalable.
- A millisecond of response time.
Reactive Architecture follows four principles.
- It should respond in a consistent and timely manner.
- It should detect the failure quickly.
Let’s say if you send a message to someone and that person replies to you very quickly. We can say the person is very responsive. So the response time of your application should be consistent. This is what we call a responsive system.
When a failure occurs how your system reacts to that failure, does it become unresponsive or throw some internal server error. So the more resilient system will responsive even during the time of failure. It will be available if any failure occurs.
- To ensure high availability by replication of the nodes.
- Components of a system should be isolated so that in case of failure, part of the system can fail not the entire system.
Let’s say if one component of a system got failed then it should not stop the entire system.
- It should add resources to itself if traffic is higher
- It should reduce the consumption of resources by itself if traffic is normal.
Elastic means depending upon the traffic, the system will scale up or scale down.
Let’s say your website got huge traffic during the Christmas season and normal traffic in any other season. So the system should increase the resources in the Christmas season and it should reduce the resources in any other season when traffic is normal.
Reactive System rely on asynchronous communication between the components. It is nonblocking communication. Your component will be loosely coupled, they can be isolated from each other. You can manage the flow control of your queues, load balance, monitor them so that your system remains responsive, resilient, and elastic.
To make a reactive system, it must have all these properties. It must be responsive, resilient, elastic, and message-driven as well.
If you find this article interesting, please check out our other articles.