data destribution service omg standart

94
Технология Data Destribution Service 2.0 OMG standard – создание распределённых информационных систем реального времени

Upload: sergei-seleznev

Post on 12-Apr-2017

299 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Data Destribution service OMG standart

Технология Data Destribution Service 2.0 OMG standard – создание распределённых информационных систем реального времени

Page 2: Data Destribution service OMG standart

Вопросы

• Общие положения– Стандарты – Общие особенности–Области применения• Архитектура –Основные подходы–Особенности архитектуры (Data Centric Pub/Sub)–Базовые понятия: топик, тип данных

Page 3: Data Destribution service OMG standart

ОБЩИЕ ПОЛОЖЕНИЯ

• Стандарты• Общие особенности• Области применения

Page 4: Data Destribution service OMG standart

Источники и составные части

• The Data Distribution Service for Real-Time Systems (DDS) – стандарт OMG для middleware

• Доступные стандарты: –Data Distribution Service for Real-time Systems (DDS). 2007 Version 1.2 –The Real-time Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol Specification (DDSI). Version 2.1 –DDS for Lightweight CCM –DDS-Java: Java 5 Language PSM for DDS

• PSM – Platform specific mapping –DDS-PSM-Cxx: ISO/IEC C++ 2003 Language DDS PSM, включает

• API • QoS –Extensible and Dynamic Topic Types for DDS (DDS-XTypes) –UML Profile for Data Distribution

Page 5: Data Destribution service OMG standart

Особенности• Декларируемые

–Масштабируемость –Работа в реальном масштабе времени–Надежность

–Высокая производительность• Существенные и практически значимые– Интероперабельность

• На уровне разных платформ (ОС + «железо»)• Разные языки программирования• Единый транспортный протокол у разных производителей DDS

–Поддержка парадигмы «подписка-публикация»

Page 6: Data Destribution service OMG standart

Области применения• Приложения Big data: –financial trading –Управление воздушным движением –smart grid management • Приложения на мобильных устройствах –Военные приложения • Приложения на встроенных устройствах: • –Транспортные системы и транспорт • –Медицина • DDS предполагается использовать как базовую технологию

для реализации IoT и IIoT

Page 7: Data Destribution service OMG standart

Военные приложения

Page 8: Data Destribution service OMG standart

Мирные приложения

Page 9: Data Destribution service OMG standart

АРХИТЕКТУРА

• Основные подходы• Особенности архитектуры ( Data-Centric

Pub/Sub)• Базовые понятия: топик, тип данных, QoS

Page 10: Data Destribution service OMG standart

Основные подходы

• Поддержка парадигмы «pub/sub»• Концепция «Глобальное пространство

данных» - циркулирующие данные хранятся в Общем информационном пространстве

• Дублирование источников данных

Page 11: Data Destribution service OMG standart

DDS

Page 12: Data Destribution service OMG standart

DDS-2

Page 13: Data Destribution service OMG standart

Особенности архитектуры

• Размещение компонентов– Автоматическое обнаружение обеспечивает независимость от топологии сети• Избыточность–Можно ввести дублирующих поставщиков и потребителей данных с указанием приоритетов и «передачей эстафеты»• Время–Прием данных не обязательно синхронен с передачей. Есть возможность получения данных, относящихся ко времени, когда подписчик еще даже не был включен в сеть•Платформа–Представление данных автоматически платформо-независимо («железо», ОС, язык программирования)•Реализация–Сетевой протокол является стандартом

Page 14: Data Destribution service OMG standart

Модели обмена данными в распределённых системах

• Point-to-point - каждый компонент «знает» кому нужны его данные и отправляет (или адресует их непосредственно)

• Client-server – клиент обращается к серверу за нужными ему данными

• Publish-subscribe - компонент, публикующий данные, сообщает об этом middleware (публикует данные), затем отправляет их в middleware не заботясь о наличии и расположении компонентов-подписчиков, нуждающихся в данных; - компонент-подписчик, нуждающийся в данных, сообщает об этом middleware (подписывается на данные). При наличии публикатора данные данного типа начинают поступать подписчику

