Materials

The examples demonstrated throughout the course are available in a GitHub repository. For quick reference, the course slides are available as HTML or PDF, the course notes are likewise available as HTML or PDF. Both the slides and the notes are quite brief, please consult the references in the notes for further information.

Schedule

Date Content Materials
2023-02-17 Distributed Systems Architecture - Architectural Patterns - Middleware. Serialization - CBOR.
2023-02-24 Serialization - protobuf. Remote Procedure Call - Sun RPC.
2023-03-03 Remote Procedure Call - Java RMI (Argument Passing Transparency, Distributed Garbage Collection).
2023-03-10 Remote Procedure Call - Java RMI (Threading Models) - gRPC (Interface Definition Language, Language Mappings, Stream Arguments, Asynchronous Implementation). gRPC
2023-03-17 Remote Procedure Call - Thrift (Interface Definition Language, Language Mappings) - CORBA (Historical Perspective). Thrift
2023-03-24 Messaging - Concepts (Messages, Queues, Topics) - JMS (Classic API, Simplified API, Sessions and Threads, Reliable Delivery, Transactions) JMS
2023-03-31 Messaging - Camel (Examples) - Enterprise Integration Patterns - ZooKeeper (Architecture, Data Model, Atomicity). EIP
2023-04-14 Messaging - Kafka (Architecture, Data Model, Reliable Delivery, Streams). Protocols - Concepts (Reliability, Flow Control, CongestionControl).
2023-04-21 Protocols - NAT Traversal Principles. Multicast - Concepts (Membership, Reliability, Ordering). Messaging - JGroups (Architecture, Protocols). JGroups
2023-04-28 Distributed Hashing - Protocols (Chord, Pastry, Kademlia, CAN) - Hazelcast (Architecture, Distributed Data Structures). Hazelcast
2023-05-05 Messaging - MPI (Architecture, Addressing, Collective Communication). Shared Memory - memcached (Application).
2023-05-12 Messaging - 0MQ (Architecture, API). Shared Memory - redis (Architecture, API) - etcd (Architecture, RAFT, API). Messaging - DDS (Architecture).
2023-05-19 Components - Concepts (Interfaces, Contracts, Deployment) - EJB (Demo, Beans, Containers, Persistence) - OSGi (Bundles, Versioning, Dependencies).
N/A Communication - Web Services (SOAP, WSDL, BPEL) - REST (Concepts, Interface Description). Deployment - Docker (Images, Containers, Namespaces, Swarms) - Kubernetes (Pods, Deployments, Services) - Concepts (CI/CD, Gradual Deployment).