Prototyping and implementing distributed algorithms, particularly those that address challenges related with fault-tolerance and dependability, is a time consuming task. This is, in part, due to the need of addressing low level aspects such as management of communication channels, controlling timeouts or periodic tasks, and dealing with concurrency issues. This has a significant impact for researchers that want to build prototypes for conducting experimental evaluation; practitioners that want to compare different design alternatives/solutions; and even for practical teaching activities on distributed algorithms courses. In this paper we present Babel, a novel framework to develop, implement, and execute distributed protocols and systems. Babel promotes an event driven programming and execution model that simplifies the task of translating typical specifications or descriptions of algorithms into performant prototypes, while allowing the programmer to focus on the relevant challenges of these algorithms by transparently handling time consuming low level aspects. Furthermore, Babel provides, and allows the definition of, networking components that can capture different network capabilities (e.g., P2P, Client/Server, phi-accrual Failure Detector), making the code mostly independent from the underlying communication aspects. Babel was built to be generic and can be used to implement a wide variety of different classes of distributed protocols. We conduct our experimental work with two relevant case studies, a Peer-to-Peer application and a State Machine Replication application, that show the generality and ease of use of Babel and present competitive performance when compared with significantly more complex implementations.
翻译:在本文中,我们介绍了一个开发、实施和执行分布式协议和系统的复杂竞争框架,巴比尔是一个开发、实施和执行分布式协议和系统的新框架。 Babyl提倡一种由事件驱动的编程和执行模式,该模式简化了将典型的算法规格或描述转换为性能原型的任务,同时让程序设计者通过透明处理低水平时间处理问题来关注这些算法的相关挑战。此外, Babel提供并允许定义能够捕捉不同网络能力的联网组成部分(例如,P2P、客户/服务员、二手化失败检测器),使该代码与普通化协议的应用更加独立,我们使用的普通化协议和普通化协议的应用可以与普通化协议的应用更加独立。