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

В Служба распространения данных (DDS) для систем реального времени является Группа управления объектами (МОЙ БОГ) от машины к машине (иногда называют промежуточное ПО или структура подключения), который направлен на обеспечение надежный, высокая производительность, совместимый, в реальном времени, масштабируемый обмен данными используя шаблон публикации – подписки.

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

Архитектура

Модель

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

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

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

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

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

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

Совместимость

Как коммерческие, так и программное обеспечение с открытым исходным кодом доступны реализации DDS. К ним относятся интерфейсы прикладного программирования (API) и библиотеки реализаций в Ада, C, C ++, C #, Ява, Python, Scala, Lua, Pharo и Рубин.

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

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

Совместимость OMG Data Distribution Service

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

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

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

История

Разработка спецификации DDS началась в 2001 году. Она была разработана Real-Time Innovations, государственным подрядчиком США, и Thales Group, французская оборонная компания. В 2004 г. Группа управления объектами (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 в реальном времени с использованием протокола проводной связи DDS гарантирует, что информация, опубликованная по теме с использованием реализации DDS одного поставщика, может быть использована одним или несколькими подписчиками, использующими реализации DDS одного или разных поставщиков. . Хотя спецификация предназначена для сообщества DDS, ее использование не ограничено. Версия 2.0 была опубликована в апреле 2008 года, версия 2.1 - в ноябре 2010 года, 2.2 - в сентябре 2014 года и 2.3 - в мае 2019 года.[7]

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

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

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

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

Рекомендации

  1. ^ а б Анджело Корсаро, Херардо Пардо-Кастеллот и Кларк Такер (12 августа 2009 г.). «Демонстрация взаимодействия DDS» (PDF). Группа управления объектами. Архивировано из оригинал (PDF) 15 сентября 2011 г.. Получено 9 ноября, 2016.
  2. ^ "Демонстрация взаимодействия DDS, декабрь 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». видео. Инновации в реальном времени. 14 декабря 2010 г.. Получено 9 ноября, 2016.
  7. ^ а б «Спецификация проводного протокола публикации и подписки в реальном времени, спецификация протокола взаимодействия DDS (DDSI-RTPS)». Май 2019. Получено 28 октября, 2019.
  8. ^ «Служба распространения данных (DDS), версия 1.0». Группа управления объектами. 2 декабря 2004 г.. Получено 9 ноября, 2016.
  9. ^ «Служба распространения данных (DDS), версия 1.1». 4 декабря 2005 г.. Получено 9 ноября, 2016.
  10. ^ «Служба распространения данных (DDS), версия 1.2». 1 января 2007 г.. Получено 9 ноября, 2016.
  11. ^ «Служба распространения данных (DDS), версия 1.4». 10 апреля 2015 г.. Получено 9 ноября, 2016.
  12. ^ Патент США US8874686
  13. ^ Патент США US8671135
  14. ^ Патент США US8150988
  15. ^ Патент США US9015672
  16. ^ DDS для облегченного CCM (dds4ccm), версия 1.1, формальный / 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, формальный / 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: Java 5 Language PSM для DDSVersion 1.0, ptc / 2012-12-01, март 2013 г. http://www.omg.org/spec/DDS-Java/1.0/Beta3/PDF
  22. ^ «Язык определения интерфейса (IDL), версия 3.5». МОЙ БОГ. 1 марта 2014 г. Архивировано с оригинал 21 января 2017 г.. Получено 9 ноября, 2016.
  23. ^ «Уровень локальной реконструкции данных DDS (DDS-DLRL)». Апрель 2015 г.. Получено 9 ноября, 2016.