Служба распространения данных

Стандарт группы управления объектами

Служба распределения данных ( DDS ) для систем реального времени — это стандарт межмашинного взаимодействия Object Management Group (OMG) (иногда называемый промежуточным программным обеспечением или инфраструктурой подключения), целью которого является обеспечение надежного , высокопроизводительного , совместимого , масштабируемого обмена данными в реальном времени с использованием шаблона «публикация-подписка» .

DDS удовлетворяет потребности в обмене данными в режиме реального времени для приложений в аэрокосмической отрасли, обороне, управлении воздушным движением , автономных транспортных средствах , медицинских устройствах, робототехнике, производстве электроэнергии, моделировании и тестировании, управлении интеллектуальными сетями , транспортных системах и других приложениях.

Архитектура

Модель

DDS — это сетевое промежуточное программное обеспечение , которое упрощает сложное сетевое программирование . Оно реализует шаблон публикации-подписки для отправки и получения данных, событий и команд между узлами . Узлы, которые производят информацию (издатели), создают «темы» (например, температура, местоположение, давление) и публикуют «образцы». DDS доставляет образцы подписчикам, которые заявляют о своей заинтересованности в этой теме.

DDS выполняет задачи по передаче: адресацию сообщений, упорядочивание и деупорядочивание данных (чтобы подписчики могли находиться на разных платформах с издателем), доставку, управление потоком, повторные попытки и т. д. Любой узел может быть издателем, подписчиком или обоими одновременно.

Модель публикации-подписки DDS фактически исключает сложное сетевое программирование для распределенных приложений. [ необходима цитата ]

DDS поддерживает механизмы, выходящие за рамки базовой модели публикации-подписки. [ требуется ссылка ] Ключевое преимущество заключается в том, что приложения, использующие DDS для своих коммуникаций, разъединены. На обработку их взаимных взаимодействий требуется мало времени проектирования. В частности, приложениям никогда не нужна информация о других участвующих приложениях, включая их существование или местоположение. DDS прозрачно обрабатывает доставку сообщений, не требуя вмешательства со стороны пользовательских приложений, включая:

  • определение того, кто должен получать сообщения
  • где находятся получатели
  • что произойдет, если сообщения не могут быть доставлены

DDS позволяет пользователю указывать параметры качества обслуживания (QoS) для предварительной настройки механизмов обнаружения и поведения. Обмениваясь сообщениями анонимно, DDS упрощает распределенные приложения и поощряет модульные, хорошо структурированные программы. [ требуется цитата ] DDS также автоматически обрабатывает горячую замену избыточных издателей в случае отказа основного. [ требуется цитата ] Подписчики всегда получают образец с наивысшим приоритетом, данные которого все еще действительны (то есть срок действия указанного издателем издателя не истек) [ требуется цитата ] . Он также автоматически переключается обратно на основной, когда тот восстанавливается [ требуется цитата ] .

Взаимодействие

Доступны как проприетарные, так и открытые программные реализации DDS. Они включают интерфейсы прикладного программирования (API) и библиотеки реализаций на Ada , C , C++ , C# , Java , Python , Scala , Lua , Pharo , Ruby и Rust .

Поставщики DDS принимали участие в демонстрациях взаимодействия на технических встречах OMG Spring с 2009 по 2013 год. [1] [2] [3] [4] [5] [6]

Во время демонстраций каждый поставщик публиковал и подписывался на темы друг друга, используя набор тестов, называемый демонстрацией фигур. Например, один поставщик публикует информацию о фигуре, а другие поставщики могут подписываться на тему и отображать результаты на своих дисплеях фигур. Каждый поставщик по очереди публикует информацию, а другой подписывается. Две вещи сделали демонстрации возможными: протокол DDS-I или Real-Time Publish-Subscribe (RTPS) [7] и соглашение об использовании общей модели.

Совместимость службы распределения данных OMG

В марте 2009 года три поставщика продемонстрировали совместимость между отдельными независимыми продуктами, которые реализовали протокол публикации-подписки OMG в реальном времени версии 2.1 с января 2009 года. Демонстрация включала обнаружение издателей и подписчиков друг друга на разных платформах ОС ( Microsoft Windows и Linux ) и поддерживала многоадресную и одноадресную сетевую связь. [1]

