Modern applications present incredible design challenges: we expect near-realtime performance while managing petabyte-scale data and distribution across environments ranging from traditional servers to cloud systems to mobile devices.
The Reactive Application model addresses these demands through new patterns designed to "react" effectively to user and system events, changes in load, competition for shared system resources, and unanticipated failures. Although reactive design patterns can be implemented using standard enterprise development tools, you best realize the benefits when you pair them with a functional programming language like Scala and an Actor-based concurrency system like Akka.
Rfx version 1.0, the first open source framework for reactive big data processing, applied Reactive programming with Lambda Architecture
Core ideas of Rfx:
- event source (user click a link), creates an new event, which sends to Rfx system (a page-view of URL)
- an event is recorded in a topic, transmits to seeding functor (aka" event handler) in topology
- the seeding functor will emit to all functors in hyper-topology
- the ending functor will push back the info graph to event source (user) or event subscriber (data analyst)