Структура Витрины данных ============================= .. _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; - **JDBC-driver** - позволяет подключиться к Простору и выполнять SQL запросы по JDBC протоколу. `JDBC-driver `_ поставляется совместно с ПО Prostore в релизе Типового ПО "Витрина данных"; - **Слой адаптеров** - общее название логических модулей программы, которые обеспечивают подключение к СМЭВ4, как информационной системы участника взаимодействия. В зависимости от предназначения логические модули обеспечивают загрузку запросов из очереди `ИС УВ `_ в `СМЭВ4 `_ , формирование и отправку ответов в СМЭВ4, инициативное формирование уведомлений об изменении данных в экземпляре ПО «Витрина данных НСУД», отправку уведомлений в СМЭВ4, регистрацию реплики данных ИС УВ, подписки на репликацию и поддержку реплики в актуальном состоянии. **Компоненты, входящие в состав слоя адаптеров** - **СМЭВ3-адаптер** - обеспечивает информационное взаимодействие через единый электронный сервис единой системы межведомственного электронного взаимодействия (далее – СМЭВ). - **Сервис формирования документов** - предназначен для обеспечения возможности формирования документов, в формате XML и PDF, на основе предварительно подготовленных pebble-шаблонов, с возможностью добавления к сформированным документам электронной подписи. - **CSV-Uploader** - программный модуль Витрины данных, предназначен для загрузки и выгрузки csv-файлов со структурой Витрины и csv-шаблонов с демо-шаблонами структуры Витрины, а также просмотра Журнала операций. - **СМЭВ4-адаптер - Модуль исполнения запросов** - предназначен для исполнения запросов СМЭВ4 (через протокол коммуникации Агент СМЭВ4). - **СМЭВ4-адаптер – Модуль MPPR** - предназначен для чтения данных в многопоточном режиме. - **СМЭВ4-адаптер - Модуль MPPW** - исполняет запросы в многопоточном режиме, записывающие данные в Prostore. - **Модуль группировки чанков репликации** - группирует фрагменты данных подписки, полученные из топика ``delta.in.rq`` и размещает их во временные топики с именем ``mppw.data.[hash (requestId+subscriptionId)].deltaNum.streamNum``, отправляет команду в топик ``subscription.in`` модулю подписок при получении ``lastChunk`` на загрузку сгруппированных фрагментов (по каждой дельте каждого стрима). - **СМЭВ4-адаптер - Модуль группировки данных табличных параметров** - предназначен для группировки данных при выполнении запросов с табличными параметрами. - **СМЭВ4-адаптер - Модуль импорта табличных параметров** - предназначен для создания временных таблиц при выполнении временных запросов с табличными параметрами. - **СМЭВ4-адаптер - Модуль дефрагментации чанков табличных параметров** - образует пакеты с данными табличных параметров, поступающие от Агента СМЭВ4 в брокер сообщений Kafka, к формату, позволяющему обрабатывать их в многопоточном режиме. - **СМЭВ4-адаптер - Модуль подписок** - предназначен для управления подписками между Получателем данных (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** - программное обеспечение, обеспечивающее сопряжение Типового ПО «Витрина данных» и ИС УВ с Ядром СМЭВ4. - **СУБД Postgres (Postgres Pro)** - Промышленная система управления базами данных для высоконагруженных систем. Официальный сайт разработчика приложения: https://postgrespro.ru/. Совместимость СУБД Postgres (Postgres Pro) с типовым ПО «Витрина Данных» в зависимости от версии указана на `портале ЕСКС `_. - **Брокер сообщений Kafka** - используется для непрерывной передачи сообщений между СМЭВ4-адаптером - Модуль исполнения запросов и Агентом СМЭВ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. Также, используется для сбора метрик модулей СМЭВ4-адаптера и 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; - **JDBC-driver** - позволяет подключиться к Простору и выполнять SQL запросы по JDBC протоколу. `JDBC-driver `_ поставляется совместно с ПО Prostore в релизе Типового ПО "Витрина данных"; - **Слой адаптеров** - общее название логических модулей программы, которые обеспечивают подключение к СМЭВ4, как информационной системы участника взаимодействия. В зависимости от предназначения логические модули обеспечивают загрузку запросов из очереди `ИС УВ `_ в `СМЭВ4 `_ , формирование и отправку ответов в СМЭВ4, инициативное формирование уведомлений об изменении данных в экземпляре ПО «Витрина данных НСУД», отправку уведомлений в СМЭВ4, регистрацию реплики данных ИС УВ, подписки на репликацию и поддержку реплики в актуальном состоянии. **Компоненты, входящие в состав слоя адаптеров** - **CSV-Uploader** - программный модуль Витрины данных, предназначен для загрузки и выгрузки csv-файлов со структурой Витрины и csv-шаблонов с демо-шаблонами структуры Витрины, а также просмотра Журнала операций. - **СМЭВ4-адаптер - Модуль исполнения запросов** - предназначен для исполнения запросов СМЭВ4 (через протокол коммуникации Агент СМЭВ4). - **СМЭВ4-адаптер – Модуль MPPR** - предназначен для чтения данных в многопоточном режиме. - **СМЭВ4-адаптер - Модуль MPPW** - исполняет запросы в многопоточном режиме, записывающие данные в Prostore. - **Модуль группировки чанков репликации** - группирует фрагменты данных подписки, полученные из топика ``delta.in.rq`` и размещает их во временные топики с именем ``mppw.data.[hash (requestId+subscriptionId)].deltaNum.streamNum``, отправляет команду в топик ``subscription.in`` модулю подписок при получении ``lastChunk`` на загрузку сгруппированных фрагментов (по каждой дельте каждого стрима). - **СМЭВ4-адаптер - Модуль подписок** - предназначен для управления подписками между Получателем данных (consumer) и Поставщиком данных (producer). - **СМЭВ4-адаптер - Модуль группировки данных табличных параметров** - предназначен для группировки данных при выполнении запросов с табличными параметрами. - **СМЭВ4-адаптер - Модуль импорта табличных параметров** - предназначен для создания временных таблиц при выполнении временных запросов с табличными параметрами. - **СМЭВ4-адаптер - Модуль дефрагментации чанков табличных параметров** - образует пакеты с данными табличных параметров, поступающие от Агента СМЭВ4 в брокер сообщений Kafka, к формату, позволяющему обрабатывать их в многопоточном режиме. **Дополнительные компоненты** - **Apache ZooKeeper** — необходим для поддержки информации о конфигурации и распределенной координации между компонентами Витрины, также используется как сервисная база данных Prostore, для хранения технической информации (метаданных) от поступающих в Витрину данных запросах. - **Брокер сообщений Kafka** — используется для непрерывной передачи сообщений между: - **CSV-uploader** и **Prostore**; - **СМЭВ4-адаптером - Модуль исполнения запросов** и **Агент СМЭВ4**. - **Ansible** — платформа удалённого управления конфигурациями программного обеспечения, предназначенная для упрощения развёртывания |Product Lite| через создание специальных сценариев. Официальный сайт разработчика приложения: https://www.ansible.com/. - **СУБД Postgres** - Промышленная система управления базами данных для высоконагруженных систем. Официальный сайт разработчика приложения: https://postgrespro.ru/. - **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. Также, используется для сбора метрик СМЭВ4-адаптера и 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.17.0 приведен в таблице ниже (см. :numref:`tab_components_standart`) .. _tab_components_standart: .. table:: Состав компонентов в дистрибутиве программы ==================================== ========== ================================ Наименование компонента Версия Техническое наименование ==================================== ========== ================================ query-execution 6.12.2 query-execution:6.12.2 jdbc-driver 6.12.2 jdbc-driver:6.12.2 backup-manager 1.17.0 backup-manager:1.17.0 blob-adapter 1.17.0 blob-adapter:1.17.0 counter-provider 1.17.0 counter-provider:1.17.0 csv-uploader 1.17.0 csv-uploader:1.17.0 data-uploader 1.17.0 data-uploader:1.17.0 dtm-uploader 1.17.0 dtm-uploader:1.17.0 podd-adapter-group-repl 1.17.0 podd-adapter-group-repl:1.17.0 podd-adapter-group-tp 1.17.0 podd-adapter-group-tp:1.17.0 podd-adapter-import-tp 1.17.0 podd-adapter-import-tp:1.17.0 podd-adapter-mppr 1.17.0 podd-adapter-mppr:1.17.0 podd-adapter-mppw 1.17.0 podd-adapter-mppw:1.17.0 podd-adapter-query 1.17.0 podd-adapter-query:1.17.0 podd-adapter-replicator 1.17.0 podd-adapter-replicator:1.17.0 podd-avro-defragmentator 1.17.0 podd-avro-defragmentator:1.17.0 printable-form-service 1.17.0 printable-form-service:1.17.0 rest-adapter 1.17.0 rest-adapter:1.17.0 rest-uploader 1.17.0 rest-uploader:1.17.0 smevql-server 1.2.0 smevql-server:1.2.0 СМЭВ3-адаптер 1.17.0 smev3-adapter:1.17.0 dtm-tools 1.17.0 dtm-tools:1.17.0 greenplum-kafka PXF connector reader 1.3.0 pxf-kafka:1.3.0 kafka-greenplum PXF connector writer 1.2.0 pxf-kafka-greenplum:1.2.0 kafka-clickhouse-reader 3.14.0 kafka-clickhouse-reader:3.14.0 kafka-clickhouse-writer 3.14.0 kafka-clickhouse-writer:3.14.0 kafka-postgres-writer 0.11.0 kafka-postgres-writer:0.11.0 kafka-postgres-reader 0.11.0 kafka-postgres-reader:0.11.0 kafka-jet-writer 1.5.0 kafka-jet-writer:1.5.0 ==================================== ========== ================================ Дистрибутив программы версии 1.17.0 тестировался с компонентами, приведенными в :numref:`tab_test_components` .. _tab_test_components: .. table:: компоненты для тестирования программы ======================== ========== ========================= Наименование компонента Версия Техническое наименование ======================== ========== ========================= Агент СМЭВ4 3.20.1 Агент СМЭВ4:3.20.1 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.17.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.12.2 query-execution:6.12.2 jdbc-driver 6.12.2 jdbc-driver:6.12.2 podd-adapter-replicator 1.17.0 podd-adapter-replicator:1.17.0 podd-adapter-mppw 1.17.0 podd-adapter-mppw:1.17.0 podd-adapter-mppr 1.17.0 podd-adapter-mppr:1.17.0 podd-adapter-group-repl 1.17.0 podd-adapter-group-repl:1.17.0 podd-adapter-query 1.17.0 podd-adapter:1.17.0 podd-adapter-group-tp 1.17.0 podd-adapter-group-tp:1.17.0 podd-adapter-import-tp 1.17.0 podd-adapter-import-tp:1.17.0 podd-avro-defragmentator 1.17.0 podd-avro-defragmentator:1.17.0 csv-uploader 1.17.0 csv-uploader:1.17.0 kafka-jet-writer 1.5.0 kafka-jet-writer:1.5.0 grafana 9.5.2 grafana:9.5.2 node_exporter 1.3.1 node_exporter:1.3.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.11.0 kafka-postgres-writer:0.11.0 kafka-postgres-reader 0.11.0 kafka-postgres-reader:0.11.0 postgres 13.4 postgres:13.4 kafka 2.13 kafka:2.13-2.6.0-alt-p10-r3 zookeeper 3.6.0 zookeeper:3.6.0-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 | | | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | | СМЭВ4 Адаптер | | | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | | ETL | | | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | Prostore | Хранилище СУБД | REST API | Перенаправление запросов в конкретную СУБД | | | | | | | | | в зависимости | | | | | | | | | | от типа СУБД | | | | | хранилища | | | | | данных | | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | REST-адаптер | Prostore | REST API | Исполнение запросов | | | | | | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | ETL | Prostore | Kafka | Исполнение запросов | | | | (Диспетчер | | | | | сообщений) | | | | | | | | | | JDBC | | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | Сервис | Prostore | REST API | Запрашивает данные для формирования ПФ | | формирования | | | | | документов | | | | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | СМЭВ3-адаптер | Prostore | Kafka | Исполнение запросов | | | | (Диспетчер | | | | | сообщений) | | | | | | | | | | REST API | | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | | BLOB-адаптер | HTTP | Запрашивает бинарное содержимое BLOB. | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | СМЭВ4-адаптер -| Prostore | REST API | - исполняет полученный запрос (LLR); | | Модуль | | | | | исполнения | | | - запрашивает структуру таблиц при подписании на репликацию (источник данных); | | запросов | | | | | | | | - создает структуру таблиц при подписании на репликацию (потребитель данных); | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | | Диспетчер | Kafka | - получает сообщение о закрытии новой дельты в Prostore (для репликации, источник данных); | | | сообщений | (Диспетчер | | | | Kafka | сообщений) | - обменивается управляющей информацией с модулем импорта ТП; | | | | | | | | | | - отправляет запросы, перенаправленные в Модуль MPPR. | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | СМЭВ4-адаптер -| Prostore | REST API | Подает запрос MPPR. | | Модуль MPPR | | | | | | | | | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | | Диспетчер | Kafka | - получает запросы данных СМЭВ4, перенаправленные СМЭВ4 Адаптером; | | | сообщений | | | | | Kafka | | - получает запрошенные данные из Prostore (в формате MPPR); | | | | | | | | | | - передает запрошенные данные в СМЭВ4 в формате СМЭВ4; | | | | | | | | | | - обменивается управляющей информацией с модулем импорта ТП. | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | СМЭВ4-адаптер -| Prostore | REST API | Подает запрос MPPW. | | Модуль MPPW | | | | | | | | | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | | Диспетчер | Kafka | - получает записываемые данные, подготовленные модулем Группировки данных ТП; | | | сообщений | | | | | Kafka | | - передает записываемые данные в Prostore (в формате MPPW); | | | | | | | | | | - обменивается управляющей информацией с модулем импорта ТП. | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | СМЭВ4-адаптер -| Prostore | REST API | - создает табличный параметр (перед выполнением запроса); | | Модуль | | | | | импорта ТП | | | - удаляет табличный параметр (после выполнения запроса). | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | | Диспетчер | Kafka | Обменивается управляющей информацией с модулями: | | | сообщений | | | | | Kafka | | - MPPW; | | | | | | | | | | - MPPR; | | | | | | | | | | - СМЭВ4 Адаптер; | | | | | | | | | | - Группировки данных ТП. | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | СМЭВ4-адаптер -| Диспетчер | Kafka | - Получает сообщения с ТП, подготовленные Модуль дефрагментации чанков табличных | | Модуль | сообщений | | параметров (из единого топика); | | Группировки | Kafka | | | | данных ТП | | | - Создает отдельные топики для каждого ТП и передает в них сообщения с данными этого ТП. | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | СМЭВ4-адаптер -| Диспетчер | Kafka | Передает сообщения с ТП, в формате пригодном для параллельной обработки | | Модуль | сообщений | | | | дефрагментации | Kafka | | | | чанков | | | | | табличных | | | | | параметров | | | | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ | | Сервисная СУБД | TCP | Сохраняет список обрабатываемых сообщений ТП | | | Zookeeper | | | | | | | Хранение метаданных о подписках на репликацию (источник данных). | +----------------+----------------+--------------------+---------------------------------------------------------------------------------------------+ .. tab-item:: Cвязи между компонентами конфигурации Лайт Cвязи между компонентами конфигурации Лайт приведены в :numref:`tab_3_gd_lite`. .. _tab_3_gd_lite: .. table:: Взаимодействие между составными частями +------------------+----------------+---------------------------+--------------------------------------+ | **Клиент** | **Сервер** | **Способ взаимодействия** | **Описание** | +==================+================+===========================+======================================+ | СМЭВ4-адаптер — | Prostore | JDBC | Исполнение запросов. | | | | | | | Модуль | | Брокер сообщений Kafka | | | исполнения | | | | | запросов | | | | +------------------+----------------+---------------------------+--------------------------------------+ | CSV-Uploader | Prostore | JDBC | Управление логической структурой | | | | | таблиц. | | | | | | | | | Брокер сообщений Kafka | Загрузка публикуемых данных в | | | | | Витрину. | +------------------+----------------+---------------------------+--------------------------------------+ | Prostore | СУБД | JDBC | Управление логической структурой | | | PostgreSQL | | таблиц. | | | | | | | | | | Исполнение запросов. | | | | | | | | | | Управление загрузкой публикуемых | | | | | данных в Витрину. | +------------------+----------------+---------------------------+--------------------------------------+ | СМЭВ4 - | Агент СМЭВ4 | Через брокера сообщений | Предоставляет | | адаптер — Модуль | | Kafka | Результат | | MPPR | | | запрос/подзапрос | | | | | на получение публикуемых | | | | | данных | | | | | | | | | | (в т.ч. с использованием ТП), | | | | | делегированного СМЭВ4-адаптером. | +------------------+----------------+---------------------------+--------------------------------------+ Модули Витрины данных ----------------------- .. note:: Описание настроек модулей, процессы запуска и остановки модуля см. «Руководстве администратора». СМЭВ4-адаптер - Модуль исполнения запросов ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Модуль входит в состав конфигурации Стандарт и Лайт .. Описание СМЭВ4-адаптер-Модуль исполнения запросов .. Подключаем файл с описанием СМЭВ4-адаптер-Модуль исполнения запросов .. include:: ../../modules/podd-adapter-query/doc/podd_adapter_query_doc.rst СМЭВ4-адаптер - Модуль подписок ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Модуль входит в состав конфигурации Стандарт и Лайт .. Описание СМЭВ4-адаптер - Модуль подписки .. Подключаем файл с описанием СМЭВ4-адаптер - Модуль подписки .. include:: ../../modules/podd-adapter-replicator/doc/podd_adapter_replicator_doc.rst СМЭВ4-адаптер – Модуль MPPR ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Модуль входит в состав конфигурации Стандарт и Лайт .. Описание СМЭВ4-адаптер – Модуль MPPR .. Подключаем файл с описанием СМЭВ4-адаптер – Модуль MPPR .. include:: ../../modules/podd-adapter-mppr/doc/podd_adapter_mppr_doc.rst СМЭВ4-адаптер - Модуль MPPW ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Модуль входит в состав конфигурации Стандарт и Лайт .. Описание СМЭВ4-адаптер-Модуль MPPW .. Подключаем файл с описанием СМЭВ4-адаптер-Модуль MPPW .. include:: ../../modules/podd-adapter-mppw/doc/podd_adapter_mppw_doc.rst СМЭВ4-адаптер - Модуль группировки чанков репликации ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. 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 СМЭВ4-адаптер - Модуль импорта табличных параметров ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Модуль входит в состав конфигурации Стандарт и Лайт .. Описание СМЭВ4-адаптер - Модуль импорта табличных параметров .. Подключаем файл с описанием СМЭВ4-адаптер - Модуль импорта табличных параметров .. include:: ../../modules/podd-adapter-import-tp/doc/podd_adapter_import_tp_doc.rst СМЭВ4-адаптер - Модуль группировки данных табличных параметров ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Модуль входит в состав конфигурации Стандарт и Лайт .. Описание СМЭВ4-адаптер - Модуль группировки данных табличных параметров .. Подключаем файл с описанием СМЭВ4-адаптер - Модуль группировки данных табличных параметров .. include:: ../../modules/podd-adapter-group-tp/doc/podd_adapter_group_tp_doc.rst СМЭВ4-адаптер - Модуль дефрагментации чанков табличных параметров ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. note:: Модуль входит в состав конфигурации Стандарт и Лайт .. Описание СМЭВ4-адаптер - Модуль дефрагментации чанков табличных параметров .. Подключаем файл с описанием СМЭВ4-адаптер - Модуль дефрагментации чанков табличных параметров .. 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:: Модуль входит в состав конфигурации Стандарт Схема взаимодействия через REST-адаптер ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 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-адаптер | Агент СМЭВ4 | Через брокера | Получает запросы и предоставляет ответы на них согласно протоколу СМЭВ4: | | - Модуль | | сообщений | | | исполнения | | Kafka | - запрос/подзапрос на получение публикуемых данных (в т. ч. с использованием ТП или в режиме оценки запроса); | | запросов | | | | | | | | - предоставление структуры таблиц при подписании на репликацию (источник данных); | | | | | | | | | | - создание структуры таблиц при подписании на репликацию (потребитель данных); | | | | | | | | | | - предоставление реплицируемых данных (источник данных); | | | | | | | | | | - получение реплицируемых данных (потребитель данных); | | | | | | | | | | - запрос генерации ПФ. | +----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+ | СМЭВ4-адаптер -| Агент СМЭВ4 | Через брокера | Предоставляет Результат запрос/подзапрос на получение публикуемых данных | | Модуль MPPR | | сообщений | | | | | Kafka | (в т. ч. с использованием ТП), делегированного СМЭВ4-адаптером. | +----------------+----------------+------------------+----------------------------------------------------------------------------------------------------------------+ | СМЭВ4-адаптер | Агент СМЭВ4 | Через брокера | Получает сообщения с ТП, подготовленные Агентом СМЭВ4 | | - Модуль | | сообщений | | | дефрагментации | | 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. - СМЭВ4-адаптер - Модуль исполнения запросов для взаимодействия с ИС участников взаимодействия через Агента СМЭВ4. - CSV-uploader для взаимодействия с ИС участников взаимодействия для передачи файлов в формате XML и CSV. Связи программы со сторонними программами приведены в см. :numref:`tab_lite_connection`. .. _tab_lite_connection: .. table:: Связи с другими программами +----------------+--------------+---------------------------+--------------------+ | **Клиент** | **Сервер** | **Способ взаимодействия** | **Описание** | +================+==============+===========================+====================+ | Внутренняя ИС | CSV-uploader | Файловый обмен (CSV) | Загрузка | | Ведомств | | | публикуемых | | | | REST | данных в Витрину | +----------------+--------------+---------------------------+--------------------+ | | Prostore | JDBC | Управление | | | | | логической | | | | Брокер | структурой | | | | сообщений | таблиц. | | | | Kafka | | | | | | Исполнение | | | | | запросов. | | | | | | | | | | Загрузка | | | | | публикуемых | | | | | данных в | | | | | Витрину. | +----------------+--------------+---------------------------+--------------------+ | СМЭВ4-адаптер —| Агент СМЭВ4 | Брокер | Исполнение | | Модуль | | сообщений | запросов. | | исполнения | | Kafka | | | запросов | | | | | | | Kafka | | +----------------+--------------+---------------------------+--------------------+ Карта портов ------------ Карта портов компонентов программы представлена в :numref:`tab_gd_7`. .. _tab_gd_7: .. rst-class:: longtable .. table:: Карта портов +-----------------------+---------------------------------------------+ | **Компонент** | **Описание** | +=======================+=============================================+ | podd-adapter-query | Порт: 8083 | | | | | | Протокол: HTTP | | | | | | Описание: Взаимодействие с СМЭВ4-адаптером | +-----------------------+---------------------------------------------+ | 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 | +-----------------------+---------------------------------------------+