|
ABSTRACT
Concurrency and distribution pose algorithmic and implementation challenges in developing reliable distributed systems, making the field an excellent testbed for evaluating programming language and verification paradigms. Several specialized domain-specific languages and extensions of memory-unsafe languages were proposed to aid distributed system development. We present an alternative to these approaches, showing that modern, higher-order, strongly typed, memory safe languages provide an excellent vehicle for developing and debugging distributed systems. We present Opis, a functional-reactive approach for developing distributed systems in Objective Caml. An Opis protocol description consists of a reactive function (called event function) describing the behavior of a distributed system node. The event functions in Opis are built from pure functions as building blocks, composed using the Arrow combinators. Such architecture aids reasoning about event functions both informally and using interactive theorem provers. For example, it facilitates simple termination arguments. Given a protocol description, a developer can use higher-order library functions of Opis to 1) deploy the distributed system, 2) run the distributed system in a network simulator with full-replay capabilities, 3) apply explicit-state model checking to the distributed system, detecting undesirable behaviors, and 4) do performance analysis on the system. We describe the design and implementation of Opis, and present our experience in using Opis to develop peer-to-peer overlay protocols, including the Chord distributed hash table and the Cyclon random gossip protocol. We found that using Opis results in high programmer productivity and leads to easily composable protocol descriptions. Opis tools were effective in helping identify and eliminate correctness and performance problems during distributed system development.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
J. Armstrong. Making reliable distributed systems in the presence of software errors. PhD thesis, The Royal Institute of Technology, Stockholm, 2003.
|
| |
2
|
G. Berry. The Foundations of Esterel. MIT Press, 2000.
|
| |
3
|
|
 |
4
|
|
| |
5
|
Brendan Burns , Kevin Grimaldi , Alexander Kostadinov , Emery D. Berger , Mark D. Corner, Flux: a language for programming high-performance servers, Proceedings of the annual conference on USENIX '06 Annual Technical Conference, p.13-13, May 30-June 03, 2006, Boston, MA
|
 |
6
|
|
 |
7
|
|
 |
8
|
|
| |
9
|
|
 |
10
|
|
 |
11
|
|
| |
12
|
|
| |
13
|
|
| |
14
|
G. Hager and J. Peterson. Frob: A transformational approach to the design of robot software. In ISRR, 1999.
|
| |
15
|
N. Halbwachs, P. Caspi, P. Raymond, and D. Pilaud. The synchronous data-flow programming language LUSTRE. Proceedings of the IEEE, 79(9), 1991.
|
| |
16
|
|
| |
17
|
|
| |
18
|
|
| |
19
|
P. Hudak, A. Courtney, H. Nilsson, and J. Peterson. Arrows, robots, and functional reactive programming. In Advanced Functional Programming, volume 2638 of LNCS, 2002.
|
| |
20
|
|
 |
21
|
|
 |
22
|
Charles Edwin Killian , James W. Anderson , Ryan Braud , Ranjit Jhala , Amin M. Vahdat, Mace: language support for building distributed systems, Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation, June 10-13, 2007, San Diego, California, USA
|
 |
23
|
|
| |
24
|
|
| |
25
|
|
 |
26
|
|
 |
27
|
|
| |
28
|
Shiding Lin , Aimin Pan , Zheng Zhang , Rui Guo , Zhenyu Guo, WiDS: an integrated toolkit for distributed system development, Proceedings of the 10th conference on Hot Topics in Operating Systems, p.17-17, June 12-15, 2005, Santa Fe, NM
|
| |
29
|
|
 |
30
|
Xiaoming Liu , Christoph Kreitz , Robbert van Renesse , Jason Hickey , Mark Hayden , Kenneth Birman , Robert Constable, Building reliable, high-performance communication systems from components, Proceedings of the seventeenth ACM symposium on Operating systems principles, p.80-92, December 12-15, 1999, Charleston, South Carolina, United States
|
 |
31
|
|
 |
32
|
|
| |
33
|
|
| |
34
|
|
 |
35
|
|
| |
36
|
R. Paterson. The Fun of Programming. Palgrave, 2003.
|
| |
37
|
J. H. Reppy. Higher-Order Concurrency. Technical Report TR92-1852, Cornell Univ, Ithaca, NY, 1992.
|
| |
38
|
Adolfo Rodriguez , Charles Killian , Sooraj Bhat , Dejan Kostić , Amin Vahdat, MACEDON: methodology for automatically creating, evaluating, and designing overlay networks, Proceedings of the 1st conference on Symposium on Networked Systems Design and Implementation, p.20-20, March 29-31, 2004, San Francisco, California
|
 |
39
|
Peter Sewell , James J. Leifer , Keith Wansbrough , Francesco Zappa Nardelli , Mair Allen-Williams , Pierre Habouzit , Viktor Vafeiadis, Acute: high-level programming language design for distributed computation, Proceedings of the tenth ACM SIGPLAN international conference on Functional programming, September 26-28, 2005, Tallinn, Estonia
|
 |
40
|
|
| |
41
|
S. Voulgaris, D. Gavidia, and M. Steen. Cyclon: Inexpensive membership management for unstructured p2p overlays. Journal of Network and Systems Management, 13, 2005.
|
| |
42
|
S. Voulgaris and M. van Steen. Epidemic-style management of semantic overlays for content-based searching. In EuroPar, 2005.
|
| |
43
|
MLDonkey, the p2p client for Linux/Unix/Windows. http://mldonkey.sourceforge.net/.
|
|