Основное взаимодействие Агента ПОДД с ядром СМЭВ4 реализовано с использованием протокола Apache Pulsar, который является распределенной платформой гарантированного обмена сообщениями между множеством систем. На основе этой платформы осуществляется возможность информационного взаимодействия ПОДД СМЭВ и подключенного к нему ИС УВ.
Одним из способов обмена между несколькими Агентами ПОДД является использование Рассылок с уведомлениями об изменениях и репликацией, которые организуют процесс автоматического информирования ИС потребителя об изменениях данных на витрине ИС поставщика посредством передачи соответствующих сведений.
Рассылка позволяет автоматически загружать изменения данных из витрины поставщика в специальное хранилище на стороне потребителя и потребитель посылает запросы напрямую в своё хранилище, в результате чего сокращается продолжительность сеансов обмена и необходимость "склейки" запросов на стороне ПОДД.
Такой обмен осуществляется по Подписке Потребителя данных на получение изменений данных с использованием Рассылок.
Информационный обмен с использованием Рассылок состоит из нескольких этапов:
1. Регистрируется подписка в ПОДД и Витрине поставщика данных, создается структура данных в хранилище потребителя данных;
2. Данных актуализируются методом передачи пакета дельт от Витрины поставщика данных в хранилище потребителя. При этом возможны варианты обмена:- по расписанию (если оно было указано в подписке);
- по событию об изменении данных (если расписание не указано);
При необходимости отключить подписку, осуществляется ее отмена через ВС "Отмена подписки на репликацию или уведомлений в изменении данных".
Данный информационный обмен сопровождается следующими ограничениями:
- Подписку на рассылку нельзя обновить – при необходимости внести изменения в подписку потребуется сформировать новую;
- В Витрине потребителе недопустима произвольная запись данных, кроме процесса получения новых дельт от витрины поставщика;
- Механизм ограничения объема пакета отправляемых дельт не предусмотрен.
Взаимодействия участников обмена
Взаимодействие Агента поставщика данных с Витриной поставщика и с хранилищем данных потребителя осуществляется с использованием зарезервированных топиков брокера сообщений Apache Kafka в соответствии со спецификацией (Рисунок 1). Более подробно о перечне топиков Apache Kafka и структуры сообщений можно ознакомиться в документе «Методические рекомендации по работе с ПОДД СМЭВ» раздел «2.3 Протокол взаимодействия Агента ПОДД СМЭВ и Витрины поставщика данных».
Рисунок 1 – Информационный обмен с использованием подписок на уведомления об изменениях.
Первоначальная выгрузка данных
Порядок формирования первоначальной выгрузки данных показан на диаграмме ниже (Рисунок 2).
Рисунок 2 – Диаграмма последовательности процесса формирования начальной выгрузки.
Ядро ПОДД СМЭВ после получения подписки потребителя данных:
1. Проверяет наличие новых подписок, загружаемых через ВС "Подписка на уведомления в изменении данных";2. Выполняет проверку наличия у потребителя данных соответствующих полномочий на доступ к данным, указанным в подписке;
3. Формирует и отправляет информацию о полученной подписке Агенту поставщика, если соответствующие права есть. Если нет – формирует ошибку и прекращает обработку подписки.
Важно! Сведения о подписке, не прошедшей проверку в ПОДД, не хранятся.
Агент Поставщика данных:
4. Передает запрос на регистрацию подписки Витрине (топик <мнемоника Витрины>.replication.rq):Ядро ПОДД СМЭВ4:
6. Проверяет подпись Агента поставщика данных;7. Пересылает структуру таблиц далее Агенту потребителя;
Агент Потребителя данных:
8. Проверяет подпись Агента Поставщика данных;9. Передает в Хранилище данных структуру таблиц (с использованием топика replication.in.rq);
Процесс получения пакета дельт
Порядок получения пакета дельт показан на диаграмме ниже (Рисунок 3).
Рисунок 3 – Диаграмма последовательности процесса получения пакета дельт.
В случае использования подписок по событию об изменении данных Агент Поставщика осуществляет:
1. Получение уведомления на Витрине Поставщика (топик <мнемоника Витрины>.delta.notification);2. Пересылка уведомления в Ядро ПОДД.
Ядро ПОДД СМЭВ4:
3. Проверяет полномочия Потребителей данных, указанных в подписке;4. Отправляет запрос пакета дельт Агенту Поставщика, если права у Потребителей есть;
Далее Агент Поставщика данных выполняет:
5. Запрос пакета дельт у Витрины Поставщика (через топик <мнемоника Витрины>.delta.rq);- Получение пакета дельт (топик <мнемоника Витрины>.delta.rs) при успешной обработке запроса Витриной Поставщика;
- Получение уведомления об ошибке при неспешной обработке (топик <мнемоника Витрины>.delta.err);
Ядро ПОДД СМЭВ выполняет:
7. Проверку подписи Агента Поставщика;8. Пересылка пакета дельт Агенту Потребителя;
В свою очередь Агент Потребителя:
9. Проверяет подпись Агента Поставщика;10. Передает пакет дельт в Хранилище данных (через топик delta.in.rq);
Хранилище данных последовательно применяет дельты из пакета:
11. Получает уведомление об успешной загрузке пакета дельт (топик <мнемоника Витрины>.delta.in.rs с указанием номера последней дельты);12. Получает уведомление об ошибке при загрузке пакета дельт (топик <мнемоника Витрины>.delta.in.err) – в случае неуспешной обработки Хранилищем;
13. Отправляет в Ядро ПОДД СМЭВ статус обработки пакета дельт Хранилищем данных.
При использовании Рассылок по расписанию процесс обмена начинается с 3 шага.
Отмена подписки
Порядок отмены подписки показан на диаграмме ниже (Рисунок 4).
Рисунок 4 – Диаграмма последовательности процесса отмены подписки.
Ядро ПОДД СМЭВ проверяет наличие новых запросов на отмену подписки загруженных через ВС " Отмена подписки на уведомления в изменении данных". После чего отправляет запрос на отмену подписки в Агент Поставщика данных.
Агент Поставщика данных:
- Отправляет запрос Витрине Поставщика (топик <мнемоника Витрины>.replication.cancel.rq);
- Получает ответ от Витрины (топик <мнемоника Витрины>.replication.cancel.rs);
- Отправляет в Ядро ПОДД статус обработки запроса на отмену подписки.