Page 15: Data Destribution service OMG standart

Message-centric architecture • Используется модель Publish-subscribe • Middleware

–Позволяет обмениваться сообщениями –Передает данные как наборы байт, не заботясь о содержимом –Не хранит состояние системы и/или данные

• Контроль синтаксической и семантической целостности сообщений возлагается на разработчика приложения

• Наиболее известные реализации подхода: –JMS API –AMPQ –HLA RTI

Page 16: Data Destribution service OMG standart

Data-centric architecture • Используется модель Publish-subscribe • Middleware

–Позволяет обмениваться сообщениями –Хранит состояние системы и данные –Передаваемые данные проверяются на синтаксическую [и семантическую?] целостность

• Разработчики создают ПО, которое читает и обновляет данные в глобальном виртуальном пространстве

• Наиболее известные реализации подхода: –DDS API –Протокол RTPS (DDSI)

Page 17: Data Destribution service OMG standart

«Эволюция middleware»

Page 18: Data Destribution service OMG standart

Message-Centric Pub/Sub против Data-Centric Pub/Sub

Page 19: Data Destribution service OMG standart

MCPS сравнение с DCPS

• MCPS •Middleware не «понимает» ваши данные •Разработчику приходится реализовывать проверку синтаксической правильности и формировать/разбирать сообщения •Можно выиграть на времени передачи

• DCPS •Middleware «понимает» ваши данные•Разработчик «экономит» на проверке синтаксической правильности и формировании/разборе сообщений •Постоянный контроль в отлаженных приложениях избыточен и поглощает ресурсы

Page 20: Data Destribution service OMG standart

Основные понятия

Page 21: Data Destribution service OMG standart

Типы данных

• Тип данных, на который ссылается топик DDS, описывается структурой IDL, содержащей произвольное число полей. Типами данных поля могут быть: –Примитивные типы IDL. Например: octet, short, long, float, string (bound/unbound), и т.д. –Перечислимый тип (enumeration) –Объединение (union) –Последовательность (sequence – bounded or unbounded) –Массив –Структура (вложенная)

Page 22: Data Destribution service OMG standart

Типы данных

Page 23: Data Destribution service OMG standart

Типы данных: ключи

• Каждый тип данных (для топика DDS) дополнительно описывается ключом (key-set) – набором полей

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

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

Page 24: Data Destribution service OMG standart

Типы данных: ключи

Page 25: Data Destribution service OMG standart

Типы данных: ключи

• Ключи используются для идентификации «экземпляров»

• Если провести параллель с ООП, то: –Типы данных без ключа – синглетоны (экземпляр строго единственный) –Типы данных с ключом аналогичны «обычным» классам с экземплярами, идентифицируемыми значением ключевых полей –Можно считать, что новое значение ключа порождает новый «объект» в распределённой системе DDS

Page 26: Data Destribution service OMG standart

Типы данных: ключи

Page 27: Data Destribution service OMG standart

Имена топиков и регистрация

• Регистрация топика идемпотентна (sic!), т.е. может быть выполнена повторная регистрация топика и это не приведёт к ошибке в приложении( приложениях).

• Попытка зарегистрировать топик, отличающийся только типом приведет к ошибке

Page 28: Data Destribution service OMG standart

Имена топиков и регистрация

Page 29: Data Destribution service OMG standart

РАЗГРАНИЧЕНИЕ ДАННЫХ

• Домены• Области

Page 30: Data Destribution service OMG standart

Домены и области

• Домен – под доменом понимается экземпляр глобального пространства данных (DDS Global Data Space). Приложения DDS (и более низкие элементы) всегда относятся только к одному домену

• Область (partition) - это механизм, позволяющий выделять подмножества взаимодействующих компонентов DDS (в том числе приложений)

• Приложения DDS (и более низкие элементы) могут относиться сразу к нескольким доменам

Page 31: Data Destribution service OMG standart

