Program analysis for event-based distributed systems

Designing distributed applications around the idiom of events has several benefits including extensibility and scalability. To improve conciseness, safety, and efficiency of corresponding programs, several authors have recently proposed programming languages or language extensions with support for event-based programming. The presence of a dedicated programming language and compilation process offers avenues for program analyses to further improve simplicity, safety, and expressiveness of distributed event-based software. This paper presents three program analyses specifically designed for event-based programs: immutability analysis avoids costly cloning of events in the presence of co-located handlers for same events; guard analysis allows for simple yet expressive subscriptions which can be further simplified and handled efficiently; causality analysis determines causal dependencies among events which are related, allowing unrelated events to be transferred independently for efficiency. We convey the benefits of our approach by empirically evaluating their performance benefits.

[1]  S. Chiba,et al.  Remote pointcut: a language construct for distributed AOP , 2004, AOSD '04.

[2]  Philipp Haller,et al.  Implementing Joins Using Extensible Pattern Matching , 2008, COORDINATION.

[3]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[4]  Jan Vitek,et al.  Streamflex: high-throughput stream programming in java , 2007, OOPSLA.

[5]  Luca Cardelli,et al.  Modern concurrency abstractions for C# , 2002, TOPL.

[6]  Johannes Gehrke,et al.  Towards Expressive Publish/Subscribe Systems , 2006, EDBT.

[7]  Patrick Th. Eugster,et al.  Type-based publish/subscribe: Concepts and experiences , 2007, TOPL.

[8]  Michael I. Gordon,et al.  Language and Compiler Design for Streaming Applications , 2004, 18th International Parallel and Distributed Processing Symposium, 2004. Proceedings..

[9]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[10]  André Schiper,et al.  Lightweight causal and atomic group multicast , 1991, TOCS.

[11]  Patrick Th. Eugster,et al.  Putting events in context: aspects for event-based distributed programming , 2011, AOSD '11.

[12]  G. Stewart Von Itzstein,et al.  The Expression of Common Concurrency Patterns in Join Java , 2004, PDPTA.

[13]  David S. Rosenblum,et al.  Design and evaluation of a wide-area event notification service , 2001, TOCS.

[14]  Marcos K. Aguilera,et al.  Matching events in a content-based subscription system , 1999, PODC '99.

[15]  Luis Daniel Benavides Navarro,et al.  Explicitly distributed AOP using AWED , 2006, AOSD '06.

[16]  LamportLeslie Time, clocks, and the ordering of events in a distributed system , 1978 .

[17]  Hector Garcia-Molina,et al.  Parameterized subscriptions in publish/subscribe systems , 2007, Data Knowl. Eng..

[18]  Patrick Th. Eugster,et al.  Scalable Efficient Composite Event Detection , 2010, COORDINATION.

[19]  Rachid Guerraoui,et al.  Concurrency and distribution in object-oriented programming , 1998, CSUR.

[20]  Patrick Th. Eugster,et al.  EventJava: An Extension of Java for Event Correlation , 2009, ECOOP.

[21]  Joe Armstrong,et al.  Concurrent programming in ERLANG , 1993 .

[22]  Rachid Guerraoui,et al.  Concurrency, distribution and parallelism in object oriented programming , 1997 .

[23]  Stanley B. Zdonik,et al.  Staying FIT: Efficient Load Shedding Techniques for Distributed Stream Processing , 2007, VLDB.

[24]  Susan Eisenbach,et al.  JErlang: Erlang with Joins , 2010, COORDINATION.

[25]  Rachid Guerraoui,et al.  Extensible encoding of type hierarchies , 2008, POPL '08.

[26]  Alfonso Fuggetta,et al.  The JEDI Event-Based Infrastructure and Its Application to the Development of the OPSS WFMS , 2001, IEEE Trans. Software Eng..

[27]  Gary T. Leavens,et al.  Ptolemy: A Language with Quantified, Typed Events , 2008, ECOOP.

[28]  Daniel Popescu Impact analysis for event-based components and systems , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[29]  David E. Culler,et al.  The nesC language: A holistic approach to networked embedded systems , 2003, PLDI.

[30]  Wolfram Schulte,et al.  The essence of data access in Cω: the power is in the dot! , 2005 .

[31]  Dale Skeen,et al.  The Information Bus: an architecture for extensible distributed systems , 1994, SOSP '93.

[32]  John H. Reppy,et al.  Specialization of CML message-passing primitives , 2007, POPL '07.

[33]  Sorin Lerner,et al.  Deep typechecking and refactoring , 2008, OOPSLA '08.

[34]  Premkumar T. Devanbu,et al.  DADO: enhancing middleware to support crosscutting features in distributed, heterogeneous systems , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[35]  Hans-Arno Jacobsen,et al.  Composite Subscriptions in Content-Based Publish/Subscribe Systems , 2005, Middleware.

[36]  Martin Odersky,et al.  Scala Actors: Unifying thread-based and event-based programming , 2009, Theor. Comput. Sci..

[37]  Cédric Fournet,et al.  The reflexive CHAM and the join-calculus , 1996, POPL '96.

[38]  Susan Eisenbach,et al.  Fairness for Chorded Languages , 2009, COORDINATION.

[39]  Todd D. Millstein,et al.  Responders: Language Support for Interactive Applications , 2006, ECOOP.

[40]  ReppyJohn,et al.  Specialization of CML message-passing primitives , 2007 .

[41]  Jennifer Widom,et al.  The CQL continuous query language: semantic foundations and query execution , 2006, The VLDB Journal.

[42]  Mads Haahr,et al.  Filtering and scalability in the ECO distributed event model , 2000, 2000 Proceedings International Symposium on Software Engineering for Parallel and Distributed Systems.

[43]  Patrick Th. Eugster,et al.  Parametric Subscriptions for Content-Based Publish/Subscribe Networks , 2010, Middleware.