Демонстрация взаимодействия DDS использовала такие сценарии, как:

  • Базовое подключение к сети с использованием интернет-протокола (IP)
  • Обнаружение издателей и подписчиков
  • Совместимость качества обслуживания (QoS) между запрашивающей и предлагающей стороной
  • Сеть, устойчивая к задержкам
  • Несколько тем и экземпляров тем
  • Эксклюзивные права собственности на темы
  • Фильтрация контента тематических данных, включая время и географию

История

Разработка спецификации DDS началась в 2001 году. В 2004 году Object Management Group (OMG) опубликовала версию DDS 1.0. [8] Версия 1.1 была опубликована в декабре 2005 года, [9] 1.2 — в январе 2007 года, [10] и 1.4 — в апреле 2015 года. [11] DDS защищена несколькими патентами США, [12] [13] [14] [15] и другими.

Спецификация DDS описывает два уровня интерфейсов:

  • Более низкий уровень публикации-подписки, ориентированный на данные (DCPS), нацеленный на эффективную доставку нужной информации нужным получателям.
  • Дополнительный более высокий уровень локальной реконструкции данных (DLRL), который обеспечивает простую интеграцию DDS в прикладной уровень .

Другие связанные стандарты следовали за первоначальным основным документом. Спецификация протокола DDS Interoperability Wire Protocol для протокола Real-time Publish-Subscribe Wire Protocol гарантировала, что информация, опубликованная по теме с использованием реализации DDS одного поставщика, может быть использована одним или несколькими подписчиками, использующими реализации DDS того же или другого поставщика. Хотя спецификация ориентирована на сообщество DDS, ее использование не ограничено. Версии 2.0 были опубликованы в апреле 2008 года, версия 2.1 — в ноябре 2010 года, 2.2 — в сентябре 2014 года и 2.3 — в мае 2019 года. [7]

DDS для Lightweight CCM (dds4ccm) предлагает архитектурный шаблон, который отделяет бизнес-логику от нефункциональных свойств. Расширение 2012 года добавило поддержку потоков. [16] Java 5 Language PSM для DDS определила привязку языка Java 5, называемую Platform Specific Model (PSM) для DDS. Она указала только часть Data-Centric Publish-Subscribe (DCPS) спецификации DDS; Кроме того, она охватывает API DDS, представленные DDS-XTypes и DDS-CCM. DDS-PSM-Cxx определяет привязку языка PSM ISO/IEC C++ [17] , называемую Platform Specific Model (PSM) для DDS. Она предоставляет новый API C++ для программирования DDS, который более естественен для программиста C++. [18] Спецификация предоставляет сопоставления для интерфейса прикладного программирования (API), указанного в DDS-XTypes, и профилей доступа к качеству обслуживания (QoS), указанных в DDS-CCM.

Расширяемые и динамические типы тем для DDS (DDS-XTypes) обеспечили поддержку для ориентированной на данные коммуникации публикации-подписки, где темы определяются с помощью определенных структур данных. Чтобы быть расширяемыми , темы DDS используют типы данных, определенные до времени компиляции и используемые во всем глобальном пространстве данных DDS. Эта модель желательна, когда полезна статическая проверка типов. [19] Профиль унифицированного языка моделирования (UML) указал домены и темы DDS, которые должны быть частью моделирования анализа и проектирования. [20] Эта спецификация также определила, как публиковать и подписываться на объекты без предварительного описания типов на другом языке, таком как XML или OMG IDL. [21] Язык определения интерфейса (IDL) был указан в 2014 году независимо от спецификации Common Object Request Broker Architecture (CORBA), глава 3. Этот IDL 3.5 был совместим со спецификацией CORBA 3, но был извлечен как собственная спецификация, что позволило ему развиваться независимо от CORBA. [22]

Другие протоколы, которые следует упомянуть: DDS-XRCE (DDS для сред с ограниченными ресурсами), этот протокол спецификации позволяет осуществлять связь между устройствами с ограниченными ресурсами, например, микроконтроллерами и сетью DDS. Он делает возможными публикацию и подписку на темы через промежуточную службу в домене DDS [23] и DDS-RPC (RPC через DDS), который определяет удаленные вызовы процедур. Они обеспечивают двунаправленную связь запрос/ответ и определяют распределенные службы, а также детализируются с использованием интерфейса службы. Он также поддерживает как синхронный, так и асинхронный вызов методов. [24]

