Event driven Middleware
Data Distribution Service der OMG
- Datenobjekte werden repliziert
- publish/subscribe Architektur
- Die Verteilung kann mit diversen Quality of Services erfolgen
- kein zentraler Dienst erforderlich, der ausfallen kann (Broker free)
Standard
DDS Standard
weitere Literatur
- OMG Wiki zu DDS
-
- RTC-Magazin: OMG Data Distribution Service: Real-Time Publish/Subscribe Becomes a Standard
Implementierungen
- OpenDDS
-
- Open source
- verwendet ACE/TAO, daher gute IDL und C++-Mapping unterstützung
- Verwendet ein zentrales Repository - d.h. nicht brokerfree
OppenDDS auf github
- Open Splice nun Prismtech-Vortex
- Nachfolger von Sigma SPLICE / THALES, Erfinder von DDS,
SPLICE - Subscription Paradigm for the Logical Interconnection of Concurrent Engines
ist seit neuestem auch OpenSource
github
Hier gibt es Werbematerial, das aber auch gut allgemeine Konzepte erläutert.
- RTI
- hat NDDS, von US Navy eingesetzt
- brokerfree
- Unterstützung von dynamischen Typen (Typ wird zur Laufzeit definiert, Sample kann dynamisch gefüllt werden)
Evaluation
- DDS-Touchstone
-
- DDS Benchmark Vanderbild-Uni
Details
Valuetypes
Bei CORBA gibt es neben struct die valuetypes, die dann auch Programmiersprachenobjekte mit z.B. gettern und settern sind.
Daher wäre naheliegend, dass die Datenobjekte valuetypes sind.
Das Open-Splice-Tutorial verweist aber auf DLRL für diesen Zweck.
DLRL
Es gibt einen Object-Listener, der auf Änderungen reagiert
Witz von Wait-Sets und Listeners
- Listeners werden vom Middelwarethread aufgrufen
→ Applikation muß Multithreaded sein
→ Applikation kann Middleware (im Prozess) blockieren
- Waitset: Applikationsthread wartet blockierend darauf und kann nicht die Middleware blockieren
"instance" und "sample"
{read,take}_by_sample {read,take}_by_instance
- instance
- ist ein Datenobjekt (key,value)
- sample
- Dies ist eine "Abtastung" zu einer Zeit.
Je nachdem der History -Qos-Paremeter eingestellt ist, kann der Subscriber mehrere Samples lesen.
Meist ist der History-parameter auf 1, d.h. der Subscriber liest nur den aktuellen wert.
Dies hat den Vorteil, das die Berechnung in ihrer Dynamik vomLastverhalten entkoppelt ist.
allerdings gehen eventuell samples verloren - sonst kann ggf. die Verarbeitung nicht nachkommen.
Informatik- und Netzwerkverein Ravensburg e.V
Rudolf Weber