Структура Витрины данных
=============================
.. _components:
Составные части Витрины данных
--------------------------------
Программа имеет модульную архитектуру и построена на базе различных компонентов (включая разработки сторонних производителей).
Общую схему взаимосвязей компонентов можно просмотреть в разделе Архитектура программы.
Функционально, программа состоит из следующих частей:
**Основные компоненты**
- **ProStore** - основной компонент программы с открытым исходным кодом, обеспечивает единый интерфейс к хранилищу разнородных данных.
Определяет структуры данных, запись и чтение данных Витрины. Позволяет работать со входящими в состав хранилища СУБД одинаковым образом,
используя единый синтаксис запросов SQL и единую логическую схему данных. ProStore включает следующие компоненты:
- *Сервис исполнения запросов* — анализирует и исполняет SQL-запросы; предоставляет REST API для JDBC-драйвера и взаимодействует с сервисом
мониторинга статусов Kafka по REST API. В свою очередь состоит из следующих компонентов:
- Коннектор *Kafka-Postgres reader* - считывает данные из PostgreSQL и передает их в брокер сообщений Kafka;
- Коннектор *Kafka-Postgres writer* - записывает данные из брокера сообщений Kafka в PostgreSQL;
- **Слой адаптеров** - общее название логических модулей программы, которые обеспечивают подключение к ПОДД СМЭВ, как информационной системы
участника взаимодействия. В зависимости от предназначения логические модули обеспечивают загрузку запросов из очереди
`ИС УВ `_
в `ПОДД СМЭВ `_ , формирование и отправку
ответов в ПОДД СМЭВ, инициативное формирование уведомлений об изменении данных в экземпляре ПО «Витрина данных НСУД», отправку уведомлений
в ПОДД СМЭВ, регистрацию реплики данных ИС УВ, подписки на репликацию и поддержку реплики в актуальном состоянии.
**Компоненты, входящие в состав слоя адаптеров**
- **СМЭВ3-адаптер** - обеспечивает информационное взаимодействие через единый электронный сервис единой системы межведомственного
электронного взаимодействия (далее – СМЭВ).
- **Сервис формирования документов** - предназначен для обеспечения возможности формирования документов, в формате XML и PDF, на основе
предварительно подготовленных pebble-шаблонов, с возможностью добавления к сформированным документам электронной подписи.
- **CSV-Uploader** - программный модуль Витрины данных, предназначен для загрузки и выгрузки csv-файлов со структурой Витрины и csv-шаблонов
с демо-шаблонами структуры Витрины, а также просмотра Журнала операций.
- **ПОДД-адаптер - Модуль исполнения запросов** - предназначен для исполнения запросов ПОДД СМЭВ (через протокол коммуникации Агент СМЭВ4).
- **ПОДД-адаптер – Модуль MPPR** - предназначен для чтения данных в многопоточном режиме.
- **ПОДД-адаптер - Модуль MPPW** - исполняет запросы в многопоточном режиме, записывающие данные в Prostore.
- **ПОДД-адаптер - Модуль группировки данных табличных параметров** - предназначен для группировки данных при выполнении запросов с
табличными параметрами.
- **ПОДД-адаптер - Модуль импорта табличных параметров** - предназначен для создания временных таблиц при выполнении временных запросов с
табличными параметрами.
- **ПОДД-адаптер - Wrapper** - образует пакеты с данными табличных параметров, поступающие от Агента ПОДД в брокер сообщений Kafka, к
формату, позволяющему обрабатывать их в многопоточном режиме.
- **ПОДД-адаптер - Модуль подписок** - предназначен для управления подписками между Получателем данных (consumer) и Поставщиком данных
(producer).
- **BLOB-адаптер** - программный модуль Витрины данных, предназначен для получения доступа из Витрины данных к BLOB-объектам ведомства
(BLOB-объект - это специальный тип двоичных данных, предназначенный для хранения бинарных файлов: изображений, скан-копий документов,
текстовых файлов и т.д.).
- **DATA-Uploader** - Модуль исполнения асинхронных заданий обеспечивает обработку очереди файлов, используя следующие функциональные
особенности:
- обработка очереди файлов производится циклами;
- очередь файлов работает в режиме упорядочения процесса по принципу «первым пришел – первым обслужен»;
- каждый элемент в очереди файлов содержит UUID задания, имя витрины и таблицы, содержимое CSV-файла;
- файлы в очереди могут относится к разным витринам и/или разным таблицам одной витрины.
- **REST-Uploader** - Модуль асинхронной загрузки данных из сторонних источников реализован для обеспечения параллельной загрузки данных с
независимым масштабированием REST интерфейса.
- **REST-адаптер** - сервис, реализующий публикацию конечных точек API для обработки запросов с использованием спецификации OpenAPI версии 3.
Используется для сохранения обратной совместимости получения данных из ведомства по REST.
- **Counter-provider** - Сервис генерации уникального номера (Counter-Provider) позволяет создавать неповторяющиеся уникальные порядковые
номера для сквозной нумерации файлов в сервисе формирования документов Типового ПО Витрины данных конфигурации установки Стандарт.
- **СМЭВ QL Сервер** - СМЭВ QL Сервер — приложение для конфигурирования и запуска типового API извлечения данных из хранилищ под управлением
типового ПО «Витрина данных» от Минцифры (Ядро Prostore 6.1+). СМЭВ QL Сервер обладает характеристиками:
- поддержка множественных источников данных Prostore;
- выбор источника по условиям запроса;
- защита атрибутов модели данных по их предоставлению;
- автоматический параллелизм запросов к Prostore.
- **dtm-calcite-core** - библиотека Calcite осуществляет парсинг классов, которые используются в библиотеке podd-adapter-calcite.
**Дополнительные компоненты**
Рекомендуемое программное обеспечение для администрирования и мониторинга (не входит в поставку программы):
- **Агент СМЭВ4** - программное обеспечение, обеспечивающее сопряжение Типового ПО «Витрина данных» и ИС УВ с Ядром ПОДД СМЭВ;
- **Apache ZooKeeper** - необходим для поддержки информации о конфигурации и распределенной координации между компонентами Витрины, также
используется как сервисная база данных ProStore, для хранения технической информации (метаданных) от поступающих в Витрину данных запросах;
- **Брокер сообщений Kafka** - используется для непрерывной передачи сообщений между ПОДД-адаптером - Модуль исполнения запросов и Агентом
СМЭВ4;
- **Redis** - резидентная система управления базами данных класса NoSQL, работающая со структурами данных типа «ключ — значение»;
- **Grafana** - инструмент реализован в виде панели управления и мониторинга и позволяет визуализировать системные события программы на базе
собираемых метрик. Официальный сайт разработчика приложения: https://grafana.com/docs/
- **Prometheus** - используется как система мониторинга системных ресурсов программы. Связь компонентов реализована через HTTP. Данные
хранятся локально, в собственной TSBD базе, индексы хранятся в LevelDB. Метрики представляют собой time-series данные. Каждая метрика
состоит из имени метрики, временной метки и пары «ключ – значение». Визуализация осуществляется через подключение к Grafana. Официальный
сайт разработчика приложения: https://prometheus.io/.
- **Graylog** - программное обеспечение для управления лог-файлами. Официальный сайт разработчика приложения: https://www.graylog.org/.
- **МongoDB** - база данных *Graylog*. Официальный сайт разработчика приложения: https://www.mongodb.com/
- **Elasticsearch** - система поиска и аналитики, позволяет быстро в режиме реального времени хранить, искать и анализировать большие объемы
данных и сохраняет их для *Graylog*. Для передачи сообщений в *Graylog* использует *Filebeat*. Официальный сайт разработчика приложения:
https://www.elastic.co/elasticsearch/
- **Filebeat** - агент на сервере для отправки различных типов оперативных данных в *Elasticsearch*. Официальный сайт разработчика
приложения: https://www.elastic.co/elasticsearch/
- **Node_exporter** - процессы, обеспечивающие сбор и передачу системных метрик серверу *Prometheus*. Также, используется для сбора метрик
модулей *ПОДД-адаптера* и *CSV-uploader* см. https://github.com/prometheus/node_exporter.
- **Docker** - программное обеспечение для автоматизации развёртывания и управления программы в виртуальных средах с поддержкой
контейнеризации. Используется для установки Arenadata Cluster Manager (ADCM). Официальный сайт разработчика приложения:
https://www.docker.com/
.. _distr_components:
Состав компонентов в дистрибутиве
---------------------------------
Состав компонентов в дистрибутиве программы версии 1.13.1 приведен в таблице ниже (см. :numref:`tab_4`)
.. _tab_4:
.. table:: Состав компонентов в дистрибутиве программы
==================================== ========== ===============================
Наименование компонента Версия Техническое наименование
==================================== ========== ===============================
backup-manager 1.13.1 backup-manager:1.13.1
blob-adapter 1.13.1 blob-adapter:1.13.1
counter-provider 1.13.1 counter-provider:1.13.1
csv-uploader 1.13.1 csv-uploader:1.13.1
data-uploader 1.13.1 data-uploader:1.13.1
dtm-tools 1.16.1 dtm-tools:1.16.0
dtm-uploader 1.13.1 dtm-uploader:1.13.1
kafka-clickhouse-reader 0.8.0 kafka-clickhouse-reader:0.8.0
kafka-clickhouse-writer 0.8.0 kafka-clickhouse-writer:0.8.0
kafka-postgres-writer 0.8.0 kafka-postgres-writer:0.8.0
kafka-postgres-reader 0.8.0 kafka-postgres-reader:0.8.0
kafka-jet-writer 1.2.0 kafka-jet-writer:1.2.0
podd-adapter-group-repl 1.13.1 podd-adapter-group-repl:1.13.1
podd-adapter-group-tp 1.13.1 podd-adapter-group-tp:1.13.1
podd-adapter-import-tp 1.13.1 podd-adapter-import-tp:1.13.1
podd-adapter-mppr 1.13.1 podd-adapter-mppr:1.13.1
podd-adapter-mppw 1.13.1 podd-adapter-mppw:1.13.1
podd-adapter-query 1.13.1 podd-adapter-query:1.13.1
podd-adapter-replicator 1.13.1 podd-adapter-replicator:1.13.1
podd-avro-defragmentator 1.13.1 podd-avro-defragmentator:1.13.1
podd-adapter-query 1.13.1 podd-adapter-query:1.13.1
printable-form-service 1.13.1 printable-form-service:1.13.1
greenplum-kafka PXF connector reader 1.2.0 pxf-kafka:1.2.0
kafka-greenplum PXF connector writer 1.2.0 pxf-kafka-greenplum:1.2.0
query-execution 6.8.1 query-execution:6.8.1
rest-adapter 1.13.1 rest-adapter:1.13.1
rest-uploader 1.13.1 rest-uploader:1.13.1
smevql-server 1.13.1 smevql-server:1.13.1
СМЭВ3-адаптер 1.13.1 smev3-adapter:1.13.1
==================================== ========== ===============================
Дистрибутив программы версии 1.13.1 тестировался со следующими дополнительными компонентами:
.. table:: Дополнительные компоненты для тестирования программы
======================== ========== =========================
Наименование компонента Версия Техническое наименование
======================== ========== =========================
Агент СМЭВ4 3.11.0 Агент СМЭВ4:3.11.0
kafka 2.6.0 kafka:2.6.0
PostgreSQL 13.4 PostgreSQL:13.4
redis 7.0.11 redis:7.0.11
======================== ========== =========================
.. note:: Дополнительные компоненты не входят в дистрибутив Программы
Конкретная конфигурация Витрины данных определяется Участником взаимодействия на этапе реализации Витрины данных в составе
ИТ-инфраструктуры Участника взаимодействия.
Cвязи между составными частями
------------------------------
Взаимосвязи между составными частями программы приведены в :numref:`tab_gd_5`.
.. _tab_gd_5:
.. rst-class:: longtable
.. table:: Взаимодействие между составными частями
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| **Клиент** | **Сервер** | **Способ** | **Описание** |
| | | **взаимодействия** | |
+================+================+====================+=============================================================================================+
| Сервисная база | Prostore | TCP | Хранение/получение метаданных |
| данных | | | |
| Prostore | | | |
| (PostgreSQL) | | | |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| | СУБД хранилища | | |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| | Apache Kafka | | |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| | ПОДД Адаптер | | |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| | ETL | | |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| Prostore | Хранилище СУБД | REST API | Перенаправление запросов в конкретную СУБД |
| | | | |
| | | в зависимости | |
| | | | |
| | | от типа СУБД | |
| | | хранилища | |
| | | данных | |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| REST-адаптер | ProStore | REST API | Исполнение запросов |
| | | | |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| ETL | ProStore | Kafka | Исполнение запросов |
| | | (Диспетчер | |
| | | сообщений) | |
| | | | |
| | | JDBC | |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| Сервис | ProStore | REST API | Запрашивает данные для формирования ПФ |
| формирования | | | |
| документов | | | |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| СМЭВ3-адаптер | ProStore | Kafka | Исполнение запросов |
| | | (Диспетчер | |
| | | сообщений) | |
| | | | |
| | | REST API | |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| | BLOB-адаптер | HTTP | Запрашивает бинарное содержимое BLOB. |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| ПОДД-адаптер - | ProStore | REST API | - исполняет полученный запрос (LLR); |
| Модуль | | | |
| исполнения | | | - запрашивает структуру таблиц при подписании на репликацию (источник данных); |
| запросов | | | |
| | | | - создает структуру таблиц при подписании на репликацию (потребитель данных); |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| | Диспетчер | Kafka | - получает сообщение о закрытии новой дельты в ProStore (для репликации, источник данных); |
| | сообщений | (Диспетчер | |
| | Kafka | сообщений) | - обменивается управляющей информацией с модулем импорта ТП; |
| | | | |
| | | | - отправляет запросы, перенаправленные в Модуль MPPR. |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| ПОДД-адаптер - | ProStore | REST API | Подает запрос MPPR. |
| Модуль MPPR | | | |
| | | | |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| | Диспетчер | Kafka | - получает запросы данных ПОДД, перенаправленные ПОДД Адаптером; |
| | сообщений | | |
| | Kafka | | - получает запрошенные данные из ProStore (в формате MPPR); |
| | | | |
| | | | - передает запрошенные данные в ПОДД в формате ПОДД; |
| | | | |
| | | | - обменивается управляющей информацией с модулем импорта ТП. |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| ПОДД-адаптер - | ProStore | REST API | Подает запрос MPPW. |
| Модуль MPPW | | | |
| | | | |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| | Диспетчер | Kafka | - получает записываемые данные, подготовленные модулем Группировки данных ТП; |
| | сообщений | | |
| | Kafka | | - передает записываемые данные в ProStore (в формате MPPW); |
| | | | |
| | | | - обменивается управляющей информацией с модулем импорта ТП. |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| ПОДД-адаптер - | ProStore | REST API | - создает табличный параметр (перед выполнением запроса); |
| Модуль | | | |
| импорта ТП | | | - удаляет табличный параметр (после выполнения запроса). |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| | Диспетчер | Kafka | Обменивается управляющей информацией с модулями: |
| | сообщений | | |
| | Kafka | | - MPPW; |
| | | | |
| | | | - MPPR; |
| | | | |
| | | | - ПОДД Адаптер; |
| | | | |
| | | | - Группировки данных ТП. |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| ПОДД-адаптер - | Диспетчер | Kafka | - Получает сообщения с ТП, подготовленные Wrappers’ (из единого топика); |
| Модуль | сообщений | | |
| Группировки | Kafka | | - создает отдельные топики для каждого ТП и передает в них сообщения с данными этого ТП. |
| данных ТП | | | |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| ПОДД-адаптер - | Диспетчер | Kafka | Передает сообщения с ТП, в формате пригодном для параллельной обработки |
| Wrapper | сообщений | | |
| | Kafka | | |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| | Сервисная СУБД | TCP | Сохраняет список обрабатываемых сообщений ТП |
| | Zookeeper | | |
| | | | Хранение метаданных о подписках на репликацию (источник данных). |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
Модули Витрины данных
-----------------------
.. note:: Описание настроек модулей, процессы запуска и остановки модуля см. «Руководстве администратора».
СМЭВ QL Сервер
~~~~~~~~~~~~~~~
.. Описание СМЭВ QL Сервер
.. Подключаем файл с описанием СМЭВ QL Сервер
.. include:: ../../modules/smev-ql/doc/smev_ql_doc.rst
СМЭВ3-адаптер
~~~~~~~~~~~~~
.. Описание СМЭВ3-адаптер
.. Подключаем файл с описанием СМЭВ3-адаптер
.. include:: ../../modules/smev3-adapter/doc/smev3_adapter_doc.rst
CSV-Uploader
~~~~~~~~~~~~~~~~~
.. Описание CSV-Uploader
.. Подключаем файл с описанием CSV-Uploader
.. include:: ../../modules/csv-uploader/doc/csv_uploader_doc.rst
ПОДД-адаптер-Модуль исполнения запросов
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. Описание ПОДД-адаптер-Модуль исполнения запросов
.. Подключаем файл с описанием ПОДД-адаптер-Модуль исполнения запросов
.. include:: ../../modules/podd-adapter-query/doc/podd_adapter_query_doc.rst
ПОДД-адаптер – Модуль MPPR
~~~~~~~~~~~~~~~~~~~~~~~~~~
.. Описание ПОДД-адаптер – Модуль MPPR
.. Подключаем файл с описанием ПОДД-адаптер – Модуль MPPR
.. include:: ../../modules/podd-adapter-mppr/doc/podd_adapter_mppr_doc.rst
ПОДД-адаптер-Модуль MPPW
~~~~~~~~~~~~~~~~~~~~~~~~
.. Описание ПОДД-адаптер-Модуль MPPW
.. Подключаем файл с описанием ПОДД-адаптер-Модуль MPPW
.. include:: ../../modules/podd-adapter-mppw/doc/podd_adapter_mppw_doc.rst
ПОДД-адаптер - Модуль импорта табличных параметров
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. Описание ПОДД-адаптер - Модуль импорта табличных параметров
.. Подключаем файл с описанием ПОДД-адаптер - Модуль импорта табличных параметров
.. include:: ../../modules/podd-adapter-import-tp/doc/podd_adapter_import_tp_doc.rst
ПОДД-адаптер - Модуль группировки данных табличных параметров
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. Описание ПОДД-адаптер - Модуль группировки данных табличных параметров
.. Подключаем файл с описанием ПОДД-адаптер - Модуль группировки данных табличных параметров
.. include:: ../../modules/podd-adapter-group-tp/doc/podd_adapter_group_tp_doc.rst
ПОДД-адаптер - Wrapper
~~~~~~~~~~~~~~~~~~~~~~
.. Описание ПОДД-адаптер - Wrapper
.. Подключаем файл с описанием ПОДД-адаптер - Wrapper
.. include:: ../../modules/podd-avro-defragmentator/doc/podd_avro_defragmentator_doc.rst
Модуль группировки чанков репликации
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. Описание модуля
.. Подключаем файл с описанием модуля
.. include:: ../../modules/podd-adapter-group-repl/doc/podd_adapter_group_repl_doc.rst
DATA-Uploader - Модуль исполнения асинхронных заданий
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. Описание DATA-Uploader - Модуль исполнения асинхронных заданий
.. Подключаем файл с описанием DATA-Uploader - Модуль исполнения асинхронных заданий
.. include:: ../../modules/data-uploader/doc/data_uploader_doc.rst
REST-Uploader - Модуль асинхронной загрузки данных из сторонних источников
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. Описание REST-Uploader - Модуль асинхронной загрузки данных из сторонних источников
.. Подключаем файл с описанием REST-Uploader - Модуль асинхронной загрузки данных из сторонних источников
.. include:: ../../modules/rest-uploader/doc/rest_uploader_doc.rst
.. Подключаем файл с описанием ФЛК
.. include:: ../../modules/rest-uploader/doc/rest_uploader_format_control.rst
ПОДД-адаптер - Модуль подписок
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. Описание ПОДД-адаптер - Модуль подписки
.. Подключаем файл с описанием ПОДД-адаптер - Модуль подписки
.. include:: ../../modules/podd-adapter-replicator/doc/podd_adapter_replicator_doc.rst
BLOB-адаптер
~~~~~~~~~~~~
.. Описание Блоб-адаптер
.. Подключаем файл с описанием БЛОБ-адаптер
.. include:: ../../modules/blob-adapter/doc/blob_adapter_doc.rst
Сервис формирования документов
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. Описание Сервис формирования документов
.. Подключаем файл с описанием Сервис формирования документов
.. include:: ../../modules/printable-form-service/doc/printable_form_service_doc.rst
REST-адаптер
~~~~~~~~~~~~
Схема взаимодействия через СМЭВ3-адаптер
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
REST-адаптер представляет возможность подключения Внешней ИС к Витрине данных через REST-адаптер (см. :numref:`static_uml_modules_rest`).
.. _static_uml_modules_rest:
.. figure:: /_static/uml/modules/rest.png
:align: center
:alt: Взаимодействие Внешней ИС через REST-адаптер
Взаимодействие Внешней ИС через REST-адаптер
Внешняя ИС формирует REST-запрос и отправляет его в REST-адаптер.
REST-адаптер:
- На основании своих настроек преобразует полученный REST-запрос в SQL-запрос.
- Отправляет сформированный SQL-запрос в Витрину данных.
- Преобразует полученный от Витрины данных ответ на SQL-запрос в REST-ответ.
- Отправляет сформированный REST-ответ Внешней ИС.
При взаимодействии через REST-адаптер Программа выполняет следующие основные операции по обработке данных:
- предоставляет программный интерфейс к конечным точкам API по протоколу HTTP;
- конечная точка доступа поддерживает конфигурирование, которое позволяет:
- с использованием атрибутов HTTP-запроса построить и выполнить SQL-запросы из Внешней ИС к программе;
- с использованием атрибутов HTTP-запроса и результатов SQL-запросов построить и отправить ответ на HTTP-запрос из программы к Внешней ИС;
- документировать сконфигурированный API с использованием спецификации OpenAPI версии 3.
Сервис генерации уникального номера (Counter-Provider)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. Описание Сервис генерации уникального номера
.. Подключаем файл с описанием Сервис генерации уникального номера
.. include:: ../../modules/counter-provider/doc/counter_provider_doc.rst
Связи с другими программами
---------------------------
Взаимодействие с другими программами происходит путем вызова соответствующих модулей программы:
Связи программы с другими программами приведены в :numref:`tab_gd_6`.
.. _tab_gd_6:
.. table:: Связи с другими программами
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
| **Клиент** | **Сервер** | **Способ | **Описание** |
| | | взаимодействия** | |
+================+================+==================+================================================================================================================+
| Сервис | Агент СМЭВ4 | REST | Передает сформированные документы для формирования ЭП. |
| формрования | | | |
| документов | | | |
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
| ПОДД-адаптер | Агент СМЭВ4 | Через брокера | Получает запросы и предоставляет ответы на них согласно протоколу ПОДД: |
| - Модуль | | сообщений | |
| исполнения | | Kafka | - запрос/подзапрос на получение публикуемых данных (в т. ч. с использованием ТП или в режиме оценки запроса); |
| запросов | | | |
| | | | - предоставление структуры таблиц при подписании на репликацию (источник данных); |
| | | | |
| | | | - создание структуры таблиц при подписании на репликацию (потребитель данных); |
| | | | |
| | | | - предоставление реплицируемых данных (источник данных); |
| | | | |
| | | | - получение реплицируемых данных (потребитель данных); |
| | | | |
| | | | - запрос генерации ПФ. |
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
| ПОДД-адаптер - | Агент СМЭВ4 | Через брокера | Предоставляет Результат запрос/подзапрос на получение публикуемых данных |
| Модуль MPPR | | сообщений | |
| | | Kafka | (в т. ч. с использованием ТП), делегированного ПОДД-адаптером. |
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
| ПОДД-адаптер | Агент СМЭВ4 | Через брокера | Получает сообщения с ТП, подготовленные Агентом СМЭВ4 |
| - Wrapper | | сообщений | |
| | | Kafka | |
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
| BLOB-адаптер | Агент СМЭВ4 | Через брокера | - Получает запрос на предоставление содержимого BLOB-объекта; |
| | | сообщений | |
| | | Kafka | - Передает бинарное содержимое запрошенного BLOB-объекта. |
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
| | Хранилище BLOB | HTTP | Запрашивает бинарное содержимое BLOB. |
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
| СМЭВ3-адаптер | СМЭВ3 | SOAP | - Получает запрос вида сведений от СМЭВ3; |
| | | | |
| | | | - Передает Результат запроса вида сведений; |
| | | | |
| | | | - Инициативно рассылает сведения об изменении публикуемых данных. |
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
| | FTP-сервер | FTP | Загружает на сервер бинарное содержимое запрошенных BLOB-объектов. |
| | СМЭВ3 | | |
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
| | VipNet | REST | - Проверяет ЭП получаемых от СМЭВ3 сообщений; |
| | | | |
| | | | - Формирует ЭП для отправляемых в СМЭВ сообщений. |
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
| ETL | Файловое | S3, FTP и т.п. | Считывание CSV файлов с данными, импортируемыми в витрину |
| | хранилище | | |
| | ведомства | | |
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
| | БД ведомства | JDBC Driver | Считывание данных, импортируемых в витрину |
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
| Внутренняя ИС | Сервер | REST API | Имитация поведения, существующего REST API |
| Ведомств | конечных точек | | |
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
| Внутренняя ИС | Ядро витрины | JDBC Driver | Доступ к БД ведомства |
| Ведомств | | | |
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
Карта портов
------------
Карта портов компонентов программы представлена в :numref:`tab_gd_7`.
.. _tab_gd_7:
.. rst-class:: longtable
.. table:: Карта портов
+-----------------------+---------------------------------------------+
| **Компонент** | **Описание** |
+=======================+=============================================+
| podd-adapter-query | Порт: 8083 |
| | |
| | Протокол: HTTP |
| | |
| | Описание: Взаимодействие с ПОДД-адаптером |
+-----------------------+---------------------------------------------+
| query-execution | Порт: 8080 |
| | |
| | Протокол: HTTP |
| | |
| | Описание: номер порта сервиса метрик |
| | |
| | Порт: 9090 |
| | |
| | Протокол: TCP |
| | |
| | Описание: номер порта сервиса исполнения |
| | запросов |
+-----------------------+---------------------------------------------+
| status_monitor | Порт: 9095 |
| | |
| | Протокол: HTTP |
| | |
| | Описание: сетевой адрес и путь для |
| | получения информации о статусе сервиса |
+-----------------------+---------------------------------------------+
| prometheus | Порт: 9090 |
| | |
| | Протокол: HTTP |
| | |
| | Описание: Подключение к Prometheus WEB UI |
+-----------------------+---------------------------------------------+
| grafana | Порт: 3000 |
| | |
| | Протокол: HTTP |
| | |
| | Описание: WEB-интерфейс для работы c |
| | Grafana |
+-----------------------+---------------------------------------------+
| node_exporter | Порт: 9100 |
| | |
| | Протокол: HTTP |
| | |
| | Описание: Порт для загрузки метрик |
+-----------------------+---------------------------------------------+
| filebeat | Порт: нет открытых портов |
| | |
| | Протокол: - |
| | |
| | Описание: - |
+-----------------------+---------------------------------------------+
| mongodb | Порт: 27017 |
| | |
| | Протокол:TCP |
| | |
| | Описание: Подключение к MongoDB. Порт по |
| | умолчанию для экземпляров mongod и mongos. |
| | |
| | Вы можете изменить этот порт с помощью port |
| | или ``--port``. |
| | |
| | Порт: 27018 |
| | |
| | Протокол: TCP |
| | |
| | Описание: Подключение к MongoDB. Порт по |
| | умолчанию для mongod при запуске с |
| | |
| | параметром командной строки ``--shardsvr`` |
| | или значением ``shardsvr`` для параметра |
| | ``clusterRole`` в файле конфигурации |
+-----------------------+---------------------------------------------+
| elasticsearch | Порт: 9200 |
| | |
| | Протокол: HTTP |
| | |
| | Описание: Подключение к Elasticsearch. |
+-----------------------+---------------------------------------------+
| kafka_postgres_writer | Порт: 8096 |
| | |
| | Протокол: HTTP |
| | |
| | Описание: Порт используется для записи |
| | топиков Kafka в ProStore |
+-----------------------+---------------------------------------------+
| kafka_postgres_reader | Порт: 8094 |
| | |
| | Протокол: HTTP |
| | |
| | Описание: Порт используется для чтения |
| | топиков Kafka из ProStore |
+-----------------------+---------------------------------------------+
| postgres | Порт: 5432 |
| | |
| | Протокол: TCP PostgresSQL Protocol |
| | |
| | Описание: Источник данных SQL |
+-----------------------+---------------------------------------------+
| kafka | Порт: 9092 |
| | |
| | Протокол: Порт используется для |
| | |
| | Описание: TCP |
+-----------------------+---------------------------------------------+
| zookeeper | Порт: 2181 |
| | |
| | Протокол: TCP |
| | |
| | Описание: Порт используется для доступа к |
| | Zookeeper |
+-----------------------+---------------------------------------------+