Usługa dystrybucji danych — Data Distribution Service

Usługa dystrybucji danych ( DDS ) dla systemów czasu rzeczywistego to standard typu machine-to-machine (ang. Object Management Group) (OMG) (czasami nazywany frameworkiem oprogramowania pośredniczącego lub łączności), który ma na celu umożliwienie niezawodnego , wydajnego , interoperacyjnego działania w czasie rzeczywistym , skalowalna wymiana danych przy użyciu wzorca publikowanie-subskrypcja .

DDS odpowiada na potrzeby aplikacji takich jak lotnictwo i obrona, kontrola ruchu lotniczego , pojazdy autonomiczne , urządzenia medyczne, robotyka, wytwarzanie energii, symulacja i testowanie, zarządzanie inteligentnymi sieciami , systemy transportowe i inne aplikacje, które wymagają wymiany danych w czasie rzeczywistym.

Architektura

Model

DDS to sieciowe oprogramowanie pośredniczące, które upraszcza złożone programowanie sieciowe . Implementuje wzorzec publikowania-subskrypcji do wysyłania i odbierania danych, zdarzeń i poleceń między węzłami . Węzły, które produkują informacje (wydawcy) tworzą „tematy” (np. temperatura, lokalizacja, ciśnienie) i publikują „próbki”. DDS dostarcza próbki subskrybentom, którzy deklarują zainteresowanie danym tematem.

DDS obsługuje zadania związane z transferem: adresowanie wiadomości, marshalling i demarshalling danych (aby subskrybenci mogą znajdować się na różnych platformach niż wydawca), dostarczanie, kontrola przepływu, ponawianie prób itp. Każdy węzeł może być wydawcą, subskrybentem lub obydwoma jednocześnie.

Model publikowania-subskrypcji DDS praktycznie eliminuje złożone programowanie sieciowe dla aplikacji rozproszonych.

DDS obsługuje mechanizmy wykraczające poza podstawowy model publikuj-subskrybuj. Najważniejszą korzyścią jest to, że aplikacje korzystające z 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 wymagają informacji o innych uczestniczących aplikacjach, w tym o ich istnieniu lub lokalizacji. DDS w przejrzysty sposób obsługuje dostarczanie wiadomości bez konieczności interwencji aplikacji użytkownika, w tym:

  • ustalenie, kto powinien otrzymywać wiadomości
  • gdzie znajdują się odbiorcy
  • co się stanie, jeśli wiadomości nie zostaną dostarczone?

DDS umożliwia użytkownikowi określenie parametrów jakości usługi (QoS) w celu skonfigurowania z góry mechanizmów wykrywania i zachowania. Poprzez anonimową wymianę wiadomości, DDS upraszcza rozproszone aplikacje i zachęca do tworzenia modularnych, dobrze ustrukturyzowanych programów. DDS automatycznie obsługuje również nadmiarowych wydawców z funkcją hot-swap w przypadku awarii podstawowego. Subskrybenci zawsze otrzymują próbkę o najwyższym priorytecie, której dane są nadal prawidłowe (czyli których okres ważności określony przez wydawcę nie wygasł). Automatycznie przełącza się z powrotem na podstawowy, gdy się odzyskuje.

Interoperacyjność

Dostępne są zarówno autorskie, jak i otwarte implementacje oprogramowania DDS. Należą do nich interfejsy programowania aplikacji (API) oraz biblioteki implementacji w Ada , C , C++ , C# , Java , Python , Scala , Lua , Pharo i Ruby .

Dostawcy DDS uczestniczyli w demonstracjach interoperacyjności na spotkaniach technicznych OMG Spring w latach 2009–2013.

Podczas demonstracji każdy dostawca publikował i subskrybował swoje tematy, korzystając z zestawu testowego o nazwie demo kształtów. Na przykład jeden dostawca publikuje informacje o kształcie, a inni dostawcy mogą subskrybować temat i wyświetlać wyniki na swoich własnych kształtach. Każdy sprzedawca na zmianę publikuje informacje, a drugi subskrybuje. Dwie rzeczy umożliwiły wykonanie wersji demonstracyjnych: protokół DDS-I lub Real-Time Publish-Subscribe (RTPS) oraz zgoda na używanie wspólnego modelu.

Interoperacyjność usługi dystrybucji danych OMG