Домены и области

Page 32: Data Destribution service OMG standart

Области

• Каждая область идентифицируется строкой. Например, «sensor-data», «log-data» и т.д.

• Доступ к области по чтению/записи обеспечивается через компоненты DDS Publisher/Subscribers

• Каждому такому компоненту (Publisher или Subscriber) можно передать список имен областей. Каждое имя может включать групповые символы (wildcards) или регулярное выражение, например «*-data»

Page 33: Data Destribution service OMG standart

Области

• Хотя иерархичность областей не поддерживается в DDS напрямую, её легко организовать при разработке РИС, используя «точечную» нотацию

• Например, для здания, в котором размещаются датчики температуры, можно использовать нотацию «здание.этаж.номер-комнаты»–building.floor-2.room-10–building.floor-3.room-15

• Тогда, для получения данных по этажу используется маска названия области «building.floor-2.*», а для всего здания маска «building.*»

Page 34: Data Destribution service OMG standart

Области

Page 35: Data Destribution service OMG standart

ПОЛУЧЕНИЕ И ОТПРАВКА ДАННЫХ

• Отправка данных• Чтение данных

Page 36: Data Destribution service OMG standart

Отправка данных

• Отправка данных производится в два шага:–Создается компонент DataWriter с помощью нужного конструктора (выбор завит от требующейся функциональности – отличной от стандартной)–Потом данные передаются в произвольный момент с использованием этого компонента

Page 37: Data Destribution service OMG standart

