27.03.2014 Views

Programming Model and Protocols for Reconfigurable Distributed ...

Programming Model and Protocols for Reconfigurable Distributed ...

Programming Model and Protocols for Reconfigurable Distributed ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

86 CHAPTER 5. KOMPICS DISCUSSION AND COMPARISON TO RELATED WORK<br />

of non-blocking, highly concurrent systems. The same system software<br />

designated <strong>for</strong> production deployment can be executed in reproducible<br />

simulation mode without changing its source code, meaning that thirdparty<br />

binary libraries can also be leveraged in simulation. These properties<br />

of the framework, together with a rich library of provided protocols <strong>and</strong><br />

abstractions, led to Kompics being used <strong>for</strong> prototyping, evaluating, <strong>and</strong><br />

developing a diverse collection of distributed systems, such as a P2P video<br />

on dem<strong>and</strong> system [37], a secure <strong>and</strong> fault-tolerant distributed storage<br />

system [111], NAT-aware peer sampling protocols [73, 172], P2P live media<br />

streaming systems [170, 174, 171, 173, 176], a locality-aware scalable<br />

publish-subscribe system [187], scalable NAT-traversal protocols [164], distributed<br />

hash-table replication schemes [200], gossip protocols <strong>for</strong> distribution<br />

estimation [175], an elasticity controller simulator [162, 161], studies of<br />

multi-consistency-model key-value stores [7, 41], mechanisms <strong>for</strong> robust<br />

self-management [6, 22], <strong>and</strong> a reliable UDP transport mechanism [157].<br />

We have been using Kompics as a teaching framework in two courses on<br />

distributed systems, <strong>for</strong> more than five years. Students used Kompics successfully,<br />

both to deliver running implementations of complex distributed<br />

systems, <strong>and</strong> to gain insights into the dynamic behavior of those systems.<br />

Kompics blends message-passing concurrency from actor models, with<br />

nested hierarchical composition from component models, with explicit<br />

component dependencies from architecture description languages (ADLs).<br />

Consequently, Kompics is related to work in several areas including: concurrent<br />

programming models [21, 206], reconfigurable component models<br />

[44, 63, 165], reconfigurable software architectures [144, 152, 65, 8],<br />

protocol composition frameworks [168, 156, 84, 224, 180, 101] <strong>and</strong> eventbased<br />

frameworks <strong>for</strong> building distributed systems [123, 230, 109].<br />

5.1 Message-Passing Concurrency <strong>and</strong> Actor <strong>Model</strong>s<br />

The message-passing concurrency model employed by Kompics is similar<br />

to the actor model [2], of which Erlang [20, 21], the POSIX process <strong>and</strong> pipe<br />

model, Kilim [206], <strong>and</strong> Scala [165] are perhaps the best known examples.<br />

Similar to the actor model, message passing in Kompics involves buffering<br />

events be<strong>for</strong>e they are h<strong>and</strong>led in a first-in first-out (FIFO) order, thus

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!