3. Структура программы
В данном разделе приведены сведения о структуре программы, ее составных частях, о связях между составными частями и о связях с другими программами.
3.1. Структура программы
Функционально, витрина данных НСУД состоит из следующих частей:
ProStore - Интеграционная система, обеспечивающая единый интерфейс к хранилищу разнородных данных. Определяет структуры данных, запись и чтение данных витрины. Позволяет работать со входящими в состав хранилища СУБД одинаковым образом, используя единый синтаксис запросов SQL и единую логическую схему данных.
СУБД хранилища:
Arenadata DB (ADB) — СУБД с массивно-параллельной архитектурой (Massive parallel processing, MPP), построенная на основе Greenplum;
Arenadata QuickMarts (ADQM) — кластерная колоночная СУБД на основе Yandex ClickHouse;
Arenadata Grid (ADG) — система распределенных вычислений в оперативной памяти, построенная на основе Tarantool.
СМЭВ3-адаптер – Необходим для подключения витрины к СМЭВ 3 как информационной системы участника взаимодействия. Обеспечивает загрузку запросов из очереди ИС УВ СМЭВ 3, формирование и отправку ответов в СМЭВ 3, инициативное формирование уведомлений об изменении данных в экземпляре ПО «Витрина данных НСУД» и отправку уведомлений в СМЭВ 3.
ПОДД-адаптер - Необходим для подключения витрины к ПОДД СМЭВ, как информационной системы участника взаимодействия. Обеспечивает загрузку запросов из очереди ИС УВ в ПОДД СМЭВ, формирование и отправку ответов в ПОДД СМЭВ, инициативное формирование уведомлений об изменении данных в экземпляре ПО «Витрина данных НСУД», отправку уведомлений в ПОДД СМЭВ, регистрацию реплики данных ИС УВ, подписки на репликацию и поддержку реплики в актуальном состоянии;
ETL - решение, используемое при выгрузке данных из различных источников ведомств и дальнейшего хранения их в Витрине ProStore для чтения, использования и взаимодействия с другими ведомствами;
REST-адаптер- сервис, реализующий публикацию конечных точек API для обработки запросов с использованием спецификации OpenAPI версии 3. Используется для сохранения обратной совместимости получения данных из ведомства по REST.
3.2. Составные части программы
3.2.1. Состав компонентов в дистрибутиве
Перечень типового ПО ведомственной витрины данных НСУД приведен в
таблице ниже (см. tab_gost_spg_2)
Компонент |
Версия |
Дополнительно |
|---|---|---|
Менеджер кластера (ADCM) |
20 20.12.16.15-7aaf9b59 |
https:// docs.arenadata.io/ad cm/user/install.html |
ProStore |
3.4.0 |
|
JDBC-драйвер ProStore |
3.4.0 |
ht tps://g.info.gov.ru/ datamart/nsud-datama rts/-/blob/master/%D 0%94%D0%B8%D1%81%D1% 82%D1%80%D0%B8%D0%B1 %D1%83%D1%82%D0%B8%D 0%B2%D1%8B%20%D0%9F% D0%9E%20%D0%92%D0%B8 %D1%82%D1%80%D0%B8%D 0%BD%20%D0%B4%D0%B0% D0%BD%D0%BD%D1%8B%D1 %85%20%D0%9D%D0%A1%D 0%A3%D0%94/%D0%94%D0 %B8%D1%81%D1%82%D1%8 0%D0%B8%D0%B1%D1%83% D1%82%D0%B8%D0%B2%D1 %8B%20DTM/Arena Data%20Core%20&%20Se rvices/aDTM-3.4.0-ma ster@c3279ff89d8.zip |
Сервис мониторинга статусов Kafka (DTM .KafkaStatusMonitor) |
3.4.0 |
ht tps://g.info.gov.ru/ datamart/nsud-datama rts/-/blob/master/%D 0%94%D0%B8%D1%81%D1% 82%D1%80%D0%B8%D0%B1 %D1%83%D1%82%D0%B8%D 0%B2%D1%8B%20%D0%9F% D0%9E%20%D0%92%D0%B8 %D1%82%D1%80%D0%B8%D 0%BD%20%D0%B4%D0%B0% D0%BD%D0%BD%D1%8B%D1 %85%20%D0%9D%D0%A1%D 0%A3%D0%94/%D0%94%D0 %B8%D1%81%D1%82%D1%8 0%D0%B8%D0%B1%D1%83% D1%82%D0%B8%D0%B2%D1 %8B%20DTM/Arena Data%20Core%20&%20Se rvices/aDTM-3.4.0-ma ster@c3279ff89d8.zip |
Кластер серверов ADS Community Edition (Kafka, Zookeeper) |
ADS: 1.5.0, включается в себя: Kafka: 2.4, Zookeeper: 3.5.6 |
https://store.ar enadata.io/#products /arenadata_streaming |
Кластер серверов MPP-СУБД (ADB Community Edition) |
6.13.0 |
Установка опциональна https://ci .arenadata.io/artifa ctory/ADB/6.13.0_are nadata13/centos/7/en terprise/x86_64/kafk a-fdw-0.10-377.git3f e5e36.el7.x86_64.rpm |
Кластер серверов Column-СУБД (ADQM Community Edition) |
2.9 |
Установка опциональна https://docs.aren adata.io/adqm/instal l/adcm/ru/index.html https://clickhou se.tech/docs/ru/gett ing-started/install/ |
Кластер серверов In-memory-СУБД (ADG Community Edition) |
2.5 |
Установка опциональна Memstorage (mem storage-0.3.2-0.rpm) https://g.info.gov.r u/datamart/nsud-data marts/-/blob/master/ %D0%94%D0%B8%D1%81%D 1%82%D1%80%D0%B8%D0% B1%D1%83%D1%82%D0%B8 %D0%B2%D1%8B%20%D0%9 F%D0%9E%20%D0%92%D0% B8%D1%82%D1%80%D0%B8 %D0%BD%20%D0%B4%D0%B 0%D0%BD%D0%BD%D1%8B% D1%85%20%D0%9D%D0%A1 %D0%A3%D0%94/%D0%94% D0%B8%D1%81%D1%82%D1 %80%D0%B8%D0%B1%D1%8 3%D1%82%D0%B8%D0%B2% D1%8B%20:DTM/Bun dles%20for%20ADCM/me mstorage-0.3.2-0.rpm Kafka (librdkafka- 1.5.0-1.el7.x86_64.r pm) https://g.i nfo.gov.ru/datamart/ nsud-datamarts/-/blo b/master/%D0%94%D0%B 8%D1%81%D1%82%D1%80% D0%B8%D0%B1%D1%83%D1 %82%D0%B8%D0%B2%D1%8 B%20%D0%9F%D0%9E%20% D0%92%D0%B8%D1%82%D1 %80%D0%B8%D0%BD%20%D 0%B4%D0%B0%D0%BD%D0% BD%D1%8B%D1%85%20%D0 %9D%D0%A1%D0%A3%D0%9 4/%D0%94%D0%B8%D1%81 %D1%82%D1%80%D0%B8%D 0%B1%D1%83%D1%82%D0% B8%D0%B2%D1%8B%20Pro store/Bundles%20for% 20ADCM/librdkafka-1. 5.0-1.el7.x86_64.rpm Авро-схема (avroc-1.10 .0-1.el7.x86_64.rpm) https:/ /g.info.gov.ru/datam art/nsud-datamarts/- /blob/master/%D0%94% D0%B8%D1%81%D1%82%D1 %80%D0%B8%D0%B1%D1%8 3%D1%82%D0%B8%D0%B2% D1%8B%20%D0%9F%D0%9E %20%D0%92%D0%B8%D1%8 2%D1%80%D0%B8%D0%BD% 20%D0%B4%D0%B0%D0%BD %D0%BD%D1%8B%D1%85%2 0%D0%9D%D0%A1%D0%A3% D0%94/%D0%94%D0%B8%D 1%81%D1%82%D1%80%D0% B8%D0%B1%D1%83%D1%82 %D0%B8%D0%B2%D1%8B%2 0DTM/Bundles%20 for%20ADCM/avroc-1.1 0.0-1.el7.x86_64.rpm libzstd-1. 4.5-3.el7.x86_64.rpm https:// g.info.gov.ru/datama rt/nsud-datamarts/-/ blob/master/%D0%94%D 0%B8%D1%81%D1%82%D1% 80%D0%B8%D0%B1%D1%83 %D1%82%D0%B8%D0%B2%D 1%8B%20%D0%9F%D0%9E% 20%D0%92%D0%B8%D1%82 %D1%80%D0%B8%D0%BD%2 0%D0%B4%D0%B0%D0%BD% D0%BD%D1%8B%D1%85%20 %D0%9D%D0%A1%D0%A3%D 0%94/%D0%94%D0%B8%D1 %81%D1%82%D1%80%D0%B 8%D0%B1%D1%83%D1%82% D0%B8%D0%B2%D1%8B%20 DTM/Bundles%20f or%20ADCM/libzstd-1. 4.5-3.el7.x86_64.rpm |
Группа коннекторов Kafka Greenplum |
3.4.0 |
http:// github.com/arenadata /kafka-pxf-connector h ttps://github.com/ar enadata/kafka-adb-os |
Группа коннекторов Kafka Clickhouse |
3.4.0 |
https://github. com/arenadata/kafka- clickhouse-connector |
Группа коннекторов Kafka Tarantool |
3.4.0 |
Является частью ADG |
СМЭВ3-адптер |
3.4.0 |
http s://g.info.gov.ru/da tamart/nsud-datamart s/-/blob/master/%D0% 94%D0%B8%D1%81%D1%82 %D1%80%D0%B8%D0%B1%D 1%83%D1%82%D0%B8%D0% B2%D1%8B%20%D0%9F%D0 %9E%20%D0%92%D0%B8%D 1%82%D1%80%D0%B8%D0% BD%20%D0%B4%D0%B0%D0 %BD%D0%BD%D1%8B%D1%8 5%20%D0%9D%D0%A1%D0% A3%D0%94/%D0%94%D0%B 8%D1%81%D1%82%D1%80% D0%B8%D0%B1%D1%83%D1 %82%D0%B8%D0%B2%D1%8 B%20%D0%A1%D0%9C%D0% AD%D0%923%20%D0%90%D 0%B4%D0%B0%D0%BF%D1% 82%D0%B5%D1%80/smev3 -connector-3.4.1.jar Установка опциональна |
Сервисная база данных СМЭВ3 адаптера PostrgeSQL |
10 и выше |
Является частью СМЭВ3-адаптер |
ПОДД-адаптер |
3.4.0 |
https://g. info.gov.ru/datamart /nsud-datamarts/-/bl ob/master/%D0%94%D0% B8%D1%81%D1%82%D1%80 %D0%B8%D0%B1%D1%83%D 1%82%D0%B8%D0%B2%D1% 8B%20%D0%9F%D0%9E%20 %D0%92%D0%B8%D1%82%D 1%80%D0%B8%D0%BD%20% D0%B4%D0%B0%D0%BD%D0 %BD%D1%8B%D1%85%20%D 0%9D%D0%A1%D0%A3%D0% 94/%D0%94%D0%B8%D1%8 1%D1%82%D1%80%D0%B8% D0%B1%D1%83%D1%82%D0 %B8%D0%B2%D1%8B%20%D 0%9F%D0%9E%D0%94%D0% 94%20%D0%90%D0%B4%D0 %B0%D0%BF%D1%82%D0%B 5%D1%80/DTM-adapter- reader-das-3.4.0-3-2 0210323.072335-6.jar Установка опциональна |
База данных ПОДД коннектора «MariaDB» |
10.5.3 |
Является частью ПОДД-адаптер |
Диспетчер сообщений для PODD «Kafka» (ADSP) |
2.4.0 |
Установка опциональна https://store.ar enadata.io/#products /arenadata_streaming |
ETL |
Apache Airflow 2.0.1 Apache Spark 3.0.1 Apache Hadoop 3.2.1 Tarantool 6.13.0 |
Apache Airflow 2.0.1 https://github.co m/apache/airflow.git Apache Spark 3.0.1 https://git hub.com/big-data-eur ope/docker-spark.git Apache Hadoop 3.2.1 https://gith ub.com/big-data-euro pe/docker-hadoop.git Tarantool 6.13.0 https://github.com/ tarantool/docker.git |
REST-адаптер |
1.0 |
https://g.info.gov. ru/datamart/nsud-dat amarts/-/blob/master /%D0%94%D0%B8%D1%81% D1%82%D1%80%D0%B8%D0 %B1%D1%83%D1%82%D0%B 8%D0%B2%D1%8B%20%D0% 9F%D0%9E%20%D0%92%D0 %B8%D1%82%D1%80%D0%B 8%D0%BD%20%D0%B4%D0% B0%D0%BD%D0%BD%D1%8B %D1%85%20%D0%9D%D0%A 1%D0%A3%D0%94/%D0%94 %D0%B8%D1%81%D1%82%D 1%80%D0%B8%D0%B1%D1% 83%D1%82%D0%B8%D0%B2 %D1%8B%20%D0%A1%D0%B 5%D1%80%D0%B2%D0%B5% D1%80%20%D0%9A%D0%BE %D0%BD%D0%B5%D1%87%D 0%BD%D1%8B%D1%85%20% D0%A2%D0%BE%D1%87%D0 %B5%D0%BA/swagger2pe bble-adapter-3.4.0-2 0210407.085926-8.jar Установка опциональна |
«Установка опциональна» означает - что необходимость установки компонента определяется из схемы развертывания витрины в конкретном ведомстве.
Конкретная конфигурация Витрины данных определяется Участником взаимодействия на этапе реализации Витрины данных в составе ИТ-инфраструктуры Участника взаимодействия.
Состав и назначение серверов, участвующих в функционировании типового ПО
ведомственной витрины данных НСУД, приведено в tab_program_composition.
Компонент |
Дополнительно |
|---|---|
Менеджер кластера (ADCM) |
Управляющая консоль |
JDBC-драйвер ProStore |
Предоставляет JDBC-интерфейс подключения из сторонних систем к ProStore` |
ProStore (ядро Витрины) |
Принимает и направляет на исполнение SQL запросы, поступающие от JDBC – драйвера. Отслеживает выполнение данных запросов. |
Сервис мониторинга статусов Kafka (DTM.KafkaStatusMonitor) |
Отслеживает состояние топиков брокера сообщений Kafka |
Кластер серверов ADS Community Edition (Kafka, Zookeeper) |
Брокер сообщений и сервисная СУБД (возможно несколько серверов) |
Кластер серверов MPP-СУБД (ADB Community Edition) |
MPP-СУБД ADBM – первичный мастер ADBS – хосты сегментов (возможно несколько серверов) |
Кластер серверов Column-СУБД (ADQM Community Edition) |
Column-СУБД (возможно несколько серверов) |
Кластер серверов In-memory-СУБД (ADG Community Edition) |
In-memory-СУБД (возможно несколько серверов) |
Группа коннекторов Kafka Greenplum |
Коннекторы между Kafka и СУБД Greenplum (устанавливается вместе с СУБД) |
Группа коннекторов Kafka Clickhouse |
Коннекторы между Kafka и СУБД Clickhouse (устанавливается отдельно) |
Группа коннекторов Kafka Tarantool |
Коннекторы между Kafka и СУБД Tarantool (устанавливается вместе с СУБД) |
СМЭВ3-адаптер |
Установка опциональна |
Сервисная база данных СМЭВ3 адаптера PostrgeSQL |
Является частью СМЭВ3-адаптера |
ПОДД Коннектор |
Установка опциональна |
База данных ПОДД-адаптера «MariaDB» |
Является частью ПОДД-адаптера |
Apache Airflow |
Менеджер процессов Apache Spark, является частью ETL |
Apache Spark |
Фреймворк для реализации распределенной обработки неструктурированных и слабоструктурированных данных, является частью ETL. Состоит из: Apache Spark мастер управляющий исполнителями Apache Spark ETL Apache Spark исполнители ETL (несколько серверов) |
Apache Hadoop |
Набор утилит, библиотек и фреймворк для разработки и выполнения распределённых программ, работающих на кластерах из множества узлов |
Tarantool |
СУБД ETL (несколько серверов) |
REST-адаптер |
Публикатор конечных точек API Установка опциональна |
3.2.2. Схема развертывания
На рисунке ниже (см. image_gost_spg_1) приведена схема развертывания для типового
ПО ведомственной витрины данных НСУД
Схема развертывания
3.3. Связи между составными частями
3.3.1. Общая архитектура решения
Схематичное отображение общей архитектуры решения приведено на рисунке
ниже (см. image_gost_spg_2)
Общая архитектура решения
3.3.2. Архитектура ProStore
3.3.2.1. Схема компонентов ProStore
Схема компонентов ProStore представлена на рисунке ниже (см. image_gost_spg_3).
Схема компонентов ProStore
ПО ProStore включает в себя следующие части:
JDBC-драйвер – размещается на стороне системы, использующей ProStore (клиента ProStore), и предоставляет JDBC-интерфейс подключения из этой системы к ProStore; взаимодействует с сервисом исполнения запросов по REST API, предоставляемым сервисом исполнения запросов;
ProStore – анализирует и исполняет SQL-запросы; предоставляет REST API для JDBC-драйвер и взаимодействует с сервисом мониторинга статусов Kafka по REST API, предоставляемым сервисом мониторинга статусов Kafka;
сервис мониторинга статусов Kafka (KafkaStatusMonitor) – отслеживает состояние топиков брокера сообщений Kafka; предоставляет REST API для ProStore.
3.3.2.2. Связи ProStore с другими программами
ProStore взаимодействует со следующим внешним ПО:
информационной системой-клиентом (по JDBC-интерфейсу),
сервисной базой данных (по API ZooKeeper),
СУБД хранилища данных (по интерфейсу JDBC или REST API — в зависимости от типа СУБД хранилища данных),
адаптерами (по API адаптеров);
брокером сообщений Kafka (по API Kafka).
Схема взаимодействия ProStore с внешним ПО показана на image_gost_spg_4
Схема взаимодействия ProStore с внешним ПО
3.3.3. Cвязи между составными частями
Взаимосвязи между составными частями витрины приведены в tab_gost_spg_3.
Клиент |
Сервер |
Способ взаимодействия |
Описание |
|---|---|---|---|
Сервисная СУБД |
Ядро витрины |
TCP |
Хран ение/получение метаданных |
СУБД хранилища |
|||
Apache Kafka |
|||
Адаптер ПОДД |
|||
ETL |
|||
Ядро витрины ProStore |
Хранилище СУБД |
JDBC REST API в зависимости от типа СУБД хранилища данных |
П еренаправление запросов в конкретную СУБД |
REST-адаптер |
Ядро витрины |
JDBC |
Исполнение запросов |
ETL |
Ядро витрины |
Kafka (Диспетчер сообщений) JDBC |
Исполнение запросов |
ПОДД-адаптер |
Ядро витрины |
Kafka (Диспетчер сообщений) JDBC |
Исполнение запросов |
СМЭВ3-адаптер |
Ядро витрины |
Kafka (Диспетчер сообщений) JDBC |
Исполнение запросов |
3.3.4. Связи с другими программами
Связи витрины со сторонними программами приведены в см. tab_gost_spg_5.
Клиент |
Сервер |
Способ взаимодействия |
Описание |
|---|---|---|---|
ETL |
Файловое хранилище ведомства |
S3, FTP и т.п. |
Считывание CSV файлов с данными, импортируемыми в витрину |
ETL |
БД ведомства |
JDBC Driver |
Считывание данных, импортируемых в витрину |
Внутренняя ИС Ведомств |
Сервер конечных точек |
REST API |
Имитация поведения, существующего REST API |
Внутренняя ИС Ведомств |
Ядро витрины |
JDBC Driver |
Доступ к БД ведомства |
ПОДД-адаптер |
Агент ПОДД |
Kafka |
Регистрация репликаций, подписок на репликации, работа с дельтами данных, запросами данных |
СМЭВ3-адаптер |
СМЭВ3 |
SOAP |
Запрос необходимости подготовки данных, передача подготовленных данных |
СМЭВ3-адаптер |
ViPNet PKI |
HTTP |
Получение электронной подписи для запроса в СМЭВ3 |