Отправка данныхtemplate <typename T> class dds::pub::DataWriter : public dds::core:: Entity{ public: DataWriter(); DataWriter(Topic<T> topic) DataWriter(Topic<T> topic, const DataWriterQos& qos) DataWriter(Topic<T> topic, const DataWriterQos& qos, Publisher pub); // ... };

Page 38: Data Destribution service OMG standart

Получение данных

• Операция чтения (read) «проходит» по всем доступным семплам (sample) экземпляра

• Семплы не удаляются из локального кеша DDS в результате операции чтения (read)

• Прочтенные могут быть прочтены из локального кеша DDS снова при указании специальных параметров операции чтения

Page 39: Data Destribution service OMG standart

Получение данных

Page 40: Data Destribution service OMG standart
Page 41: Data Destribution service OMG standart

Состояния при чтении• Кроме содержащих непосредственно данные семплов DataReaders

предоставляют информацию о состоянии переданных данных и источниках данных (DataWriters)

• Состояние семпла:{READ|NOT_READ}. Определяет, был ли данный семпл уже хотя бы раз прочитан (read)

• Состояние экземпляра: {ALIVE | NOT_ALIVE| DISPOSED}. Определяет:–Существует ли хоть один писатель для данного конкретного экземпляра ?–Нет ни одного писателя для экземпляра–Экземпляр был сброшен (disposed)• Состояние view: {NEW | NOT_NEW}. Определяет, первый ли это

семпл для нового (или повторно появившегося – re-born) экземпляра

Page 42: Data Destribution service OMG standart

Состояния при чтении

Page 43: Data Destribution service OMG standart

Получение данных от DDS Доступны три способа взаимодействия (обмена данными между) DDS и приложением:–Опрос (polling) – приложение (по своей инициативе, обычно, периодически) запрашивает DDS для получения новых данных или информирования о смене состояния. Интервал опроса может зависеть от приложения и/или от данных и их значений–Списки ожидания (WaitSets) – приложение регистрирует в DDS списки ожидания и ждет (например, в режиме suspended) до тех пор, пока одно из переданных событий не произойдет –«Слушатели» (listeners) – приложение регистрирует в DDS (в классах, где события могут произойти) специальные классы-слушатели, которые будут информированы при наступлении этих событий

Page 44: Data Destribution service OMG standart

Получение данных от DDS

Page 45: Data Destribution service OMG standart

Получение данных от DDS

Page 46: Data Destribution service OMG standart

Обработка полученных данных

• Основанная на жизненном цикле (lifecycle):–Чтение данных только по «живым» экземплярам –Чтение данных только по новым экземплярам –Чтение только не прочитанных ранее семплов • SQL фильтрация:• –Фильтрация ?по ?значениям ?атрибутов ?• –Агрегация ?экземпляров ?по ?ключу ?• –Условия ?могут ?быть ?изменены ?во ?время ?

работы ?

Page 47: Data Destribution service OMG standart

Обработка полученных данных

Page 48: Data Destribution service OMG standart

Обработка полученных данных

Page 49: Data Destribution service OMG standart

QoS (КАЧЕСТВО ОБСЛУЖИВАНИЯ)

• Типы QoS в DDS• Особенности обеспечения

Page 50: Data Destribution service OMG standart

Внутренние события

Page 51: Data Destribution service OMG standart

Возможные типы QoS

Page 52: Data Destribution service OMG standart

Гарантированность доставки

• QoS гарантированности доставки (RELIABILITY QoS) задает «уровень гарантированности» доставки данных от публикатора подписчикам. Возможны два уровня:–Reliable – в установившемся режиме middleware гарантирует, что все семплы из истории DataWriter будут в конечном итоге доставлены всем DataReader–Best Effort – означает, что допустимо не повторять неудачную пересылку семплов

Page 53: Data Destribution service OMG standart

Reliability QoS

Page 54: Data Destribution service OMG standart

Хранение истории

• Хранение истории (history QoS) назначает количество семплов экземпляра, которые хранятся в middleware для DataReader. Возможные значения:–Хранить последние K – в этом случае хранятся последние К семплов. По умолчанию K = 1 –Хранить все – в этом случае сохраняются все семплы, отправленные DataWriter, до тех пор, пока:

•Они не «взяты» (taken) или •Не достигнуто ограничение на использование ресурсов

Page 55: Data Destribution service OMG standart

Хранение истории

Page 56: Data Destribution service OMG standart

Состояние

• Объекты в РИС могут быть: –С внутренним состоянием (stateful)

•Атрибуты в определении интерфейса – достаточное, но не необходимое условие •Внутренние переменные экземпляра

–Без внутреннего состояния (stateless) • Варианты хранения:

–Долговечными (persistent) – продолжающие существовать и после завершения процесса –Временными (transient)

Page 57: Data Destribution service OMG standart

Состояние: примеры

• Служба именования –Stateful –Persistent

• Положение моделируемого самолета –Stateful –Persistent (?)

• Команда –Stateless –Transient

Page 58: Data Destribution service OMG standart

Долговременное хранение

• Долговременное хранение – способность объекта переживать процесс, в котором он находится

–Состояние должно запоминаться на промежуток деактивации и активации • В качестве хранилища может использоваться:

– Файловая система – СУБД ( любого вида: реляционная, объектная)–Постоянная оперативная память

Page 59: Data Destribution service OMG standart

Долговременное хранение• За долговременное хранение в РИС может отвечать:– middleware– Каждое приложение самостоятельно– Выделенное приложение• Например, в ?HLA за реализацию долговременного

хранения отвечает:– Состояние middleware и выполняющейся распределенной модели в целом: сам HLA RTI–Состояние внутренних переменных моделей сохраняются самими приложениями

Page 60: Data Destribution service OMG standart

Долговременное хранение

Пример долговременного хранения в CORBA

Page 61: Data Destribution service OMG standart

Долговременное хранение

• Хранилище данных (datastorage) – общая область хранения всех данных – например: БД

• Область хранения (storage home) – отдельный контейнер с долговременные представлениями хранимых объектов – например: таблица

• Объект хранения (storage object) – представление одного хранимого объекта – например: запись в таблице РБД

• Тип хранения (storage type) – определяет интерфейс объекта хранения

Page 62: Data Destribution service OMG standart

Долговременное хранение• Воплощение объекта хранения (storage object

incarnation) – представление объекта хранения в памяти средствами языка программирования

• Воплощение области хранения (storage home incarnation) – представление экземпляра области хранения на языке программирования

• Ключ – атрибут, однозначно идентифицирующий объект хранения в пределах области хранения

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

Page 63: Data Destribution service OMG standart

Долговременное хранение

Page 64: Data Destribution service OMG standart

DDS: Durability QoS

• В DDS имеется QoS описывающий варианты хранения истории изменений: –Volatile (непостоянный) – История не хранится–Transient_local – История хранится локально в памяти отправителя–Transient – История хранится в сервисе TRANSIENT (в оперативной памяти)–Persistent – История хранится в постоянной памяти

Page 65: Data Destribution service OMG standart

DDS: Durability QoS

Page 66: Data Destribution service OMG standart

Вопросы

• «Более хитрые» QoS в DDS:– Состояние компонентов (liveliness)– Состояние экземпляров (deadline)– Максимальное время доставки (latency budget)– Приоритет (priority)– Владение (ownership, ownership strength)– Фильтрация по времени (Time-based filtering)–Фильтрация по значению (Content-Based filtering)

•«Лучшие практики»

Page 67: Data Destribution service OMG standart

Состояние компонентов DDS

• QoS отслеживания состояния компонентов системы (Liveliness QoS) позволяет отслеживать существование, статус и активность компонентов DDS (для Participant, Reader, Writer)

• Упрощенно можно сказать, что отвечает на вопрос «является ли отсутствие новостей хорошей новостью?»

• Для определения состояния используются специальные Liveliness Packets (аналог heartbeats)

Page 68: Data Destribution service OMG standart

Состояние компонентов DDS

• Возможные уровни использования, определяют, кто отвечает за генерацию пакетов – AUTOMATIC – пакеты генерируются инфраструктурой автоматически– MANUAL_BY_PARTICIPANT –MANUAL_BY_TOPIC – Генерация пакетов переложена на приложения

Page 69: Data Destribution service OMG standart

Состояние компонентов DDS

Page 70: Data Destribution service OMG standart

Состояние компонентов DDS

• QoS используется совместно с исключительным владением экземплярами: –Writer считается владельцем только если он «жив» –Как только DDS обнаруживает факт пропуска прихода сообщений liveliness, она «отбирает» у писателя все его экземпляры и назначает владельцем следующего (с учетом их приоритетности)

Page 71: Data Destribution service OMG standart

Состояние компонентов DDS

• Не следует использовать термин deadline, чтобы не спутать с QoS Deadline

• Периоды посылки сообщений liveliness конфигурируемы

• При использовании уровня MANUAL_* приложение должно посылать сообщения liveliness:–В явном виде с помощью вызова метода assert_liveliness–В неявном виде с помощью посылки семпла

Page 72: Data Destribution service OMG standart

Состояние компонентов DDS (liveliness)

• MANUAL_BY_PARTICIPANT определяет состояние на уровне DomainParticipant

• MANUAL_BY_TOPIC определяет состояние на уровне DataWriter

• Соглашение о настройках QoS происходит с учетом предлагаемых:–Уровня (можно сдвинуть выше):– AUTOMATIC < MANUAL_BY_PARTICIPANT < MANUAL_BY_TOPIC –Времени задержки (можно сделать меньше):– Предложенное время < установленного времени

Page 73: Data Destribution service OMG standart

Состояние экземпляров

• QoS отслеживания состояния экземпляров (Deadline QoS) позволяет отслеживать статус и активность экземпляров

• Если данные по экземпляру не обновляются как установлено, то приложение получает сигнал об этом

Page 74: Data Destribution service OMG standart

Состояние экземпляров

Page 75: Data Destribution service OMG standart

Время на доставку

• Максимальное время доставки (Latency_budget) определяет максимально допустимое время задержки данных между их отправкой (операция write) и получением (записью в очередь чтения подписчика)

• Значение по умолчанию – нулевое, что означает, что время доставки должно быть минимизировано

• Данная QoS является «подсказкой» для DDS. Время доставки не мониторится и не может быть явно установлено

Page 76: Data Destribution service OMG standart

Время на доставку

Page 77: Data Destribution service OMG standart

Приоритет

• Приоритет (Transport_priority) является подсказкой транспорту, устанавливающей «преимущества» в доставке семплов того или иного топика

Page 78: Data Destribution service OMG standart

Владение

• Владение (Ownership) устанавливается на уровне экземпляра ( или топика, если для типа данных не установлен ключ). Возможно установить следующие варианты владения:–SHARED: Совместное владение, когда любой участник, опубликовавший топик, может обновлять экземпляр. По действию такой режим эквивалентен отключению использования данной QoS–EXCLUSIVE: Исключительное владение, когда только один источник (writer) может обновлять данные по экземпляру

Page 79: Data Destribution service OMG standart

Владение: Shared

Page 80: Data Destribution service OMG standart

Владение: Exclusive

Page 81: Data Destribution service OMG standart

Владение• Приоритет владения (Ownership Strength) устанавливается

для источника (writer) и применяется к его экземплярам (или топикам, если для типа данных не установлен ключ)

• Только один источник (writer), имеющий максимальный приоритет, может обновлять данные по экземпляру

• Владение автоматически передается:• –При появлении более приоритетного источника,• –Или следующему по приоритету, если:

Источник «умер» (согласно QoS liveliness) Пропустил отправку данных (согласно QoS Deadline) Перестал публиковать топик или экземпляр

Page 82: Data Destribution service OMG standart

Владение: Приоритет

Page 83: Data Destribution service OMG standart

Владение: Приоритет

Page 84: Data Destribution service OMG standart

Фильтрация по времени

• Фильтрация по времени (Time_based_filter) позволяет подписчикам указывать, что они не желают получать данные слишком часто. Это позволяет сократить количество получаемых семплов и сэкономить время на их обработку

• DataReader указывает, что: –Ему не обязательно получать все семплы –Однако он хочет получать не меньше одного семпла в каждый период (minimum_separation)

Page 85: Data Destribution service OMG standart

Фильтрация по времени

Page 86: Data Destribution service OMG standart

Фильтрация по значению

• Фильтрация по значению (Content-based filtering) позволяет подписчикам указывать, семплы с какими значениями полей они хотят получать. Это позволяет: –Исключить из видимости некоторые экземпляры ?–Сократить количество получаемых семплов и сэкономить время на их обработку –Получать только «особенные» семплы (индикация событий)

Page 87: Data Destribution service OMG standart

Фильтрация по значению

Page 88: Data Destribution service OMG standart

Хранение истории

• Хранение истории (history QoS) назначает количество семплов экземпляра, которые хранятся в middleware для DataReader. Возможные значения: –Хранить последние K – в этом случае хранятся последние K семплов. По умолчанию K = 1 –Хранить все – в этом случае сохраняются все семплы, отправленные DataWriter, до тех пор, пока: •Они не «взяты» (taken) или •Не достигнуто ограничение на использование ресурсов

Page 89: Data Destribution service OMG standart

Хранение истории

Page 90: Data Destribution service OMG standart

Хранение истории

Page 91: Data Destribution service OMG standart

DDS: Durability QoS

• В DDS имеется QoS описывающий варианты хранения истории изменений:

–Volatile (непостоянный, изменчивый) - История не хранится –Transient_local - История хранится локально в памяти отправителя –Transient – История хранится в сервисе TRANSIENT (в оперативной памяти) –Persistent – История хранится в постоянной памяти

Page 92: Data Destribution service OMG standart

DDS: Durability QoS

Page 93: Data Destribution service OMG standart

Лучшие практики

• Начните с описания модели данных, затем отразите её на домены DDS, типы данных и топики

• Полностью и явно опишите типы данных: не используйте произвольные инкапсуляции

• Распределите подсистемы по доменам DDS • Используйте типы данных с ключами

Page 94: Data Destribution service OMG standart

Лучшие практики

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