Структура Витрины данных
=============================
.. _components:
Составные части Витрины данных
--------------------------------
Программа имеет модульную архитектуру и построена на базе отдельных компонентов (включая разработки сторонних производителей).
Общую схему взаимосвязей компонентов можно просмотреть в разделе :ref:`system_architecture`.
.. tab-set::
.. tab-item:: Составные части конфигурации Стандарт
**Основные компоненты**
- **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.
- **Модуль группировки чанков репликации** - группирует фрагменты данных подписки, полученные из топика ``delta.in.rq`` и размещает их во временные топики с именем
``mppw.data.[hash (requestId+subscriptionId)].deltaNum.streamNum``, отправляет команду в топик ``subscription.in`` модулю подписок при получении ``lastChunk`` на
загрузку сгруппированных фрагментов (по каждой дельте каждого стрима).
- **ПОДД-адаптер - Модуль группировки данных табличных параметров** - предназначен для группировки данных при выполнении запросов с
табличными параметрами.
- **ПОДД-адаптер - Модуль импорта табличных параметров** - предназначен для создания временных таблиц при выполнении временных запросов с
табличными параметрами.
- **ПОДД-адаптер - Avro-defragmentator** - образует пакеты с данными табличных параметров, поступающие от Агента ПОДД в брокер сообщений 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** - программное обеспечение, обеспечивающее сопряжение Типового ПО «Витрина данных» и ИС УВ с Ядром ПОДД СМЭВ.
- **Брокер сообщений Kafka** - используется для непрерывной передачи сообщений между ПОДД-адаптером - Модуль исполнения запросов и Агентом
СМЭВ4.
- **Apache ZooKeeper** - необходим для поддержки информации о конфигурации и распределенной координации между компонентами Витрины, также
используется как сервисная база данных ProStore, для хранения технической информации (метаданных) от поступающих в Витрину данных запросах.
- **Docker** - программное обеспечение для автоматизации развёртывания и управления программы в виртуальных средах с поддержкой
контейнеризации. Используется для установки Arenadata Cluster Manager (ADCM). Официальный сайт разработчика приложения:
https://www.docker.com/.
- **Elasticsearch** - система поиска и аналитики, позволяет быстро в режиме реального времени хранить, искать и анализировать большие объемы
данных и сохраняет их для Graylog. Для передачи сообщений в Graylog использует Filebeat. Официальный сайт разработчика приложения:
https://www.elastic.co/elasticsearch/.
- **Filebeat** - агент на сервере для отправки различных типов оперативных данных в Elasticsearch. Официальный сайт разработчика
приложения: https://www.elastic.co/elasticsearch/.
- **Grafana** - инструмент реализован в виде панели управления и мониторинга и позволяет визуализировать системные события программы на базе
собираемых метрик. Официальный сайт разработчика приложения: https://grafana.com/docs/.
- **Graylog** - программное обеспечение для управления лог-файлами. Официальный сайт разработчика приложения: https://www.graylog.org/;
- **МongoDB** - база данных Graylog. Официальный сайт разработчика приложения: https://www.mongodb.com/.
- **Node_exporter** - процессы, обеспечивающие сбор и передачу системных метрик серверу Prometheus. Также, используется для сбора метрик
модулей ПОДД-адаптера и CSV-uploader см. https://github.com/prometheus/node_exporter.
- **Prometheus** - используется как система мониторинга системных ресурсов программы. Связь компонентов реализована через HTTP. Данные
хранятся локально, в собственной TSBD базе, индексы хранятся в LevelDB. Метрики представляют собой time-series данные. Каждая метрика
состоит из имени метрики, временной метки и пары «ключ – значение». Визуализация осуществляется через подключение к Grafana. Официальный
сайт разработчика приложения: https://prometheus.io/.
- **Redis** - резидентная система управления базами данных класса NoSQL, работающая со структурами данных типа «ключ — значение».
.. tab-item:: Составные части конфигурации Лайт
**Основные компоненты**
- **ProStore** - основной компонент программы с открытым исходным кодом, обеспечивает единый интерфейс к хранилищу разнородных данных.
Определяет структуры данных, запись и чтение данных Витрины. Позволяет работать со входящими в состав хранилища СУБД одинаковым образом,
используя единый синтаксис запросов SQL и единую логическую схему данных. ProStore включает следующие компоненты:
- **Сервис исполнения запросов** — анализирует и исполняет SQL-запросы; предоставляет REST API для JDBC-драйвера и взаимодействует с сервисом
мониторинга статусов Kafka по REST API. В свою очередь состоит из следующих компонентов:
- Коннектор **Kafka-Postgres reader** - считывает данные из PostgreSQL и передает их в брокер сообщений Kafka;
- Коннектор **Kafka-Postgres writer** - записывает данные из брокера сообщений Kafka в PostgreSQL;
- **Слой адаптеров** - общее название логических модулей программы, которые обеспечивают подключение к ПОДД СМЭВ, как информационной системы
участника взаимодействия. В зависимости от предназначения логические модули обеспечивают загрузку запросов из очереди
`ИС УВ `_
в `ПОДД СМЭВ `_ , формирование и отправку
ответов в ПОДД СМЭВ, инициативное формирование уведомлений об изменении данных в экземпляре ПО «Витрина данных НСУД», отправку уведомлений
в ПОДД СМЭВ, регистрацию реплики данных ИС УВ, подписки на репликацию и поддержку реплики в актуальном состоянии.
**Компоненты, входящие в состав слоя адаптеров**
- **CSV-Uploader** - программный модуль Витрины данных, предназначен для загрузки и выгрузки csv-файлов со структурой Витрины и csv-шаблонов
с демо-шаблонами структуры Витрины, а также просмотра Журнала операций.
- **ПОДД-адаптер - Модуль исполнения запросов** - предназначен для исполнения запросов ПОДД СМЭВ (через протокол коммуникации Агент СМЭВ4).
- **ПОДД-адаптер – Модуль MPPR** - предназначен для чтения данных в многопоточном режиме.
- **ПОДД-адаптер - Модуль MPPW** - исполняет запросы в многопоточном режиме, записывающие данные в Prostore.
- **Модуль группировки чанков репликации** - группирует фрагменты данных подписки, полученные из топика ``delta.in.rq`` и размещает их во временные топики с именем
``mppw.data.[hash (requestId+subscriptionId)].deltaNum.streamNum``, отправляет команду в топик ``subscription.in`` модулю подписок при получении ``lastChunk`` на
загрузку сгруппированных фрагментов (по каждой дельте каждого стрима).
- **ПОДД-адаптер - Модуль подписок** - предназначен для управления подписками между Получателем данных (consumer) и Поставщиком данных
(producer).
**Дополнительные компоненты**
- **Apache ZooKeeper** — необходим для поддержки информации о конфигурации и распределенной координации между компонентами Витрины, также используется как сервисная
база данных ProStore, для хранения технической информации (метаданных) от поступающих в Витрину данных запросах.
- **Брокер сообщений Kafka** — используется для непрерывной передачи сообщений между:
- **CSV-uploader** и **ProStore**;
- **ПОДД-адаптером - Модуль исполнения запросов** и **Агент СМЭВ4**.
- **Ansible** — платформа удалённого управления конфигурациями программного обеспечения, предназначенная для упрощения развёртывания |Product Lite| через создание
специальных сценариев. Официальный сайт разработчика приложения: https://www.ansible.com/.
- **Docker** — программное обеспечение для автоматизации развёртывания и управления программы в виртуальных средах с поддержкой контейнеризации. Контейнер
позволяет производить изолированный запуск ОС с подключённой файловой системой из образа, изолированно разворачивать приложения и реализовывать микросервисы.
Настройки среды хранятся в GitHub, обеспечивая единую точку управления конфигурациями. Может быть использован для для развёртывания тестового окружения
|Product Lite|, без прерывания работы сервисов в продуктовой среде. Официальный сайт разработчика приложения: https://www.docker.com/.
- **Elasticsearch** — утилита полнотекстового поиска и аналитики, которая позволяет быстро в режиме реального времени хранить, искать и анализировать большие
объемы данных и сохраняет их для Graylog. Для передачи сообщений в Graylog использует Filebeat. Официальный сайт разработчика приложения: https://www.elastic.co/elasticsearch/.
- **Filebeat** — агент на сервере для отправки различных типов оперативных данных в Elasticsearch. Официальный сайт разработчика приложения:
https://www.elastic.co/elasticsearch/.
- **Grafana** — инструмент реализован в виде панели управления и мониторинга и позволяет визуализировать системные события программы на базе собираемых метрик.
Официальный сайт разработчика приложения: https://grafana.com/docs/.
- **Graylog** — программное обеспечение для управления лог-файлами. Официальный сайт разработчика приложения: https://www.graylog.org/.
- **МongoDB** — база данных Graylog. Официальный сайт разработчика приложения: https://www.mongodb.com/.
- **Node_exporter** — процессы, обеспечивающие сбор и передачу системных метрик серверу Prometheus. Также, используется для сбора метрик ПОДД-адаптера и
CSV-uploader см. https://github.com/prometheus/node_exporter.
- **Portainer** — web-приложение для управления docker-контейнерами. Официальный сайт разработчика приложения: https://www.portainer.io/.
- **Prometheus** — используется как система мониторинга системных ресурсов |Product Lite|. Связь компонентов реализована через HTTP. Данные хранятся локально, в
собственной TSBD базе, индексы хранятся в LevelDB. Метрики представляют собой time-series данные. Каждая метрика состоит из имени метрики, временной метки и
пары «ключ – значение». Визуализация осуществляется через подключение к Grafana. Официальный сайт разработчика приложения: https://prometheus.io/.
- **PostrgeSQL** — база данных ProStore.
.. _distr_components:
Состав компонентов в дистрибутиве
---------------------------------
.. tab-set::
.. tab-item:: Состав компонентов в дистрибутиве конфигурации Стандарт
Состав компонентов в дистрибутиве конфигурации Стандарт версии 1.14.0 приведен в таблице ниже (см. :numref:`tab_components_standart`)
.. _tab_components_standart:
.. table:: Состав компонентов в дистрибутиве программы
==================================== ========== ================================
Наименование компонента Версия Техническое наименование
==================================== ========== ================================
query-execution 6.10 query-execution:6.10
backup-manager 1.14.0 backup-manager:1.14.0
blob-adapter 1.14.0 blob-adapter:1.14.0
counter-provider 1.14.0 counter-provider:1.14.0
csv-uploader 1.14.0 csv-uploader:1.14.0
data-uploader 1.14.0 data-uploader:1.14.0
dtm-uploader 1.14.0 dtm-uploader:1.14.0
podd-adapter-group-repl 1.14.0 podd-adapter-group-repl:1.14.0
podd-adapter-group-tp 1.14.0 podd-adapter-group-tp:1.14.0
podd-adapter-import-tp 1.14.0 podd-adapter-import-tp:1.14.0
podd-adapter-mppr 1.14.0 podd-adapter-mppr:1.14.0
podd-adapter-mppw 1.14.0 podd-adapter-mppw:1.14.0
podd-adapter-query 1.14.0 podd-adapter-query:1.14.0
podd-adapter-replicator 1.14.0 podd-adapter-replicator:1.14.0
podd-avro-defragmentator 1.14.0 podd-avro-defragmentator:1.14.0
printable-form-service 1.14.0 printable-form-service:1.14.0
rest-adapter 1.14.0 rest-adapter:1.14.0
rest-uploader 1.14.0 rest-uploader:1.14.0
smevql-server 1.14.0 smevql-server:1.14.0
СМЭВ3-адаптер 1.14.0 smev3-adapter:1.14.0
dtm-tools 1.16.1 dtm-tools:1.16.0
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
kafka-clickhouse-reader 0.9.0 kafka-clickhouse-reader:0.9.0
kafka-clickhouse-writer 0.9.0 kafka-clickhouse-writer:0.9.0
kafka-postgres-writer 0.9.0 kafka-postgres-writer:0.9.0
kafka-postgres-reader 0.9.0 kafka-postgres-reader:0.9.0
kafka-jet-writer 1.2.0 kafka-jet-writer:1.2.0
==================================== ========== ================================
Дистрибутив программы версии 1.14.0 тестировался с компонентами, приведенными в :numref:`tab_test_components`
.. _tab_test_components:
.. 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:: Дополнительные компоненты не входят в дистрибутив Программы
Конкретная конфигурация Витрины данных определяется Участником взаимодействия на этапе реализации Витрины данных в составе
ИТ-инфраструктуры Участника взаимодействия.
.. tab-item:: Состав компонентов в дистрибутиве конфигурации Лайт
Состав компонентов в дистрибутиве конфигурации Лайт версии 1.14.0 приведен в таблице ниже (см. :numref:`tab_components_lite`)
.. Проверить соответствие компонентов и версий в Portainer (документ "Установка программы")
.. _tab_components_lite:
.. table:: Состав компонентов в дистрибутиве программы
=========================== ========== ==============================
**Наименование компонента** **Версия** **Техническое наименование**
=========================== ========== ==============================
graylog 4.3.15 graylog:4.3.15
prometheus 2.34.0 prometheus:2.34.0
query-execution 6.10 query-execution:6.10
podd-adapter-replicator 1.14.0 podd-adapter-replicator:1.14.0
podd-adapter-mppw 1.14.0 podd-adapter-mppw:1.14.0
podd-adapter-mppr 1.14.0 podd-adapter-mppr:1.14.0
podd-adapter-group-repl 1.14.0 podd-adapter-group-repl:1.14.0
podd-adapter-query 1.14.0 podd-adapter:1.14.0
csv-uploader 1.14.0 csv-uploader:1.14.0
kafka-jet-writer 1.2.0 kafka-jet-writer:1.2.0
grafana 9.2.15 grafana:9.2.15
node_exporter 1.2.1 node_exporter:1.2.1
filebeat 7.10.2 filebeat:7.10.2
mongo 4.4 mongo:4.4
opensearch 1.3.14 opensearch:1.3.14
kafka-postgres-writer 0.8.0 kafka-postgres-writer:0.8.0
kafka-postgres-reader 0.8.0 kafka-postgres-reader:0.8.0
postgres 13.4 postgres:13.4
kafka 2.13 kafka:2.13-2.6.0-alt-p10-r3
zookeeper 3.5.7 zookeeper:3.5.7-alt-p10-r3
portainer 2.14.0 portainer:2.14.0
=========================== ========== ==============================
Cвязи между компонентами
------------------------------
.. tab-set::
.. tab-item:: Cвязи между компонентами конфигурации Стандарт
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 | - Получает сообщения с ТП, подготовленные Avro-defragmentator (из единого топика); |
| Модуль | сообщений | | |
| Группировки | Kafka | | - создает отдельные топики для каждого ТП и передает в них сообщения с данными этого ТП. |
| данных ТП | | | |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| ПОДД-адаптер - | Диспетчер | Kafka | Передает сообщения с ТП, в формате пригодном для параллельной обработки |
| Avro- | сообщений | | |
| defragmentator | Kafka | | |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
| | Сервисная СУБД | TCP | Сохраняет список обрабатываемых сообщений ТП |
| | Zookeeper | | |
| | | | Хранение метаданных о подписках на репликацию (источник данных). |
+----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+
.. tab-item:: Cвязи между компонентами конфигурации Лайт
Cвязи между компонентами конфигурации Лайт приведены в :numref:`tab_3_gd_lite`.
.. _tab_3_gd_lite:
.. table:: Взаимодействие между составными частями
+------------------+----------------+---------------------------+--------------------------------------+
| **Клиент** | **Сервер** | **Способ взаимодействия** | **Описание** |
+==================+================+===========================+======================================+
| ПОДД-адаптер — | ProStore | JDBC | Исполнение запросов. |
| | | | |
| Модуль | | Брокер сообщений Kafka | |
| исполнения | | | |
| запросов | | | |
+------------------+----------------+---------------------------+--------------------------------------+
| CSV-Uploader | ProStore | JDBC | Управление логической структурой |
| | | | таблиц. |
| | | | |
| | | Брокер сообщений Kafka | Загрузка публикуемых данных в |
| | | | Витрину. |
+------------------+----------------+---------------------------+--------------------------------------+
| ProStore | СУБД | JDBC | Управление логической структурой |
| | PostgreSQL | | таблиц. |
| | | | |
| | | | Исполнение запросов. |
| | | | |
| | | | Управление загрузкой публикуемых |
| | | | данных в Витрину. |
+------------------+----------------+---------------------------+--------------------------------------+
| ПОДД- | Агент ПОДД | Через брокера сообщений | Предоставляет |
| адаптер — Модуль | | Kafka | Результат |
| MPPR | | | запрос/подзапрос |
| | | | на получение публикуемых |
| | | | данных |
| | | | |
| | | | (в т.ч. с использованием ТП), |
| | | | делегированного ПОДД-адаптером. |
+------------------+----------------+---------------------------+--------------------------------------+
Модули Витрины данных
-----------------------
.. note:: Описание настроек модулей, процессы запуска и остановки модуля см. «Руководстве администратора».
ПОДД-адаптер - Модуль исполнения запросов
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт и Лайт
.. Описание ПОДД-адаптер-Модуль исполнения запросов
.. Подключаем файл с описанием ПОДД-адаптер-Модуль исполнения запросов
.. include:: ../../modules/podd-adapter-query/doc/podd_adapter_query_doc.rst
ПОДД-адаптер - Модуль подписок
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт и Лайт
.. Описание ПОДД-адаптер - Модуль подписки
.. Подключаем файл с описанием ПОДД-адаптер - Модуль подписки
.. include:: ../../modules/podd-adapter-replicator/doc/podd_adapter_replicator_doc.rst
ПОДД-адаптер – Модуль MPPR
~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт и Лайт
.. Описание ПОДД-адаптер – Модуль MPPR
.. Подключаем файл с описанием ПОДД-адаптер – Модуль MPPR
.. include:: ../../modules/podd-adapter-mppr/doc/podd_adapter_mppr_doc.rst
ПОДД-адаптер - Модуль MPPW
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт и Лайт
.. Описание ПОДД-адаптер-Модуль MPPW
.. Подключаем файл с описанием ПОДД-адаптер-Модуль MPPW
.. include:: ../../modules/podd-adapter-mppw/doc/podd_adapter_mppw_doc.rst
ПОДД-адаптер - Модуль группировки чанков репликации
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт и Лайт
.. Описание модуля
.. Подключаем файл с описанием модуля
.. include:: ../../modules/podd-adapter-group-repl/doc/podd_adapter_group_repl_doc.rst
CSV-Uploader
~~~~~~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт и Лайт
.. Описание CSV-Uploader
.. Подключаем файл с описанием CSV-Uploader
.. include:: ../../modules/csv-uploader/doc/csv_uploader_doc.rst
ПОДД-адаптер - Модуль импорта табличных параметров
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт
.. Описание ПОДД-адаптер - Модуль импорта табличных параметров
.. Подключаем файл с описанием ПОДД-адаптер - Модуль импорта табличных параметров
.. include:: ../../modules/podd-adapter-import-tp/doc/podd_adapter_import_tp_doc.rst
ПОДД-адаптер - Модуль группировки данных табличных параметров
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт
.. Описание ПОДД-адаптер - Модуль группировки данных табличных параметров
.. Подключаем файл с описанием ПОДД-адаптер - Модуль группировки данных табличных параметров
.. include:: ../../modules/podd-adapter-group-tp/doc/podd_adapter_group_tp_doc.rst
ПОДД-адаптер - Avro-defragmentator
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт
.. Описание ПОДД-адаптер - Avro-defragmentator
.. Подключаем файл с описанием ПОДД-адаптер - Avro-defragmentator
.. include:: ../../modules/podd-avro-defragmentator/doc/podd_avro_defragmentator_doc.rst
DATA-Uploader - Модуль исполнения асинхронных заданий
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт
.. Описание DATA-Uploader - Модуль исполнения асинхронных заданий
.. Подключаем файл с описанием DATA-Uploader - Модуль исполнения асинхронных заданий
.. include:: ../../modules/data-uploader/doc/data_uploader_doc.rst
REST-Uploader - Модуль асинхронной загрузки данных из сторонних источников
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт
.. Описание REST-Uploader - Модуль асинхронной загрузки данных из сторонних источников
.. Подключаем файл с описанием REST-Uploader - Модуль асинхронной загрузки данных из сторонних источников
.. include:: ../../modules/rest-uploader/doc/rest_uploader_doc.rst
.. Подключаем файл с описанием ФЛК
.. include:: ../../modules/rest-uploader/doc/rest_uploader_format_control.rst
BLOB-адаптер
~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт
.. Описание Блоб-адаптер
.. Подключаем файл с описанием БЛОБ-адаптер
.. include:: ../../modules/blob-adapter/doc/blob_adapter_doc.rst
Сервис формирования документов
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт
.. Описание Сервис формирования документов
.. Подключаем файл с описанием Сервис формирования документов
.. include:: ../../modules/printable-form-service/doc/printable_form_service_doc.rst
СМЭВ QL Сервер
~~~~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт
.. Описание СМЭВ QL Сервер
.. Подключаем файл с описанием СМЭВ QL Сервер
.. include:: ../../modules/smev-ql/doc/smev_ql_doc.rst
СМЭВ3-адаптер
~~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт
.. Описание СМЭВ3-адаптер
.. Подключаем файл с описанием СМЭВ3-адаптер
.. include:: ../../modules/smev3-adapter/doc/smev3_adapter_doc.rst
REST-адаптер
~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт
Схема взаимодействия через СМЭВ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)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт
.. Описание Сервис генерации уникального номера
.. Подключаем файл с описанием Сервис генерации уникального номера
.. include:: ../../modules/counter-provider/doc/counter_provider_doc.rst
ETL - Модуль загрузки/ удаления данных
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note:: Модуль входит в состав конфигурации Стандарт
.. Описание Модуль загрузки/ удаления данных
.. Подключаем файл с описанием Модуль загрузки/ удаления данных
.. include:: ../../modules/etl/doc/etl_doc.rst
Backup manager - утилита резервного копирования
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note:: Утилита входит в состав конфигурации Стандарт
.. Описание Backup manager
.. Подключаем файл с описанием Backup manager
.. include:: ../../modules/backup-manager/doc/backup_manager_doc.rst
Подробное описание утилиты и работы с ней приведено в разделе :ref:`backup` Руководства администратора ПО «Витрина данных НСУД».
Связи с другими программами
---------------------------
.. tab-set::
.. tab-item:: Связи с другими программами конфигурации Стандарт
Взаимодействие с другими программами происходит путем вызова соответствующих модулей программы:
Связи программы с другими программами приведены в :numref:`tab_interaction` .
.. _tab_interaction:
.. table:: Связи с другими программами
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
| **Клиент** | **Сервер** | **Способ | **Описание** |
| | | взаимодействия** | |
+================+================+==================+================================================================================================================+
| Сервис | Агент СМЭВ4 | REST | Передает сформированные документы для формирования ЭП. |
| формрования | | | |
| документов | | | |
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
| ПОДД-адаптер | Агент СМЭВ4 | Через брокера | Получает запросы и предоставляет ответы на них согласно протоколу ПОДД: |
| - Модуль | | сообщений | |
| исполнения | | Kafka | - запрос/подзапрос на получение публикуемых данных (в т. ч. с использованием ТП или в режиме оценки запроса); |
| запросов | | | |
| | | | - предоставление структуры таблиц при подписании на репликацию (источник данных); |
| | | | |
| | | | - создание структуры таблиц при подписании на репликацию (потребитель данных); |
| | | | |
| | | | - предоставление реплицируемых данных (источник данных); |
| | | | |
| | | | - получение реплицируемых данных (потребитель данных); |
| | | | |
| | | | - запрос генерации ПФ. |
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
| ПОДД-адаптер - | Агент СМЭВ4 | Через брокера | Предоставляет Результат запрос/подзапрос на получение публикуемых данных |
| Модуль MPPR | | сообщений | |
| | | Kafka | (в т. ч. с использованием ТП), делегированного ПОДД-адаптером. |
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
| ПОДД-адаптер | Агент СМЭВ4 | Через брокера | Получает сообщения с ТП, подготовленные Агентом СМЭВ4 |
| - Avro - | | сообщений | |
| defragmentator | | 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 | Доступ к БД ведомства |
| Ведомств | | | |
+----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+
.. tab-item:: Связи с другими программами конфигурации Лайт
Взаимодействие с другими программами происходит путем вызова соответствующих модулей программы:
- Внутренняя ИС Ведомства взаимодействует с ProStore через JDBC-driver.
- ПОДД-адаптер - Модуль исполнения запросов для взаимодействия с ИС участников взаимодействия через Агента ПОДД.
- CSV-uploader для взаимодействия с ИС участников взаимодействия для передачи файлов в формате XML и CSV.
Связи программы со сторонними программами приведены в см. :numref:`tab_lite_connection`.
.. _tab_lite_connection:
.. table:: Связи с другими программами
+----------------+--------------+---------------------------+--------------------+
| **Клиент** | **Сервер** | **Способ взаимодействия** | **Описание** |
+================+==============+===========================+====================+
| Внутренняя ИС | CSV-uploader | Файловый обмен (CSV) | Загрузка |
| Ведомств | | | публикуемых |
| | | REST | данных в Витрину |
+----------------+--------------+---------------------------+--------------------+
| | ProStore | JDBC | Управление |
| | | | логической |
| | | Брокер | структурой |
| | | сообщений | таблиц. |
| | | Kafka | |
| | | | Исполнение |
| | | | запросов. |
| | | | |
| | | | Загрузка |
| | | | публикуемых |
| | | | данных в |
| | | | Витрину. |
+----------------+--------------+---------------------------+--------------------+
| ПОДД-адаптер — | Агент ПОДД | Брокер | Исполнение |
| Модуль | | сообщений | запросов. |
| исполнения | | Kafka | |
| запросов | | | |
| | | Kafka | |
+----------------+--------------+---------------------------+--------------------+
Карта портов
------------
Карта портов компонентов программы представлена в :numref:`tab_gd_7`.
.. _tab_gd_7:
.. rst-class:: longtable
.. table:: Карта портов
+-----------------------+---------------------------------------------+
| **Компонент** | **Описание** |
+=======================+=============================================+
| podd-adapter-query | Порт: 8083 |
| | |
| | Протокол: HTTP |
| | |
| | Описание: Взаимодействие с ПОДД-адаптером |
+-----------------------+---------------------------------------------+
| query-execution | Порт: 8080 |
| | |
| | Протокол: HTTP |
| | |
| | Описание: номер порта сервиса метрик |
| | |
| | Порт: 9090 |
| | |
| | Протокол: TCP |
| | |
| | Описание: номер порта сервиса исполнения |
| | запросов |
+-----------------------+---------------------------------------------+
| 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 |
+-----------------------+---------------------------------------------+
| portainer | Порт: 9000 |
| | |
| | Протокол: HTTP |
| | |
| | Описание: Web-интерфейс для работы c |
| | Portainer |
+-----------------------+---------------------------------------------+