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.

Updated: