Master Domain Center (mdc)

Описание

Хранилище сущностей домена.
Предоставляет другим ролям внутри сайта доступ к данным для организации процессов. Некоторые данные подлежат предварительному расчету внутри роли.
Имеет прямой доступ к реляционными БД всех доменов вне зависимости от того, на каких сайтах они обслуживаются. При запуске загружает в кеш данные по доменам из соответствующих БД.

Разделена на микросервисы по доменам. Данные автоматически синхронизируются между сайтами, обслуживающими домен.
Резервируется в режиме Active-Passive. Масштабируется разделением доменного дерева.

Table 1. Системные характеристики

Код

mdc

Режим работы

Хранилище, сервис

Режим резервирования

Active-Passive

Типы сайтов

Мастер

Слой

Бизнес-логика

Размещение

Внутренний

Сохранение и восстановление состояния при перезагрузке

Да

Приложение

era_dc

Собственное хранилище

PostgreSQL entity DB

Ограничения

  • Присутствует в начальной конфигурации.

  • Должна располагаться только на мастер-сайте. На других сайтах вместо нее используется роль sdc

  • При недоступности роли мастер-сайт не функционирует. Как следствие другие сайты системы не синхронизируют данные доменов между собой. Это имеет значение при обслуживании домена на нескольких сайтах.

Параметры

Table 2. Параметры
Имя Тип Умолчание Описание

name

str

required

Имя. Может состоять из латинских букв и цифр, должно начинаться с буквы.

roletype

str

required

Тип роли. Возможные значения: "mdc".

iface

str

required

Алиас сетевого интерфейса сервера, на котором будет происходить внутреннее взаимодействие ролей между собой.

ext

json

empty

Дополнительные опции роли. Содержит json объект или список.

enabled

bool

empty

Флаг активности роли. При установке в false роль не участвует в валидации и не запускается.

dbconnstrings

array<str>

required

Строки подключения к ферме серверов PostgreSQL, где располагаются (создаются и используются) базы данных доменов с хранилищем сущностей, управляемых доменным центром, и истории их изменения.
Каждый домен имеет одно постоянно активное соединение с БД. При разрыве соединения происходит автоматическое переподключение.
Каждый домен использует оригинальную указанную строку только для создания собственной БД с уникальным именем 'r_domain_%DOMAIN%', а для работы использует модифицированную строку подключения, где в качестве БД подставляет имя своей БД.
Формат строки подключения: "alias://pgdb_strings/<ALIAS_NAME>", где <ALIAS_NAME> – конкретный алиас конфигурации из раздела pgdb_strings.
Перечисление в списке нескольких строк подключения обеспечивает резервный доступ к ферме серверов БД – если подключение через первую строку не удается, производится подключение через вторую и т.д.

group

int

required

Номер группы.
В рамках горизонтального масштабирования роль может быть разделена на несколько групп на сайте, в каждой из которых активен только один экземпляр, а остальные зарезервированы.
Ответственность между группами разделяется по доменным множествам. Вместе все группы обслуживают полное доменное множество. Все роли одной группы должны иметь одинаковую ответственность.
Целое число от 1 до 9999999.

order

int

required

Порядок экземпляра роли в рамках группы.
Определяет в каком порядке будет происходить перетекание в режиме Active-Passive.

include_domains

array<str>

empty

Список имен доменов, которые обслуживает данная группа.
Может быть указан любой домен любого уровня. Указание домена приводит к тому, что дерево его поддоменов будет обслуживаться на этой группе и не будет обслуживаться на других группах роли, исключая только те ветви, которые упомянуты в других группах.
В совокупности все группы роли на сайте обслуживают полное дерево доменов.

Пример конфигурации

Управление конфигурацией производится в приложении, доступном для администраторов мастер-домена. Приложение скрывает полное содержание конфигурации, однако тем не менее оно доступно через API.

Конфигурация содержит раздел для описания всех экземпляров всех ролей. Параметры определяются для каждого конкретного экземпляра роли.

Пример узла
{
  "name": "mdc1",
  "roletype": "mdc",
  "iface": "eth0",

  "dbconnstrings": [
    "alias://pgdb_strings/b",
    "alias://pgdb_strings/c"
  ],
  "group": 11020,
  "order": 2
}

См. также