Grundlagen und Architektur verteilter Systeme
- Verteiltes System
- Das Reaktive Manifest
- Distributed Computing, Concurrent Computing, Parallel Computing
- Merkmale verteilter Systeme
- Middleware-Dienste todo
Multi-Threading
- Programm, Prozess, Thread
- Threads und UML todo
- Scheduling, Context Switch
- Process Control Block, Thread Control Block
- Lost Update
Thread und Prozess
- Aus Effizienzgründen sind Threads Prozessen vorzuziehen
- Beim Kontextwechsel muss sonst der ganze PCB statt nur dem TCB zwischengespeichert werden
Namenskonvention für VS
- Aktive Klassen haben immer was mit Threads zu tun -> UML Strich am rand
- Passive Klassen sind die die von Threads genutzt werden
Synchronisation
- Java Thread
- Thread Safety, Liveness
- Kritische Sektion
- Synchronisierung
- Monitor
- Java Monitoring mit synchronized
Erzeuger-Verbraucher-Problem
- Erzeuger-Verbraucher-Problem
- Java Erzeuger-Verbraucher-Problem mit wait und notify
- Java Erzeuger-Verbraucher-Problem mit Concurrency-Framework
Thread-Pools
Zeitliche Synchronisation
Was ist der gemeinsame Anwendungszweck von CyclicBarrier und CountDownLatch und geben sie eine Eigenschaft an bei der sie sich unterscheiden.
Der gemeinsame Zweck ist die zeitliche Synchronisation mehrerer laufender Threads.
Eigenschaften wo sie sich unterscheidern:
- Wiederverwendbarkeit / Zurücksetzbarkeit (CyclicBarrier kann zurückgesetzt werden, CountDownLatch nicht)
- Art und Weise wie zurück gezählt wird (CountDown latch hat dedizierte Methode countDown, CyclicBarrier durch await)
Weitere Synchronisierungsmechanismen
ToDo
- Synchronized Collections
- Concurrent Collections
- Exchanger
- Semaphor
Übungsbeispiel
- Aktive Klasse XY die kontinuierlich Druckaufträge aufgibt
- 4 Drucker (repräsentiert durch aktive Klasse), solanger der an nem Auftrag druckt ist er nicht verfügbar
- Aktive Klassen stellen Aufträge ein, Drucker nehmen sie raus
- Auftragscenter als Queue
Sockets
Wiederholung
Sockets in Java
Möglichkeiten der Server-Implementierungen
- Thread Pool: bei schnellen ressourcenabfragen, datenbank insert o.ä.
- Eigener Thread: bei z.b. nem chat
RPC und gRPC
RPC
Todo
Was ist ein stub
gRPC
Webservices
Implementierung
Microservices
- Monolith todo
- Wiederholung: Das Reaktive Manifest
- Microservices
- Docker
- Dockerfile
- docker build
- docker run
- docker push
Todo
Video im ELO anschauen:
- Wie baut man ein Image
- Wie startet man einen Container
- Wie sieht ein Dockerfile aus