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. Состав компонентов в дистрибутиве
Перечень типового ПО ведомственной витрины данных НСУД приведен в таблице ниже (см. Таблица 3.6)
Компонент |
Версия |
Дополнительно |
|---|---|---|
Менеджер кластера (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 Установка опциональна |
«Установка опциональна» означает - что необходимость установки компонента определяется из схемы развертывания витрины в конкретном ведомстве.
Конкретная конфигурация Витрины данных определяется Участником взаимодействия на этапе реализации Витрины данных в составе ИТ-инфраструктуры Участника взаимодействия.
Состав и назначение серверов, участвующих в функционировании типового ПО ведомственной витрины данных НСУД, приведено в Таблица 3.7.
Компонент |
Дополнительно |
|---|---|
Менеджер кластера (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. Схема развертывания
На рисунке ниже (см. Рисунок - 3.24) приведена схема развертывания для типового ПО ведомственной витрины данных НСУД
Рисунок - 3.24 Схема развертывания
3.3. Связи между составными частями
3.3.1. Общая архитектура решения
Схематичное отображение общей архитектуры решения приведено на рисунке ниже (см. Рисунок - 3.25)
Рисунок - 3.25 Общая архитектура решения
3.3.2. Архитектура ProStore
3.3.2.1. Схема компонентов ProStore
Схема компонентов ProStore представлена на рисунке ниже (см. Рисунок - 3.26).
Рисунок - 3.26 Схема компонентов 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 с внешним ПО показана на Рисунок - 3.27
Рисунок - 3.27 Схема взаимодействия ProStore с внешним ПО
3.3.3. Cвязи между составными частями
Взаимосвязи между составными частями витрины приведены в Таблица 3.8.
Клиент |
Сервер |
Способ взаимодействия |
Описание |
|---|---|---|---|
Сервисная СУБД |
Ядро витрины |
TCP |
Хран ение/получение метаданных |
СУБД хранилища |
|||
Apache Kafka |
|||
Адаптер ПОДД |
|||
ETL |
|||
Ядро витрины ProStore |
Хранилище СУБД |
JDBC REST API в зависимости от типа СУБД хранилища данных |
П еренаправление запросов в конкретную СУБД |
REST-адаптер |
Ядро витрины |
JDBC |
Исполнение запросов |
ETL |
Ядро витрины |
Kafka (Диспетчер сообщений) JDBC |
Исполнение запросов |
ПОДД-адаптер |
Ядро витрины |
Kafka (Диспетчер сообщений) JDBC |
Исполнение запросов |
СМЭВ3-адаптер |
Ядро витрины |
Kafka (Диспетчер сообщений) JDBC |
Исполнение запросов |
3.3.4. Связи с другими программами
Связи витрины со сторонними программами приведены в см. Таблица 3.9.
Клиент |
Сервер |
Способ взаимодействия |
Описание |
|---|---|---|---|
ETL |
Файловое хранилище ведомства |
S3, FTP и т.п. |
Считывание CSV файлов с данными, импортируемыми в витрину |
ETL |
БД ведомства |
JDBC Driver |
Считывание данных, импортируемых в витрину |
Внутренняя ИС Ведомств |
Сервер конечных точек |
REST API |
Имитация поведения, существующего REST API |
Внутренняя ИС Ведомств |
Ядро витрины |
JDBC Driver |
Доступ к БД ведомства |
ПОДД-адаптер |
Агент ПОДД |
Kafka |
Регистрация репликаций, подписок на репликации, работа с дельтами данных, запросами данных |
СМЭВ3-адаптер |
СМЭВ3 |
SOAP |
Запрос необходимости подготовки данных, передача подготовленных данных |
СМЭВ3-адаптер |
ViPNet PKI |
HTTP |
Получение электронной подписи для запроса в СМЭВ3 |