Gedistribueerde Systemen
Topics te kennen voor het examen (2013-2014)
Les 1: Introductie
- Metcalfe’s Law
- Pitfalls (lijst niet vanbuiten kennen maar wel begrijpen wat met elke pitfall bedoeld wordt)
- Latency Hiding
- Caching en replicatie
- Soorten gedistribueerde systemen
- Gedistribueerde versus parallelle systemen: verschillen
Les 2: Client-server
- Client-server vs peer-to-peer
- Two-tier, Three-teer architecturen
- Sockets: basisprincipes (hoe komt verbinding tot stand, wat voor interface wordt aangeboden). Niet nodig om de Java socket API van buiten te leren.
- Session state, stateless servers, leasing
Les 3: Concurrency
- Shared-memory: begrijp het model
- Begrijp hoe threading werkt in Java
- Begrijpen waarom locks nodig zijn (race conditions, bad interleavings)
- Begrijpen hoe locks in Java op een correcte wijze gebruikt worden
- Deadlocks: begrijpen waarom en hoe ze voorkomen, hoe ze op te lossen
- Gegeven een stuk Java broncode moet je in staat zijn om concurrency problemen te detecteren en op te lossen
Les 4: OS support en Multithreaded servers
- Threads vs Processen, kernel vs user threads
- Virtualisatie: Proces-VM versus Systeem-VM, nut
- Afhandelen van client requests in een server: begrijp de 4 aanpakken (single-threaded, multi-threaded, multi-threaded met thread pool en event-driven), begrijp hun relatieve voor- en nadelen.
Les 5: Networking
- Circuit vs Packing-switching
- Protocol layering
- OSI model: ik ga je niet vragen om de volledige OSI stack te reconstrueren. Je moet wel het nut/de functie van elke laag begrijpen en voor de gekende protocols weten op welke laag ze zich situeren.
- OSI versus TCP/IP
- IP adres versus MAC adres
- Connection-oriented vs connectionless protocols, virtual circuit service versus datagram service
- Ik vraag geen details omtrent de layout van Ethernet, TCP of UDP pakketten. Onthoud wel welk soort adressen elk protocol gebruikt en waarom UDP pakketten een veel kleinere header hebben dan TCP pakketten.
- Cyclic redundancy checks: het principe
- IP: doel van dit protocol
- IP adressen: network en host numbers, idee van IP klassen en IP subnets, gebruik van NAT en IPv6 om gebrek aan voldoende IP adressen op te lossen
- TCP en UDP: basisprincipes
- Principe van Protocol encapsulatie
- Begrijp het verschil tussen bandwidth en latency en het relatieve belang van latency
Les 6: RPC
- Delivery guarantees: verschillen en implicaties, idempotente operaties
- RPC: basisidee, rol van “stub” functies, hoe wordt een RPC call afgehandeld
- Weten wat er bedoeld wordt met RPC als “middleware”
- RPC: problemen met parameter-passing, verschillen met een lokale method call
- Big-endian versus little-endian data representatie
- Impliciete versus expliciete typering
- Principe van “Binding” in RPC
- RPCs en delivery guarantees
- Rol van de pre-compiler en een Interface Definition Language (IDL)
- Java RMI: begrijp hoe men een remote object kan aanmaken, publiceren en vinden. Begrijp de semantiek van een Remote Method Invocation en begrijp de regels gebonden aan de java.rmi.Remote interface. Begrijp de implicaties rond concurrency. Weet wat distributed garbage collection is en in grote lijnen hoe Java RMI dit implementeert.
Les 7: Indirecte Communicatie
- Weet wat ontkoppeling in tijd, ruimte en synchronisatie betekent
- Notifications, Tuple Spaces, Publish/Subscribe, Message Queueing: voor elke aanpak kunnen uitleggen hoe processen met mekaar via deze techniek kunnen communiceren, een diagram kunnen tekenen en kunnen uitleggen waarom ze processen ontkoppelen in tijd, ruimte en/of synchronisatie.
- Message Queuing en Tuple Spaces: begrijp goed de verschillen en gelijkenissen
- JMS: geen details kennen, alleen weten dat het message queueing en publish/subscribe toelaat
Les 8: Naming and Binding
- Begrijp het verschil tussen een name service en een directory service.
- Name resolution: het principe, verschil tussen static, early en late binding.
- DNS: doel, hierarchische architectuur (niet de details van DNS records)
- Hoe DNS omgaat met (in)consistentie. De rol van caching in DNS.
- DNS queries: iteratieve versus recursieve resolutie
- LDAP: doel en mogelijkheden van dit protocol. Gedecentraliseerde architectuur. Geen details wat betreft de syntax van queries en records.
- Weten wat een content delivery network is en wat de relatie met DNS is.
Les 9: Peer-to-peer systemen
- Kenmerken van een P2P systeem
- Waarom P2P systemen vooral werken voor immutable data
- Aanpakken: centrale coordinator, flooding, distributed hash tables: elke aanpak kunnen beschrijven via een diagram
- Principe van een Overlay netwerk
- Time-to-live en back-propagation
- Distributed hash tables: verschil met flooding, consistent hashing
- Chord: begrijp hoe keys toegekend worden aan nodes, begrijp hoe keys opgezocht worden, finger tables
Les 10: Logische klokken
- Begrijp waarom men niet kan vertrouwen op een gedeelde fysieke klok voor het coordineren van events
- Lamport’s “happened-before” relatie, Lamport timestamps en concurrente events
- Op een gegeven proces-diagram events kunnen labelen met hun Lamport timestamps
- Begrijpen welke conditie Lamport klokken wel en niet garanderen
- Verschil tussen partiƫle volgorde en totale volgorde
- Het probleem van “Distributed Mutual Exclusion”
- Lamport’s mutual exclusion algoritme
- Vector klokken: verschil met Lamport klokken, update regels, weten hoe je Vector timestamps vergelijkt
Les 11: Consensus
- Wat is het probleem van consensus?
- Two Generals’ Problem
- Gedisribueerde transacties: ACID eigenschappen, begrijp de noodzaak aan een atomic commit protocol
- Two-phase commit: begrijp het doel, de rollen, het nut van de twee fasen. Begrijp de zwakke punten van het protocol.
- Paxos: begrijp het doel, de rollen, het nut van de drie fasen. Begrijp de verschillen met Two-phase commit. Begrijp waarom het algoritme soms niet tot een consensus kan komen.
- CAP Stelling: begrijp consistency, availability, partition-tolerance en hun trade-offs.
- Begrijp waarom de CAP-stelling intuitief geldt. Begrijp wat het betekent om C, A of P op te geven.
- Weet wat de begrippen "safety" en "liveness" betekenen.
Les 12: WWW
- Client-server architectuur
- HTTP: weet wat voor protocol dit is, begrijp het verschil tussen GET en POST requests. Het is niet de bedoeling om status codes etc. te gaan van buiten leren.
- Begrijp waarvoor headers kunnen dienen, waarvoor MIME dient.
- Begrijp waarom men HTTP een stateless protocol noemt en wat de voor- en nadelen hiervan zijn.
- Begrijp wat een HTTP 1.1 persistent connection is.
- Java Servlets: alleen weten waarvoor ze dienen, en begrijpen waarom men best geen string-append gebruikt voor het genereren van HTML.
- Web services, SOAP, WSDL: geen details kennen. Begrijpen waarvoor deze technologieƫn dienen.
- REST: begrijp wat het grote verschil is met Web services en hoe men met een RESTful API interageert.
- AJAX: begrijp het idee dat scripts asynchroon met hun server kunnen communiceren. Begrijp waarom deze interactie asynchroon verloopt.
Les 13: Security
- Weet wat de termen confidentiality, authentication, integrity, nonrepudiation betekenen
- Soorten ciphers
- One-way functies en hoe ze gebruikt kunnen worden voor authenticatie
- Nut van cryptografische hash-functies, message authentication codes
- Stream vs block ciphers
- Begrijpen waarom DES niet voldoende veilig is en waarom men is overgeschakeld op triple-DES
- Begrijpen wat het verband is tussen de lengte van de key en de moeilijkheid om deze te kraken
- Begrijpen hoe men versleuteld kan communiceren via symmetrische en asymmetrische cryptografie
- Begrijp de relatieve voor- en nadelen van symmetrische en asymmetrische cryptosystemen, weet wat een hybride cryptosysteem is
- Diffie-Hellman: begrijp waar dit algoritme voor dient
- Digitale handtekeningen adhv public-key cryptografie
- Voorbeelden van cryptografische hash-functies, symmetrische en asymmetrische encryptie-algoritmen kunnen geven