Войти

Обмен в СМЭВ4 с использованием рассылок

Основное взаимодействие Агента ПОДД с ядром СМЭВ4 реализовано с использованием протокола Apache Pulsar, который является распределенной платформой гарантированного обмена сообщениями между множеством систем. На основе этой платформы осуществляется возможность информационного взаимодействия ПОДД СМЭВ и подключенного к нему ИС УВ.

Одним из способов обмена между несколькими Агентами ПОДД является использование Рассылок с уведомлениями об изменениях и репликацией, которые организуют процесс автоматического информирования ИС потребителя об изменениях данных на витрине ИС поставщика посредством передачи соответствующих сведений.

Рассылка позволяет автоматически загружать изменения данных из витрины поставщика в специальное хранилище на стороне потребителя и потребитель посылает запросы напрямую в своё хранилище, в результате чего сокращается продолжительность сеансов обмена и необходимость "склейки" запросов на стороне ПОДД.

Такой обмен осуществляется по Подписке Потребителя данных на получение изменений данных с использованием Рассылок.

Информационный обмен с использованием Рассылок состоит из нескольких этапов:

1.      Регистрируется подписка в ПОДД и Витрине поставщика данных, создается структура данных в хранилище потребителя данных;

2.      Данных актуализируются методом передачи пакета дельт от Витрины поставщика данных в хранилище потребителя. При этом возможны варианты обмена:
  • по расписанию (если оно было указано в подписке);
  • по событию об изменении данных (если расписание не указано);

При необходимости отключить подписку, осуществляется ее отмена через ВС "Отмена подписки на репликацию или уведомлений в изменении данных".

Данный информационный обмен сопровождается следующими ограничениями:

  1. Подписку на рассылку нельзя обновить – при необходимости внести изменения в подписку потребуется сформировать новую;
  2. В Витрине потребителе недопустима произвольная запись данных, кроме процесса получения новых дельт от витрины поставщика;
  3. Механизм ограничения объема пакета отправляемых дельт не предусмотрен.

Взаимодействия участников обмена

Взаимодействие Агента поставщика данных с Витриной поставщика и с хранилищем данных потребителя осуществляется с использованием зарезервированных топиков брокера сообщений Apache Kafka в соответствии со спецификацией (Рисунок 1). Более подробно о перечне топиков Apache Kafka и структуры сообщений можно ознакомиться в документе «Методические рекомендации по работе с ПОДД СМЭВ» раздел «2.3 Протокол взаимодействия Агента ПОДД СМЭВ и Витрины поставщика данных».


 Рисунок 1 – Информационный обмен с использованием подписок на уведомления об изменениях.

Первоначальная выгрузка данных

Порядок формирования первоначальной выгрузки данных показан на диаграмме ниже (Рисунок 2).


 Рисунок 2 – Диаграмма последовательности процесса формирования начальной выгрузки.

Ядро ПОДД СМЭВ после получения подписки потребителя данных:

1. Проверяет наличие новых подписок, загружаемых через ВС "Подписка на уведомления в изменении данных";
2. Выполняет проверку наличия у потребителя данных соответствующих полномочий на доступ к данным, указанным в подписке;
3. Формирует и отправляет информацию о полученной подписке Агенту поставщика, если соответствующие права есть. Если нет – формирует ошибку и прекращает обработку подписки.

Важно! Сведения о подписке, не прошедшей проверку в ПОДД, не хранятся.

Агент Поставщика данных:

4. Передает запрос на регистрацию подписки Витрине (топик <мнемоника Витрины>.replication.rq):
  • Получает структуру таблиц в случае успешной обработки запрос Витриной (топик <мнемоника Витрины>.replication.rs);
  • Получает уведомление об ошибке в случае неуспешной обработки (топик <мнемоника Витрины>.replication.err).
  • 5. Пересылает структуру таблиц в Ядро ПОДД.

    Ядро ПОДД СМЭВ4:

    6. Проверяет подпись Агента поставщика данных;
    7. Пересылает структуру таблиц далее Агенту потребителя;

    Агент Потребителя данных:

    8. Проверяет подпись Агента Поставщика данных;
    9. Передает в Хранилище данных структуру таблиц (с использованием топика replication.in.rq);
  • Получает уведомление об успешном создании структуры данных в случае успешной обработки (топик <мнемоника Витрины>.replication.in.rs);
  • Получает уведомление об ошибке в случае неуспеха (топик <мнемоника Витрины>.replication.in.err);
  • 10. Отправляет обратно в Ядро ПОДД статус обработки структуры таблиц хранилищем данных.

    Процесс получения пакета дельт

    Порядок получения пакета дельт показан на диаграмме ниже (Рисунок 3).


     Рисунок 3 – Диаграмма последовательности процесса получения пакета дельт.

    В случае использования подписок по событию об изменении данных Агент Поставщика осуществляет:

    1. Получение уведомления на Витрине Поставщика (топик <мнемоника Витрины>.delta.notification);
    2. Пересылка уведомления в Ядро ПОДД.

    Ядро ПОДД СМЭВ4:

    3. Проверяет полномочия Потребителей данных, указанных в подписке;
    4. Отправляет запрос пакета дельт Агенту Поставщика, если права у Потребителей есть;

    Далее Агент Поставщика данных выполняет:

    5. Запрос пакета дельт у Витрины Поставщика (через топик <мнемоника Витрины>.delta.rq);
      • Получение пакета дельт (топик <мнемоника Витрины>.delta.rs) при успешной обработке запроса Витриной Поставщика;
      • Получение уведомления об ошибке при неспешной обработке (топик <мнемоника Витрины>.delta.err);
    6. Пересылка пакета дельт в Ядро ПОДД;

    Ядро ПОДД СМЭВ выполняет:

    7. Проверку подписи Агента Поставщика;
    8. Пересылка пакета дельт Агенту Потребителя;

    В свою очередь Агент Потребителя:

    9. Проверяет подпись Агента Поставщика;
    10. Передает пакет дельт в Хранилище данных (через топик delta.in.rq);

    Хранилище данных последовательно применяет дельты из пакета:

    11. Получает уведомление об успешной загрузке пакета дельт (топик <мнемоника Витрины>.delta.in.rs с указанием номера последней дельты);
    12. Получает уведомление об ошибке при загрузке пакета дельт (топик <мнемоника Витрины>.delta.in.err) – в случае неуспешной обработки Хранилищем;
    13. Отправляет в Ядро ПОДД СМЭВ статус обработки пакета дельт Хранилищем данных.

    При использовании Рассылок по расписанию процесс обмена начинается с 3 шага.

    Отмена подписки

    Порядок отмены подписки показан на диаграмме ниже (Рисунок 4).


     Рисунок 4 – Диаграмма последовательности процесса отмены подписки.

    Ядро ПОДД СМЭВ проверяет наличие новых запросов на отмену подписки загруженных через ВС " Отмена подписки на уведомления в изменении данных". После чего отправляет запрос на отмену подписки в Агент Поставщика данных.

    Агент Поставщика данных:

    1. Отправляет запрос Витрине Поставщика (топик <мнемоника Витрины>.replication.cancel.rq);
    2. Получает ответ от Витрины (топик <мнемоника Витрины>.replication.cancel.rs);
    3. Отправляет в Ядро ПОДД статус обработки запроса на отмену подписки.
    Авторизуйтесь, чтобы оставить комментарий к статье