Distributed Systems Paradigms
Objectives
- Know the main distributed systems programming paradigms.
- Choose the paradigm(s) appropriate to the problem to be solved.
- Implement highly concurrent services, originated by a large number of clients.
- Implement services involving components written in different languages and paradigms.
- Plan and implement distributed systems through the combination of middleware components.
Program
- Event based programming:
- callback based state machines;
- programming with futures;
- programming with async / await;
- Actor based programming:
- the actor model (isolated processes, asynchronous send, selective receive); - case study, e.g., Erlang programming;
- Programming based on message patterns:
- message oriented middleware;
- message patterns;
- event notification systems and the publisher-subscriber model;
- case study, e.g., ZeroMQ;
Bibliography
- Distributed Systems, 3rd ed., M. van Steen and A.S. Tanenbaum, distributed-systems.net, 2017
- Programming Erlang, Joe Armstrong, Pragmatic Bookshelf, 2013
- Distributed Event-Based Systems, Gero Mühl, Ludger Fiege, Peter Pietzuch, Springer, 2006
- Tomasz Nurkiewicz and Ben Christensen. Reactive Programming with RxJava: Creating Asynchronous, Event-Based Applications. O’Reilly, 2017.