Programming Model and Protocols for Reconfigurable Distributed Systems
Distributed systems are everywhere. From large datacenters to mobile devices, an ever richer assortment of applications and services relies on distributed systems, infrastructure, and protocols. Despite their ubiquity, testing and debugging distributed systems remains notoriously hard. Moreover, asi...
Main Author: | |
---|---|
Format: | Doctoral Thesis |
Language: | English |
Published: |
SICS
2013
|
Subjects: | |
Online Access: | http://urn.kb.se/resolve?urn=urn:nbn:se:ri:diva-24202 http://nbn-resolving.de/urn:isbn:978-91-7501-694-8 |
id |
ndltd-UPSALLA1-oai-DiVA.org-ri-24202 |
---|---|
record_format |
oai_dc |
spelling |
ndltd-UPSALLA1-oai-DiVA.org-ri-242022016-11-01T05:07:10ZProgramming Model and Protocols for Reconfigurable Distributed SystemsengArad, CosminSICSSchool of Information and Communication TechnologyStockholm, Sweden : Universitetsservice US-AB2013distributed systemsprogramming modelmessage-passing concurrencynested hierarchical compositionreactive componentssoftware architecturedynamic reconfigurationmulti-corediscrete-event simulationpeer-to-peertestingdebuggingdistributed key-value storesdata replicationconsistencylinearizabilitynetwork partition toleranceconsistent hashingself-organizationscalabilityelasticityfault toleranceconsistent quorumsDistributed systems are everywhere. From large datacenters to mobile devices, an ever richer assortment of applications and services relies on distributed systems, infrastructure, and protocols. Despite their ubiquity, testing and debugging distributed systems remains notoriously hard. Moreover, aside from inherent design challenges posed by partial failure, concurrency, or asynchrony, there remain significant challenges in the implementation of distributed systems. These programming challenges stem from the increasing complexity of the concurrent activities and reactive behaviors in a distributed system on the one hand, and the need to effectively leverage the parallelism offered by modern multi-core hardware, on the other hand. This thesis contributes Kompics, a programming model designed to alleviate some of these challenges. Kompics is a component model and programming framework for building distributed systems by composing message-passing concurrent components. Systems built with Kompics leverage multi-core machines out of the box, and they can be dynamically reconfigured to support hot software upgrades. A simulation framework enables deterministic execution replay for debugging, testing, and reproducible behavior evaluation for large-scale Kompics distributed systems. The same system code is used for both simulation and production deployment, greatly simplifying the system development, testing, and debugging cycle. We highlight the architectural patterns and abstractions facilitated by Kompics through a case study of a non-trivial distributed key-value storage system. CATS is a scalable, fault-tolerant, elastic, and self-managing key-value store which trades off service availability for guarantees of atomic data consistency and tolerance to network partitions. We present the composition architecture for the numerous protocols employed by the CATS system, as well as our methodology for testing the correctness of key CATS algorithms using the Kompics simulation framework. Results from a comprehensive performance evaluation attest that CATS achieves its claimed properties and delivers a level of performance competitive with similar systems which provide only weaker consistency guarantees. More importantly, this testifies that Kompics admits efficient system implementations. Its use as a teaching framework as well as its use for rapid prototyping, development, and evaluation of a myriad of scalable distributed systems, both within and outside our research group, confirm the practicality of Kompics. KompicsCATSRESTDoctoral thesis, monographinfo:eu-repo/semantics/doctoralThesistexthttp://urn.kb.se/resolve?urn=urn:nbn:se:ri:diva-24202urn:isbn:978-91-7501-694-8SICS dissertation series, 1101-1335application/pdfinfo:eu-repo/semantics/openAccessapplication/x-gzipinfo:eu-repo/semantics/openAccess |
collection |
NDLTD |
language |
English |
format |
Doctoral Thesis |
sources |
NDLTD |
topic |
distributed systems programming model message-passing concurrency nested hierarchical composition reactive components software architecture dynamic reconfiguration multi-core discrete-event simulation peer-to-peer testing debugging distributed key-value stores data replication consistency linearizability network partition tolerance consistent hashing self-organization scalability elasticity fault tolerance consistent quorums |
spellingShingle |
distributed systems programming model message-passing concurrency nested hierarchical composition reactive components software architecture dynamic reconfiguration multi-core discrete-event simulation peer-to-peer testing debugging distributed key-value stores data replication consistency linearizability network partition tolerance consistent hashing self-organization scalability elasticity fault tolerance consistent quorums Arad, Cosmin Programming Model and Protocols for Reconfigurable Distributed Systems |
description |
Distributed systems are everywhere. From large datacenters to mobile devices, an ever richer assortment of applications and services relies on distributed systems, infrastructure, and protocols. Despite their ubiquity, testing and debugging distributed systems remains notoriously hard. Moreover, aside from inherent design challenges posed by partial failure, concurrency, or asynchrony, there remain significant challenges in the implementation of distributed systems. These programming challenges stem from the increasing complexity of the concurrent activities and reactive behaviors in a distributed system on the one hand, and the need to effectively leverage the parallelism offered by modern multi-core hardware, on the other hand. This thesis contributes Kompics, a programming model designed to alleviate some of these challenges. Kompics is a component model and programming framework for building distributed systems by composing message-passing concurrent components. Systems built with Kompics leverage multi-core machines out of the box, and they can be dynamically reconfigured to support hot software upgrades. A simulation framework enables deterministic execution replay for debugging, testing, and reproducible behavior evaluation for large-scale Kompics distributed systems. The same system code is used for both simulation and production deployment, greatly simplifying the system development, testing, and debugging cycle. We highlight the architectural patterns and abstractions facilitated by Kompics through a case study of a non-trivial distributed key-value storage system. CATS is a scalable, fault-tolerant, elastic, and self-managing key-value store which trades off service availability for guarantees of atomic data consistency and tolerance to network partitions. We present the composition architecture for the numerous protocols employed by the CATS system, as well as our methodology for testing the correctness of key CATS algorithms using the Kompics simulation framework. Results from a comprehensive performance evaluation attest that CATS achieves its claimed properties and delivers a level of performance competitive with similar systems which provide only weaker consistency guarantees. More importantly, this testifies that Kompics admits efficient system implementations. Its use as a teaching framework as well as its use for rapid prototyping, development, and evaluation of a myriad of scalable distributed systems, both within and outside our research group, confirm the practicality of Kompics. === Kompics === CATS === REST |
author |
Arad, Cosmin |
author_facet |
Arad, Cosmin |
author_sort |
Arad, Cosmin |
title |
Programming Model and Protocols for Reconfigurable Distributed Systems |
title_short |
Programming Model and Protocols for Reconfigurable Distributed Systems |
title_full |
Programming Model and Protocols for Reconfigurable Distributed Systems |
title_fullStr |
Programming Model and Protocols for Reconfigurable Distributed Systems |
title_full_unstemmed |
Programming Model and Protocols for Reconfigurable Distributed Systems |
title_sort |
programming model and protocols for reconfigurable distributed systems |
publisher |
SICS |
publishDate |
2013 |
url |
http://urn.kb.se/resolve?urn=urn:nbn:se:ri:diva-24202 http://nbn-resolving.de/urn:isbn:978-91-7501-694-8 |
work_keys_str_mv |
AT aradcosmin programmingmodelandprotocolsforreconfigurabledistributedsystems |
_version_ |
1718391193280184320 |