Usługa dystrybucji danych
Usługa dystrybucji danych ( DDS ) dla systemów czasu rzeczywistego to standard typu machine-to-machine (czasami nazywany oprogramowaniem pośredniczącym lub strukturą łączności) należący do grupy Object Management Group (OMG) , którego celem jest zapewnienie niezawodnej , wydajnej , interoperacyjnej , działającej w czasie rzeczywistym , skalowalne wymiany danych przy użyciu wzorca publikowania-subskrybowania .
DDS zaspokaja potrzeby aplikacji takich jak przemysł lotniczy i obronny, kontrola ruchu lotniczego , pojazdy autonomiczne , urządzenia medyczne, robotyka, wytwarzanie energii, symulacje i testy, inteligentne zarządzanie siecią, systemy transportowe i inne aplikacje wymagające wymiany danych w czasie rzeczywistym.
Architektura
Model
DDS to sieciowe oprogramowanie pośrednie , które upraszcza złożone programowanie sieciowe . Implementuje wzorzec publikowania-subskrybowania do wysyłania i odbierania danych, zdarzeń i poleceń między węzłami . Węzły produkujące informacje (wydawcy) tworzą „tematy” (np. temperaturę, lokalizację, ciśnienie) i publikują „próbki”. DDS dostarcza próbki subskrybentom, którzy zadeklarowali zainteresowanie tą tematyką.
DDS obsługuje zadania związane z przesyłaniem: adresowanie wiadomości, organizowanie i usuwanie danych (dzięki czemu abonenci mogą znajdować się na różnych platformach niż wydawca), dostarczanie, kontrola przepływu, ponowne próby itp. Dowolny węzeł może być wydawcą, subskrybentem lub jednym i drugim jednocześnie.
Model publikowania-subskrybowania DDS praktycznie eliminuje złożone programowanie sieciowe dla aplikacji rozproszonych. [ potrzebne źródło ]
DDS obsługuje mechanizmy wykraczające poza podstawowy model publikowania-subskrybowania. [ potrzebne źródło ] Główną korzyścią jest to, że aplikacje używające DDS do komunikacji są oddzielone. Niewiele czasu na projektowanie trzeba poświęcić na obsługę ich wzajemnych interakcji. W szczególności aplikacje nigdy nie potrzebują informacji o innych aplikacjach uczestniczących, w tym o ich istnieniu lub lokalizacji. DDS w przejrzysty sposób obsługuje dostarczanie wiadomości bez konieczności interwencji ze strony aplikacji użytkownika, w tym:
- określanie, kto powinien otrzymywać wiadomości
- gdzie znajdują się odbiorcy
- co się stanie, jeśli nie można dostarczyć wiadomości
DDS umożliwia użytkownikowi określenie parametrów jakości usług (QoS) w celu skonfigurowania mechanizmów wykrywania i zachowania z góry. Dzięki anonimowej wymianie wiadomości DDS upraszcza rozproszone aplikacje i zachęca do tworzenia modułowych, dobrze zorganizowanych programów. [ potrzebne źródło ] DDS automatycznie obsługuje także wymienianie redundantnych wydawców podczas pracy w przypadku awarii podstawowego. [ potrzebne źródło ] Subskrybenci zawsze otrzymują próbkę o najwyższym priorytecie, której dane są nadal aktualne (tj. których okres ważności określony przez wydawcę nie wygasł). Po przywróceniu automatycznie przełącza się z powrotem na podstawowy.
Interoperacyjność
zarówno autorskie, jak i otwarte implementacje oprogramowania DDS. Należą do nich interfejsy programowania aplikacji (API) oraz biblioteki implementacji w językach Ada , C , C++ , C# , Java , Python , Scala , Lua , Pharo i Ruby .
Dostawcy DDS brali udział w demonstracjach interoperacyjności na wiosennych spotkaniach technicznych OMG w latach 2009-2013.
Podczas demonstracji każdy dostawca publikował i subskrybował swoje tematy za pomocą zestawu testów zwanego demonstracją kształtów. Na przykład jeden dostawca publikuje informacje o kształcie, a inni dostawcy mogą subskrybować temat i wyświetlać wyniki na własnych wyświetlaczach kształtów. Każdy sprzedawca na zmianę publikuje informacje, a drugi subskrybuje. Dwie rzeczy umożliwiły stworzenie wersji demonstracyjnych: protokół DDS-I lub Real-Time Publish-Subscribe (RTPS) oraz zgoda na użycie wspólnego modelu.
W marcu 2009 r. trzech dostawców zademonstrowało interoperacyjność między poszczególnymi, niezależnymi produktami, które zaimplementowały protokół publikowania-subskrybowania w czasie rzeczywistym firmy OMG w wersji 2.1 ze stycznia 2009 r. Demonstracja obejmowała wzajemne wykrywanie wydawców i subskrybentów na różnych platformach operacyjnych ( Microsoft Windows i Linux ) i obsługiwanej komunikacji sieciowej multiemisji i emisji pojedynczej .
Demonstracja interoperacyjności DDS wykorzystała takie scenariusze jak:
- Podstawowa łączność z siecią za pomocą protokołu internetowego (IP)
- Odkrywanie wydawców i subskrybentów
- Jakość usług (QoS) Kompatybilność między zleceniodawcą a oferentem
- Sieć odporna na opóźnienia
- Wiele tematów i wystąpień tematów
- Wyłączna własność tematów
- Filtrowanie treści danych tematycznych, w tym czasowych i geograficznych
Historia
Rozwój specyfikacji DDS rozpoczął się w 2001 roku. Został on opracowany przez Real-Time Innovations (RTI), firmę zajmującą się ramami programistycznymi, oraz Thales Group , francuską firmę obronną. W 2004 roku Grupa Zarządzania Obiektami (OMG) opublikowała DDS w wersji 1.0. Wersja 1.1 została opublikowana w grudniu 2005 r., 1.2 w styczniu 2007 r., a 1.4 w kwietniu 2015 r. DDS jest objęty m.in. kilkoma patentami amerykańskimi.
Specyfikacja DDS opisuje dwa poziomy interfejsów:
- Niższy, zorientowany na dane poziom publikowania-subskrybowania (DCPS), ukierunkowany na efektywne dostarczanie odpowiednich informacji do odpowiednich odbiorców.
- Opcjonalna warstwa lokalnej rekonstrukcji wyższych danych (DLRL), która umożliwia prostą integrację DDS z warstwą aplikacji .
Inne powiązane standardy były zgodne z pierwotnym dokumentem podstawowym. Specyfikacja protokołu przewodowego publikowania-subskrybowania w czasie rzeczywistym DDS Interoperability Wire Protocol zapewniała, że informacje publikowane na dany temat przy użyciu implementacji DDS jednego dostawcy są możliwe do wykorzystania przez jednego lub więcej subskrybentów korzystających z implementacji DDS tego samego lub różnych dostawców. Chociaż specyfikacja jest skierowana do społeczności DDS, jej użycie nie jest ograniczone. Wersje 2.0 zostały opublikowane w kwietniu 2008 r., wersja 2.1 w listopadzie 2010 r., 2.2 we wrześniu 2014 r., a 2.3 w maju 2019 r.
DDS for Lightweight CCM (dds4ccm) oferuje wzorzec architektoniczny, który oddziela logikę biznesową od właściwości niefunkcjonalnych. Rozszerzenie z 2012 roku dodało obsługę strumieni. PSM języka Java 5 dla DDS zdefiniował powiązanie języka Java 5, określane jako model specyficzny dla platformy (PSM) dla DDS. Określał tylko część specyfikacji DDS dotyczącą publikowania i subskrybowania danych (DCPS); Dodatkowo obejmuje DDS API wprowadzone przez DDS-XTypes i DDS-CCM. DDS-PSM-Cxx definiuje powiązanie języka ISO/IEC C++ PSM, określane jako model specyficzny dla platformy (PSM) dla DDS. Zapewnia nowy interfejs API C++ do programowania DDS, który jest bardziej naturalny dla programisty C++. Specyfikacja zapewnia odwzorowania interfejsu programowania aplikacji (API) określonego w DDS-XTypes oraz dostęp do profili jakości usług (QoS) określonych w DDS-CCM.
Rozszerzalne i dynamiczne typy tematów dla DDS (DDS-XTypes) zapewniły obsługę zorientowanej na dane komunikacji publikowania i subskrybowania, w której tematy są definiowane za pomocą określonych struktur danych. Aby być rozszerzalnym , tematy DDS używają typów danych zdefiniowanych przed kompilacją i używanych w globalnej przestrzeni danych DDS. Ten model jest pożądany, gdy przydatne jest statyczne sprawdzanie typów. Profil Unified Modeling Language (UML) określa domeny i tematy DDS, które mają być częścią analizy i modelowania projektowego. Ta specyfikacja definiowała również sposób publikowania i subskrybowania obiektów bez uprzedniego opisywania typów w innym języku, takim jak XML lub OMG IDL. Język definicji interfejsu (IDL) został określony w 2014 roku niezależnie od rozdziału 3 specyfikacji Common Object Request Broker Architecture (CORBA). Ten IDL 3.5 był zgodny ze specyfikacją CORBA 3, ale został wyodrębniony jako własna specyfikacja, umożliwiając mu ewolucję niezależnie od CORBA .
Inne protokoły, o których należy wspomnieć, to: DDS-XRCE (DDS for eXtremely Resource Constrained Environments), ten protokół specyfikacji umożliwia komunikację między urządzeniami o ograniczonych zasobach, takimi jak na przykład mikrokontroler i sieć DDS. Umożliwia publikowanie i subskrybowanie tematów za pośrednictwem usługi pośredniczącej w domenie DDS oraz DDS-RPC (RPC Over DDS), która definiuje zdalne wywołania procedur. Zapewniają one dwukierunkową komunikację typu żądanie/odpowiedź oraz określają usługi rozproszone i są szczegółowo opisane przy użyciu interfejsu usługi. Obsługuje również wywoływanie metod synchronicznych i asynchronicznych.
Począwszy od wersji DDS 1.4 w 2015 roku opcjonalna warstwa DLRL została przeniesiona do osobnej specyfikacji.
Zobacz też
- Oprogramowanie pośrednie
- Środowisko obliczeniowe o otwartej architekturze
- Object Management Group (OMG), organizacja normalizacyjna, która opracowała specyfikację