W marcu 2009 roku, trzy sprzedawców wykazała interoperacyjność pomiędzy poszczególnymi niezależnych produktów, które wdrożyły OMG czasie rzeczywistym Publish-Subskrybuj wersję protokołu 2.1 od stycznia 2009. Demonstracja dołączonego odkrycie wzajemnych wydawców i abonentów na różnych platformach OS ( Microsoft Windows i Linux ) oraz obsługiwana komunikacja sieciowa multicast i unicast .

W demonstracji interoperacyjności DDS wykorzystano takie scenariusze, jak:

  • Podstawowa łączność z siecią za pomocą protokołu internetowego (IP)
  • Odkrycie wydawców i subskrybentów
  • Jakość usług (QoS) Zgodność między zleceniodawcą a oferentem
  • Sieć odporna na opóźnienia
  • Wiele tematów i wystąpień tematów
  • Wyłączne prawa własności tematów
  • Filtrowanie treści danych tematycznych, w tym czasowych i geograficznych

Historia

Opracowanie specyfikacji DDS rozpoczęło się w 2001 roku. Została ona opracowana przez Real-Time Innovations (RTI), firmę zajmującą się tworzeniem oprogramowania, oraz Thales Group , francuską firmę zbrojeniową. W 2004 roku Object Management Group (OMG) opublikowała DDS w wersji 1.0. Wersja 1.1 została opublikowana w grudniu 2005, 1.2 w styczniu 2007, a 1.4 w kwietniu 2015. DDS jest objęty m.in. kilkoma patentami amerykańskimi.

Specyfikacja DDS opisuje dwa poziomy interfejsów:

  • Niższy poziom publikowania-subskrybowania danych zorientowanych na dane (DCPS), który jest ukierunkowany na skuteczne dostarczanie właściwych informacji właściwym odbiorcom.
  • Opcjonalna warstwa lokalnej rekonstrukcji wyższych danych (DLRL), która umożliwia prostą integrację DDS z warstwą aplikacji .

Inne powiązane normy były zgodne z początkowym dokumentem podstawowym. Specyfikacja Real-time Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol zapewnia, że ​​informacje publikowane na dany temat przy użyciu implementacji DDS jednego dostawcy są dostępne dla jednego lub większej liczby subskrybentów korzystających z implementacji DDS tego samego lub innego dostawcy. Chociaż specyfikacja jest skierowana do społeczności DDS, jej zastosowanie 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 2012 dodało obsługę strumieni. PSM języka Java 5 dla DDS definiuje powiązanie języka Java 5, określane jako model specyficzny dla platformy (PSM) dla DDS. Określono tylko część Data-Centric Publish-Subscribe (DCPS) specyfikacji DDS; Dodatkowo obejmuje DDS APIs 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 nowe API C++ do programowania DDS, które jest bardziej naturalne dla programistów C++. Specyfikacja zapewnia odwzorowania dla 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) zapewniają obsługę komunikacji publikowania-subskrypcji zorientowanej na dane, w której tematy są definiowane za pomocą określonych struktur danych. Aby być rozszerzalnym , tematy DDS używają typów danych zdefiniowanych przed czasem kompilacji i używanych w globalnej przestrzeni danych DDS. Ten model jest pożądany, gdy przydatne jest statyczne sprawdzanie typu. Profil Unified Modeling Language (UML) określił domeny i tematy DDS jako część analizy i modelowania projektowego. Ta specyfikacja definiuje również sposób publikowania i subskrybowania obiektów bez wcześniejszego opisywania typów w innym języku, takim jak XML lub OMG IDL. Język definicji interfejsu (IDL) została określona w 2014 roku niezależnie od Common Object Request Broker Architecture (CORBA) specyfikacja rozdział 3. IDL 3.5 był zgodny ze specyfikacją CORBA 3, ale ekstrakcji jako własnej specyfikacji pozwala mu się rozwijać 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, jak na przykład mikrokontroler i sieć DDS. Umożliwia publikowanie i subskrybowanie tematów za pośrednictwem usługi pośredniej w domenie DDS oraz DDS-RPC (RPC Over DDS), która definiuje zdalne wywołania procedur. Zapewniają one dwukierunkową komunikację żądanie/odpowiedź i określają usługi rozproszone, a także 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ż

Bibliografia