Распределение Data Service ( 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 .
Поставщики DDS участвовали в демонстрациях совместимости на технических совещаниях OMG Spring с 2009 по 2013 год. [1] [2] [3] [4] [5] [6]
Во время демонстраций каждый поставщик публиковал темы друг друга и подписывался на них с помощью набора тестов, называемого демонстрацией фигур. Например, один поставщик публикует информацию о форме, а другие поставщики могут подписаться на эту тему и отображать результаты на собственном дисплее фигур. Каждый поставщик по очереди публикует информацию, а другой подписывается. Две вещи сделали демонстрационные версии возможными: протокол DDS-I или протокол публикации-подписки в реальном времени (RTPS) [7] и согласие на использование общей модели.
В марте 2009 года три поставщика продемонстрировали возможность взаимодействия между отдельными независимыми продуктами, которые реализовали протокол OMG Real-time Publish-Subscribe версии 2.1 с января 2009 года. Демонстрация включала обнаружение издателей и подписчиков друг друга на разных платформах ОС ( Microsoft Windows и Linux ) и поддерживает многоадресную и одноадресную сетевую связь. [1]
В демонстрации совместимости DDS использовались такие сценарии, как:
- Базовое подключение к сети с использованием интернет-протокола (IP)
- Открытие издателей и подписчиков
- Качество обслуживания (QoS) Совместимость между запрашивающим и предлагающим
- Сеть, устойчивая к задержкам
- Несколько тем и экземпляров тем
- Исключительное владение темами
- Контентная фильтрация тематических данных, включая время и географию
История
Разработка спецификации DDS началась в 2001 году. Ее разработали Real-Time Innovations (RTI), компания по разработке программного обеспечения, и Thales Group , французская оборонная компания. В 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 в режиме реального времени и подписки гарантирует, что информация, опубликованная по теме с использованием реализации DDS одного поставщика, может быть использована одним или несколькими подписчиками, использующими реализации DDS одного или разных поставщиков. Хотя спецификация предназначена для сообщества DDS, ее использование не ограничено. Версия 2.0 была опубликована в апреле 2008 года, версия 2.1 - в ноябре 2010 года, 2.2 - в сентябре 2014 года и 2.3 - в мае 2019 года. [7]
DDS для облегченного CCM (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] Unified Modeling Language (UML) Профиль указано DDS домены и тем , чтобы быть частью анализа и моделирования дизайна. [20] Эта спецификация также определяет, как публиковать и подписывать объекты без предварительного описания типов на другом языке, таком как XML или OMG IDL. [21] языка определения интерфейса (IDL) был задан в 2014 году , независимо от общего брокер объектных запросов Архитектура (CORBA) спецификации в главе 3. Этот IDL 3.5 был совместим со спецификацией CORBA 3, но извлекаются в качестве своей собственной спецификации позволяя ему развиваться независимо от CORBA. [22]
Следует упомянуть и другие протоколы: DDS-XRCE (DDS для сред с чрезвычайно ограниченными ресурсами), этот протокол спецификации позволяет осуществлять связь между устройствами с ограниченными ресурсами, такими как, например, микроконтроллер и сеть DDS. Это делает возможной публикацию и подписку на темы через промежуточную службу в домене DDS [23] и DDS-RPC (RPC Over DDS), который определяет удаленные вызовы процедур. Они обеспечивают двунаправленную связь запроса / ответа и определяют распределенные услуги, а также детализируются с использованием интерфейса службы. Он также поддерживает как синхронный, так и асинхронный вызов методов. [24]
Начиная с DDS версии 1.4 в 2015 году дополнительный уровень DLRL был перемещен в отдельную спецификацию. [25]
Смотрите также
- ПО промежуточного слоя
- Вычислительная среда с открытой архитектурой
- Object Management Group (OMG), организация по стандартизации, разработавшая спецификацию
Рекомендации
- ^ Б Анджело Корсаро, Херардо Pardo-Castellote и Кларк Tucker (12 августа 2009). «Демонстрация взаимодействия DDS» (PDF) . Группа управления объектами. Архивировано из оригинального (PDF) 15 сентября 2011 года . Проверено 9 ноября, 2016 .
- ^ «Демонстрация взаимодействия DDS, декабрь 2010 г.» (PDF) . Real-Time Innovations, Inc. 11 декабря 2010 . Проверено 9 ноября, 2016 .
- ^ 2011, март 2011, https://community.rti.com/content/presentation/omg-dds-interoperability-demo-2011
- ^ 2012, март 2012, https://community.rti.com/content/presentation/omg-dds-interoperability-demo-2012
- ^ 2013, март 2013, http://www.slideshare.net/GerardoPardo/dds-interoperability-demo-2013-washington-dc
- ^ «Демонстрация совместимости DDS» . видео . Инновации в реальном времени. 14 декабря 2010 . Проверено 9 ноября, 2016 .
- ^ а б «Спецификация протокола проводной связи для взаимодействия с DDS в режиме реального времени (DDSI-RTPS)» . Май 2019 . Проверено 28 октября 2019 года .
- ^ «Служба распространения данных (DDS), версия 1.0» . Группа управления объектами. 2 декабря 2004 . Проверено 9 ноября, 2016 .
- ^ «Служба распространения данных (DDS), версия 1.1» . 4 декабря 2005 . Проверено 9 ноября, 2016 .
- ^ «Служба распространения данных (DDS), версия 1.2» . 1 января 2007 . Проверено 9 ноября, 2016 .
- ^ «Служба распространения данных (DDS), версия 1.4» . 10 апреля 2015 . Проверено 9 ноября, 2016 .
- ^ Патент США US8874686
- ^ Патент США US8671135
- ^ Патент США US8150988
- ^ Патент США US9015672
- ^ DDS для облегченного CCM (dds4ccm), версия 1.1, формальный / 2012-02-01, февраль 2012, http://www.omg.org/spec/dds4ccm/1.1/PDF/
- ^ Языки программирования - C ++, 15 октября 2003 г., ISO / IEC 14882, http://www.iso.org/iso/catalogue_detail.htm?csnumber=38110
- ^ DDS-PSM-Cxx: ISO / IEC C ++ 2003 Language DDS PSM, версия ptc / 2011-01-02, январь 2011 г., http://www.omg.org/spec/DDS-PSM-Cxx/1.0/Beta1/ PDF
- ^ Расширяемые и динамические типы тем для DDS (DDS-XTypes), 1.0, формальный / 2012-11-10, ноябрь 2012, http://www.omg.org/spec/DDS-XTypes/1.0/PDF
- ^ Профиль UML для распространения данных, версия: 1.0, http://www.omg.org/cgi-bin/doc?ptc/10-05-17.pdf
- ^ 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
- ^ «Язык определения интерфейса (IDL), версия 3.5» . МОЙ БОГ. 1 марта, 2014. Архивировано из оригинала 21 января 2017 года . Проверено 9 ноября, 2016 .
- ^ «О DDS для сред с крайне ограниченными ресурсами, версия 1.0» . www.omg.org . Проверено 12 марта 2021 .
- ^ «О спецификации RPC через DDS версии 1.0» . www.omg.org . Проверено 12 марта 2021 .
- ^ «Уровень локальной реконструкции данных DDS (DDS-DLRL)» . Апрель 2015 . Проверено 9 ноября, 2016 .