Начиная с версии DDS 1.4 в 2015 году, дополнительный слой DLRL был перемещен в отдельную спецификацию. [25]

Смотрите также

Ссылки

  1. ^ ab Angelo Corsaro, Gerardo Pardo-Castellote и Clark Tucker (12 августа 2009 г.). "DDS Interoperability Demo" (PDF) . Object Management Group. Архивировано из оригинала (PDF) 15 сентября 2011 г. . Получено 9 ноября 2016 г. .
  2. ^ "DDS Interoperability Demo December 2010" (PDF) . Real-Time Innovations, Inc. 11 декабря 2010 г. . Получено 9 ноября 2016 г. .
  3. ^ 2011, март 2011, https://community.rti.com/content/presentation/omg-dds-interoperability-demo-2011
  4. ^ 2012, март 2012, https://community.rti.com/content/presentation/omg-dds-interoperability-demo-2012
  5. ^ 2013, март 2013, http://www.slideshare.net/GerardoPardo/dds-interoperability-demo-2013-washington-dc
  6. ^ "DDS Interoperability Demonstration". видео . Real-Time Innovations. 14 декабря 2010 г. Архивировано из оригинала 2014-01-07 . Получено 9 ноября 2016 г.
  7. ^ ab "Спецификация протокола взаимодействия проводов DDS с протоколом публикации-подписки в реальном времени (DDSI-RTPS)". Май 2019 г. Получено 28 октября 2019 г.
  8. ^ "Data Distribution Service (DDS), Version 1.0". Object Management Group. 2 декабря 2004 г. Получено 9 ноября 2016 г.
  9. ^ "Data Distribution Service (DDS), Version 1.1". 4 декабря 2005 г. Получено 9 ноября 2016 г.
  10. ^ "Data Distribution Service (DDS), Version 1.2". 1 января 2007 г. Получено 9 ноября 2016 г.
  11. ^ "Data Distribution Service (DDS), Version 1.4". 10 апреля 2015 г. Получено 9 ноября 2016 г.
  12. ^ Патент США US8874686
  13. ^ Патент США US8671135
  14. ^ Патент США US8150988
  15. ^ Патент США US9015672
  16. ^ DDS для облегченного CCM (dds4ccm), версия 1.1, formal/2012-02-01, февраль 2012 г., http://www.omg.org/spec/dds4ccm/1.1/PDF/
  17. ^ Языки программирования — C++, 15 октября 2003 г., ISO/IEC 14882, http://www.iso.org/iso/catalogue_detail.htm?csnumber=38110
  18. ^ DDS-PSM-Cxx: Язык ISO/IEC C++ 2003 DDS PSM, версия ptc/2011-01-02, январь 2011 г., http://www.omg.org/spec/DDS-PSM-Cxx/1.0/Beta1/PDF
  19. ^ Расширяемые и динамические типы тем для DDS (DDS-XTypes), 1.0, formal/2012-11-10, ноябрь 2012 г., http://www.omg.org/spec/DDS-XTypes/1.0/PDF
  20. ^ Профиль UML для распределения данных, версия: 1.0, http://www.omg.org/cgi-bin/doc?ptc/10-05-17.pdf
  21. ^ DDS-Java: PSM языка Java 5 для DDSVersion 1.0, ptc/2012-12-01, март 2013 г. http://www.omg.org/spec/DDS-Java/1.0/Beta3/PDF
  22. ^ "Interface Definition Language (IDL), Version 3.5". OMG. 1 марта 2014 г. Архивировано из оригинала 21 января 2017 г. Получено 9 ноября 2016 г.
  23. ^ "О спецификации DDS для сред с экстремально ограниченными ресурсами версии 1.0". www.omg.org . Получено 12.03.2021 .
  24. ^ "О спецификации RPC Over DDS версии 1.0". www.omg.org . Получено 12.03.2021 .
  25. ^ "DDS Data Local Reconstruction Layer (DDS-DLRL)". Апрель 2015 г. Получено 9 ноября 2016 г.


Получено с "https://en.wikipedia.org/w/index.php?title=Data_Distribution_Service&oldid=1227940784"