Эта статья содержит рекламный контент . ( Июль 2020 г. ) |
Эта статья может чрезмерно полагаться на источники, слишком тесно связанные с темой , что потенциально делает статью непроверяемой и нейтральной . Пожалуйста ( Июль 2014 ) |
Служба распределения данных ( 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] и соглашение об использовании общей модели.
В марте 2009 года три поставщика продемонстрировали совместимость между отдельными независимыми продуктами, которые реализовали протокол публикации-подписки OMG в реальном времени версии 2.1 с января 2009 года. Демонстрация включала обнаружение издателей и подписчиков друг друга на разных платформах ОС ( Microsoft Windows и Linux ) и поддерживала многоадресную и одноадресную сетевую связь. [1]
Демонстрация взаимодействия DDS использовала такие сценарии, как:
Разработка спецификации 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 описывает два уровня интерфейсов:
Другие связанные стандарты следовали за первоначальным основным документом. Спецификация протокола 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]