[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/2611286.2611290acmconferencesArticle/Chapter ViewAbstractPublication PagesdebsConference Proceedingsconference-collections
research-article

We have a DREAM: distributed reactive programming with consistency guarantees

Published: 26 May 2014 Publication History

Abstract

The reactive programming paradigm has been proposed to simplify the development of reactive systems. It relies on programming primitives to express dependencies between data items and on runtime/middleware support for automated propagation of changes. Despite this paradigm is receiving increasing attention, defining the precise semantics and the consistency guarantees for reactive programming in distributed environments is an open research problem.
This paper targets such problem by studying the consistency guarantees for the propagation of changes in a distributed reactive system. In particular, it introduces three propagation semantics, namely causal, glitch free, and atomic, providing different trade-offs between costs and guarantees. Furthermore, it describes how these semantics are concretely implemented in a Distributed REActice Middleware (DREAM), which exploits a distributed event-based dispatching system to propagate changes.
We compare the performance of DREAM in a wide range of scenarios. This allows us to study the overhead introduced by the different semantics in terms of network traffic and propagation delay and to assess the efficiency of DREAM in supporting distributed reactive systems.

References

[1]
E. Bainomugisha, A. L. Carreton, T. Van Cutsem, S. Mostinckx, and W. De Meuter. A survey on reactive programming. ACM Comput. Surv., 2012.
[2]
R. S. Barga, J. Goldstein, M. H. Ali, and M. Hong. Consistent streaming through time: A vision for event stream processing. In CIDR, pages 363--374, 2007.
[3]
A. Benveniste, P. Caspi, S. A. Edwards, N. Halbwachs, P. Le Guernic, and R. De Simone. The synchronous languages 12 years later. Procs. of the IEEE, 91(1):64--83, 2003.
[4]
D. Blevins. Overview of the enterprise JavaBeans component model. In Component-based software engineering, pages 589--606. Addison-Wesley Longman Publishing Co., Inc., 2001.
[5]
K. Burchett, G. H. Cooper, and S. Krishnamurthi. Lowering: a static optimization technique for transparent functional reactivity. In PEPM, pages 71--80, 2007.
[6]
G. H. Cooper and S. Krishnamurthi. Embedding dynamic dataflow in a call-by-value language. In ESOP, pages 294--308, 2006.
[7]
A. Courtney. Frappe: Functional reactive programming in Java. In PADL, pages 29--44, 2001.
[8]
G. Cugola, E. Di Nitto, and A. Fuggetta. The JEDI event-based infrastructure and its application to the development of the OPSS WFMS. IEEE Trans. Soft. Eng., 27(9):827--850, 2001.
[9]
G. Cugola and A. Margara. Processing flows of information: From data stream to complex event processing. ACM Comput. Surv., 44(3):1--62, 2012.
[10]
G. Cugola and G. P. Picco. REDS: a reconfigurable dispatching system. In SEM, pages 9--16, 2006.
[11]
C. Elliott and P. Hudak. Functional reactive animation. In ICFP, pages 263--273, 1997.
[12]
C. M. Elliott. Push-pull functional reactive programming. In Haskell, pages 25--36, 2009.
[13]
O. Etzion and P. Niblett. Event processing in action. Manning Publications Co., 2010.
[14]
P. Eugster and K. Jayaram. EventJava: An extension of Java for event correlation. In ECOOP, pages 570--594, 2009.
[15]
P. T. Eugster, P. A. Felber, R. Guerraoui, and A.-M. Kermarrec. The many faces of publish/subscribe. ACM Comput. Surv., 35(2):114--131, 2003.
[16]
W. Galuba, K. Aberer, Z. Despotovic, and W. Kellerer. Protopeer: From simulation to live deployment in one step. In P2P, pages 191--192, 2008.
[17]
V. Gasiunas, L. Satabin, M. Mezini, A. Núñez, and J. Noyé. EScala: modular event-driven object interactions in Scala. In AOSD, pages 227--240, 2011.
[18]
P. Hudak, A. Courtney, H. Nilsson, and J. Peterson. Arrows, robots, and functional reactive programming. In Advanced Functional Programming, pages 159--187. Springer, 2003.
[19]
X. Jia. A total ordering multicast protocol using propagation trees. IEEE Trans. on Parallel Distrib, Syst., 6(6):617--627, 1995.
[20]
R. Johnson, R. Helm, J. Vlissides, and E. Gamma. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional, 1995.
[21]
G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-oriented programming. Springer, 1997.
[22]
L. Lamport. Time, clocks, and the ordering of events in a distributed system. Commun. ACM, 21(7):558--565, 1978.
[23]
A. Lombide Carreton, S. Mostinckx, T. Cutsem, and W. Meuter. Loosely-coupled distributed reactive programming in mobile ad hoc networks. In Objects, Models, Components, Patterns, volume 6141, pages 41--60, 2010.
[24]
D. C. Luckham. The power of events, volume 204. Addison-Wesley Reading, 2002.
[25]
I. Maier and M. Odersky. Deprecating the Observer Pattern with Scala.react. Technical report, EPFL, 2012.
[26]
A. Margara and G. Cugola. High Performance Content-Based Matching Using GPUs. In DEBS, pages 183--194, 2011.
[27]
A. Margara and G. Cugola. High performance publish-subscribe matching using parallel hardware. IEEE Trans. on Parallel Distrib. Syst., 2014.
[28]
A. Margara and G. Salvaneschi. Ways to react: Comparing reactive languages and complex event processing. In REM, 2013.
[29]
E. Meijer. Your mouse is a database. Commun. ACM, 55(5):66--73, 2012.
[30]
L. A. Meyerovich, A. Guha, J. Baskin, G. H. Cooper, M. Greenberg, A. Bromfield, and S. Krishnamurthi. Flapjax: a programming language for Ajax applications. In OOPSLA, pages 1--20, 2009.
[31]
G. Mühl, L. Fiege, and P. Pietzuch. Distributed event-based systems. Springer, Heidelberg, 2006.
[32]
T. Parr. The Definitive ANTLR 4 Reference. Pragmatic Bookshelf, 2013.
[33]
H. Rajan and G. T. Leavens. Ptolemy: A language with quantified, typed events. In ECOOP, pages 155--179, 2008.
[34]
M. Sadoghi, H. Singh, and H.-A. Jacobsen. Towards highly parallel event processing through reconfigurable hardware. In DaMoN, pages 27--32, 2011.
[35]
G. Salvaneschi, J. Drechsler, and M. Mezini. Towards distributed reactive programming. In Coordination Models and Languages, pages 226--235. Springer, 2013.
[36]
G. Salvaneschi, G. Hintz, and M. Mezini. REScala: Bridging between object-oriented and functional style in reactive applications. In AOSD, 2014.
[37]
G. Salvaneschi and M. Mezini. Reactive behavior in object-oriented applications: An analysis and a research roadmap. In AOSD, 2013.
[38]
J. M. Van Ham, G. Salvaneschi, M. Mezini, and J. Noyé. JEScala: Modular coordination with declarative events and joins. In AOSD '14, 2014.
[39]
P. G. Whiting and R. S. Pascoe. A history of data-flow languages. Annals of the History of Computing, 16(4):38--59, 1994.
[40]
K. Zhang, V. Muthusamy, and H.-A. Jacobsen. Total order in content-based publish/subscribe systems. In ICDCS, pages 335--344, 2012.

Cited By

View all
  • (2024)The Meerkat Vision: Language Support for Live, Scalable, Reactive Web AppsProceedings of the 2024 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/3689492.3690048(54-67)Online publication date: 17-Oct-2024
  • (2023)Realizing Persistent Signals in JavaScriptProceedings of the 10th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems10.1145/3623506.3623576(25-30)Online publication date: 19-Oct-2023
  • (2022)Distributed Persistent Signals: Architecture and ImplementationProceedings of the 9th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems10.1145/3563837.3568341(13-23)Online publication date: 29-Nov-2022
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
DEBS '14: Proceedings of the 8th ACM International Conference on Distributed Event-Based Systems
May 2014
371 pages
ISBN:9781450327374
DOI:10.1145/2611286
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 26 May 2014

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. consistency guarantees
  2. distributed reactive programming
  3. dream
  4. event-based middleware
  5. glitch-freedom

Qualifiers

  • Research-article

Funding Sources

Conference

DEBS '14

Acceptance Rates

DEBS '14 Paper Acceptance Rate 16 of 174 submissions, 9%;
Overall Acceptance Rate 145 of 583 submissions, 25%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)9
  • Downloads (Last 6 weeks)1
