Data Model Service (dms)
Описание
Сервис модели данных домена.
Работает на базе класса сущностей доменного центра `classes` интерпретируя каждый экземпляр как метаданные новой пользовательской/проектной коллекции информационных объектов.
Предоставляет CRUD API для остальных ролей и сервисов для управления экземплярами пользовательских/проектных коллекций. Поддерживает методы `create`, `update`, `replace`, `read` коллекции, `read` элемента коллекции`, `clear` коллекции, `lookup`. В зависимости от метаданных коллекции поддерживает работу со словарем в памяти, с распределенной объектной БД, c сервером PostgreSQL, с KAFKA и колоночной БД Clickhouse. Поддерживает однопоточный, параллельный и асинхронный режимы работы с коллекциями. Способна гарантировать целостность модификации/чтения/уведомления, гарантирует сохранение последовательности модификаций в хранилище и в уведомлениях. Позволяет использовать временный или постоянный кэш для элементов коллекций.
Работает совместно с wssubscr для уведомления подписчиков об изменениях (класс/тип событий `modelevents.data_changed`). Поддерживает подписку с фильтрами и маскировкой. Уведомляет с корректировкой команд с учетом фильтра (например, create вместо update). Выборка данных из коллекции поддерживает сложную фильтрацию, маскировку, сортировку, агрегацию, смещение, лимитирование.
Доступ через HTTP(s) REST API `/rest/v1/model/…`, где далее имя (или путь) класса. Управление возможно также через Websocket-API как с авторизацией под сессией пользователя, так и через токен.
Доступ к коллекциям и методам определяется раутами вебсервера. По умолчанию администратору доступны все пути и методы, а остальное определяется ролями (класс roles), назначенными пользователю (user.opts.roles) или каналу интеграции (integration_point.opts.roles).
Поддерживает привязку файлов-вложений к сущностям, имеющим свойства типа `attachment` единичного или списочного вида.
Вложения размещаются на указанных в классе хранилищах, подключения к которым настроены с помощью сущностей класса storage с типами, относящимися к файловым хранилищам.
Разделена на микросервисы по доменам.
Резервируется в режиме Active-Passive. Масштабируется разделением доменного дерева.
Код |
|
Режим работы |
|
Режим резервирования |
|
Типы сайтов |
|
Слой |
|
Размещение |
|
Сохранение и восстановление состояния при перезагрузке |
|
Приложение |
|
Собственное хранилище |
|
Ограничения
-
Доступно в рамках информационно-коммуникационной платформы 'era'.
-
Скорость работы зависит от выбранного типа хранилища коллекции. Достижима скорость работы коллекции до 10 тысяч запросов в секунду.
-
Данные между сайтами ролью не синхронизируются. Слияние через внешние хранилище возможно с поправкой на возможные проблемы целостности и необходимость отключение кэша.
Параметры
Имя | Тип | Умолчание | Описание |
---|---|---|---|
|
|
required |
Имя. Может состоять из латинских букв и цифр, должно начинаться с буквы. |
|
|
required |
Тип роли. Возможные значения: |
|
|
required |
Алиас сетевого интерфейса сервера, на котором будет происходить внутреннее взаимодействие ролей между собой. |
|
|
empty |
Дополнительные опции роли. Содержит json объект или список. |
|
|
empty |
Флаг активности роли. При установке в false роль не участвует в валидации и не запускается. |
|
required |
Строки подключения к ферме серверов PostgreSQL БД доменов, где создаются базы данных доменов с хранилищем сущностей продуктовых моделей. Каждый домен использует пул из 10 подключений к каждой БД (уникальная строка подключения). Новое подключение создается только при занятости. В спокойном режиме подключения к БД отсутствуют. Формат строки подключения: Перечисление в списке нескольких строк подключения обеспечивает резервный доступ к ферме серверов БД – если подключение через первую строку не удается, производится подключение через вторую и т.д. На центральном сайте, где располагается роль MDC, при отсутствии этого параметра, для клаccов с режимом 'auto' применятся строки подключения, заданные в параметрах роли mdc. |
|
|
required |
Номер группы. |
|
|
required |
Порядок экземпляра роли в рамках группы. |
|
|
empty |
Список имен доменов, которые обслуживает данная группа. |
|
|
undefined |
Номер группы обслуживания доменного дерева. |
|
|
2 |
Ограничитель количества одновременно загружаемых доменов. |
|
|
1 |
Ограничитель количества одновременно загружаемых классов в пределах одного домена. |
|
|
300 |
Интервал очистки временного кеша для классов с соответствующим режимом кеширования. |
|
|
10 |
Количество процессов, обслуживающих параллельно операции чтения в рамках одного класса, если параллельное чтение разрешено режимом класса. Является значением по умолчанию для тех классов, где значение opts.worker_r_count = 0. |
|
|
4 |
Количество процессов, обслуживающих параллельно операции записи в рамках одного класса, если параллельное чтение разрешено режимом класса. Является значением по умолчанию для тех классов, где значение opts.worker_w_count = 0. |
|
|
true |
Выключатель ежеминутного логирования статистики по классам, для которых не задана индивидуально настройка уровня ежеминутного логирования статистики. |
|
|
10 |
Количество потоков в пуле подключений к серверу postgresql, используемое по умолчанию. Отдельно существуют пул для работы серверных служб и пул для работы клиентских подключений. Каждый из них максимально расширяется до указанного количества подключений. |
|
|
4 |
Количество процессов, обслуживающих параллельно операции dmsquery на сервере. |
|
|
Список секций, в которых участвует экземпляр. |
||
|
|
|
Используеется классами типа 'runtime' |
|
|
|
в оперативной памяти с сохранением на диск на всех экземплярах группы. |
|
|
|
но экономит RAM)." |
|
|
|
Операционный контекст объектного хранилища.
Используемый по умолчанию вариант dirty не создает проблем работе системы по сравнению с вариантом transaction, поскольку: |
|
|
global |
Выключатель режима takeover.
|
Пример конфигурации
Управление конфигурацией производится в приложении, доступном для администраторов мастер-домена. Приложение скрывает полное содержание конфигурации, однако тем не менее оно доступно через API.
Конфигурация содержит раздел для описания всех экземпляров всех ролей. Параметры определяются для каждого конкретного экземпляра роли.
{
"name": "dms1",
"roletype": "dms",
"iface": "eth0",
"group": 11310,
"order": 1
}