1 research outputs found
Distributed Reactive Programming for Reactive Distributed Systems
Context: The term reactivity is popular in two areas of research: programming
languages and distributed systems. On one hand, reactive programming is a
paradigm which provides programmers with the means to declaratively write
event-driven applications. On the other hand, reactive distributed systems
handle client requests in a timely fashion regardless of load or failures.
Inquiry: Reactive programming languages and frameworks tailored to the
implementation of distributed systems have previously been proposed. However,
we argue that these approaches are ill fit to implement reactive distributed
systems. Approach: We analyse state of the art runtimes for distributed
reactive programming and identify two key issues with regards to reactive
distributed systems. They rely on single, central points of coordination and/or
assume a lack of partial failures in the systems they support. Knowledge: Based
on our analysis we propose a novel runtime for distributed reactive programming
languages and frameworks. This runtime supports reactive distributed systems by
design. Grounding: We implement a proof of concept framework for reactive
distributed systems in JavaScript which builds atop our runtime. Using this
framework we implement a case study application which highlights the
applicability of our approach. Moreover, we benchmark our runtime against a
similar approach in order to showcase its runtime properties and we prove its
correctness. Importance: This work aims to bridge the gap between two kinds of
reactivity: reactive distributed systems and distributed reactive programming.
Current distributed reactive programming approaches do not support reactive
distributed systems. Our runtime is the first to bridge this reactivity gap: it
allows for reactive distributed systems to be implemented using distributed
reactive programming