Reflects downloads up to 02 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2024)The Meerkat Vision: Language Support for Live, Scalable, Reactive Web AppsProceedings of the 2024 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/3689492.3690048(54-67)Online publication date: 17-Oct-2024
  • (2023)Realizing Persistent Signals in JavaScriptProceedings of the 10th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems10.1145/3623506.3623576(25-30)Online publication date: 19-Oct-2023
  • (2022)Distributed Persistent Signals: Architecture and ImplementationProceedings of the 9th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems10.1145/3563837.3568341(13-23)Online publication date: 29-Nov-2022
  • (2022)Mining the usage of reactive programming APIsProceedings of the 19th International Conference on Mining Software Repositories10.1145/3524842.3527966(203-214)Online publication date: 23-May-2022
  • (2020)Trident: Toward Distributed Reactive SDN Programming With Consistent UpdatesIEEE Journal on Selected Areas in Communications10.1109/JSAC.2020.299965438:7(1322-1334)Online publication date: Jul-2020
  • (2020)A Semantic Framework for the Design of Distributed Reactive Real-Time Languages and ApplicationsIEEE Access10.1109/ACCESS.2020.30106978(143862-143880)Online publication date: 2020
  • (2019)A fault-tolerant programming model for distributed interactive applicationsProceedings of the ACM on Programming Languages10.1145/33605703:OOPSLA(1-29)Online publication date: 10-Oct-2019
  • (2019)An approach for persistent time-varying valuesProceedings of the 2019 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/3359591.3359730(17-31)Online publication date: 23-Oct-2019
  • (2018)Distributed functional reactive programming on actor-based runtimeProceedings of the 8th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control10.1145/3281366.3281370(13-22)Online publication date: 5-Nov-2018
  • (2018)Distributed system development with ScalaLociProceedings of the ACM on Programming Languages10.1145/32764992:OOPSLA(1-30)Online publication date: 24-Oct-2018
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media