Reactive (disambiguation)
Reactive Manifesto
Introduced in 2013, the Reactive Manifesto summarizes the properties a system must fulfill to be considered reactive. The following are the four aspects all reactive systems must fulfill:
-
Responsive — The system responds in a timely manner if at all possible.
-
Resilient — The system stays responsive in the face of failure.
-
Elastic — The system stays responsive under varying workload.
-
Message Driven — Reactive Systems rely on asynchronous message-passing to establish a boundary between components that ensures loose coupling, isolation and location transparency.
You can read the whole manifesto on ReactiveManifesto.org .
Reactive Principles (and Patterns)
As a companion to the Reactive Manifesto, the Reactive Principles incorporate the ideas, paradigms, methods, and patterns from both Reactive Programming and Reactive Systems into a set of practical principles that software architects and developers can apply in their transformative work.
The eight foundational principles of implementing a distributed system that make an application Reactive are:
-
Stay Responsive
-
Accept Uncertainty
-
Embrace Failure
-
Assert Autonomy
-
Tailor Consistency
-
Decouple Time
-
Decouple Space
-
Handle Dynamics
Read all the details (and the patterns) at the Reactive Foundation .
Reactive Systems
A collection of components decoupled in time and connected via message-passing.
A System is a building block of an application, and a Reactive System is one that adheres to the Reactive Principles.
Reactive Programming
Reactive Programming, […] is a subset of Asynchronous Programming and a paradigm where the availability of new information drives the logic forward rather than having control flow driven by a thread-of-execution.
It supports decomposing the problem into multiple discrete steps where each can be executed in an asynchronous and nonblocking fashion, and then be composed to produce a workflow—possibly unbounded in its inputs or outputs.
Jonas Bonér and Viktor Klang
Reactive Streams
Reactive Streams is an initiative to provide a standard for asynchronous stream processing with non-blocking back pressure. This encompasses efforts aimed at runtime environments (JVM and JavaScript) as well as network protocols.