1. Overview
1.1 Comparison
Term |
Reactive Systems |
Reactive Programming |
Functional Reactive Programming(FRP) |
Description |
Architecture and Design |
Generally, Event-Based |
Often confused with Reactive Programming |
1.2 Reactive Programming with Reactive Systems
- Reactive Programming is a useful implementation technique
- Reactive Programming focuses on non-blocking, asynchronous execution - a key of characteristic of Reactive Systems.
- Reactive Programming is just one tool in building Reactive Systems.
2. Features
2.1 Responsive
- The system responds in a timely manner.
- Responsiveness is the cornerstone of usability and utility.
- Responsiveness also means problems may be detected quickly and dealt with effectively.
- Responsive systems provide rapid and consistent response times.
- Consistent behavior simplifies error handling, builds end-user confidence, and encourages further interaction.
2.2 Resilient
- System stays responsive in the face of failure
- Resilience is achieved by replication, containment, isolation, and delegation
- Failures are contained within each component
- Parts of the system can fail, without compromising the system as a whole
- Recovery of each component is delegated to another
- High-availability is ensured by replication where necessary
2.3 Elastic
- The system stays responsive under varying workload
- Reactive Systems can react to changes in the input rate by increasing or decreasing resources allocated to service inputs
- Reactive Systems achieve elasticity in a cost-effective way on commodity hardware and software platforms.
2.4 Message Driven
- Reactive Systems rely on asynchronous message-passing to establish a boundary between components
- This ensures loose coupling, isolation, and location transparency
- Message passing enables load management, elasticity, and flow control
- Location transparent messaging makes management of failures possible
- Non-blocking communication allows recipients to only consume resources while active, leading to less system overhead.
3. Reference
https://reactivemanifesto.org/
https://springframework.guru/about/