Микросервис (mservice)

Описание

Дескриптор консольного микросервиса, запускаемый и поддерживаемый в рабочем состоянии.
Запускается одной или сразу несколькими нодами. В случае падения - автоматически перезапускается, но исключает циклический перезапуск (5 раз за 10 секунд). При превышении система принудительно отключает учетную запись.
Выполняется в виде командной строки, которая может содержать макросы для подстановки домена, URL вебсерверов системы на текущем сайте, путь к папке с лог-журналами.
Команда выполняется в рабочем каталоге, куда предварительно и обязательно распаковывается приложенный zip-архив (attachment). Архив может содержать скрипт, приложение или другие файлы. Архив должен быть обязательно.

Ограничения

  • Коллекция недоступна в мастер-домене.

Поля

Структура сущности
{
  "id": uuid,
  "name": str,
  "cmdline": str,
  "cmdparam": str,
  "enabled": bool,
  "attachment": file,
  "opts": {
    "title": str,
    "comment": str,
    "mode": str,
    "site_mode": str,
    "selected_sites": array<str>,
    "restart_mode": str,
    "heartbeat_timeout": str,
    "attachment_info": object
  },
  "ext": {
    "ct": date,
    "lwt": date
  }
}
Table 1. Поля
Спецификация Описание

Поле: id
Режим: inout
Тип: uuid
По умолчанию: generated

Идентификатор. Может быть задан при создании, иначе генерируется системой.

Поле: name
Режим: in
Тип: str
По умолчанию: required

Название

Поле: cmdline
Режим: in
Тип: str
По умолчанию: required

Исполняемая команда.
Может содержать макросы %WEBSERVERS%, %WEBSERVERS_EX%, %DOMAIN%, %LOGPATH%, %SERVERNAME%.

Поле: cmdparam
Режим: in
Тип: str
По умолчанию: required

Параметры, добавляемые к исполняемой команде.
Может содержать макросы %WEBSERVERS%, %WEBSERVERS_EX%, %DOMAIN%, %LOGPATH%, %SERVERNAME%.

Поле: enabled
Режим: in
Тип: bool
По умолчанию: true

Выключатель активности.

Поле: attachment
Режим: in
Тип: file
По умолчанию: empty

Свойство для загрузки архива с содержимым рабочего каталога. В основном содержит исполняемый скрипт или программу.
Свойство отсутствует в самом объекте, по нему формируется лишь путь к endpoint в REST-API.
Информация о загруженном архиве доступна через opts.attachment_info.

Поле: opts
Режим: in
Тип: object
Составное поле

Поле: opts.title
Режим: in
Тип: str
По умолчанию: empty

Произвольный заголовок

Поле: opts.comment
Режим: in
Тип: str
По умолчанию: empty

Произвольный комментарий

Поле: opts.mode
Режим: in
Тип: str
По умолчанию: active-passive

Режим работы внутри сайта:

  • active-active. На всех экземплярах роли msvc, допущенных до исполнения микросервиса исходя из указанной секции.

  • active-passive. Ровно на одном экземпляре роли msvc в рамках сайта.

Поле: opts.section
Режим: in
Тип: str
По умолчанию: empty

Секция экземпляров ролей msvc, на которых разрешено исполнять этот загружаемый микросервис.
Если секция не задана, то фильтр не применяется.

Для каждого экземпляра msvc в конфигурации может быть указано сразу несколько секций, или не указано вовсе.

Если среди экземпляров msvc на текущем сайте нет ни одного, который обслуживает указанную секцию, то к обслуживанию сущности допускаются все экземпляры msvc текущего сайта.

Поле: opts.leader_mode
Режим: in
Тип: str
По умолчанию: hashring

Режим выбора лидера среди экземпляров msvc, допущенных до исполнения этого микросервиса с учетом указанной секции.
Применяется только в случае, если выбран режим active-passive.

Осуществляется методом сортировки по ключу:

  • hashring. Ключом является хеш от имени домена, микросервиса и ноды.

  • ordered. Ключом является значение конфигурационной опции 'order' экземпляров msvc. В случае если не задан считается равным 0 (наиболее приоритетно). Для экземпляров с равными приоритетами применяется сортировка по хешу.

Поле: opts.site_mode
Режим: in
Тип: empty
По умолчанию: "

Режим работы между сайтами:

  • all. На всех сайтах, обслуживающих домен.

  • selected. На указанных сайтах, которые обслуживают домен.

  • any. На любом из сайтом, обслуживающих домен.

Поле: opts.selected_sites
Режим: in
Тип: str или 'array<object>'
По умолчанию: empty

Список сайтов для режима site_mode='selected'.

Поле: opts.restart_mode
Режим: in
Тип: str
По умолчанию: permanent

Режим перезапуска:

  • permanent. Перезапуск после любого завершения.

  • transient. Перезапуск только при ненулевом коде возврата.

  • temporary. При завершении не перезапускается.

Поле: opts.heartbeat_interval
Режим: in
Тип: int
По умолчанию: 5000

Интервал рассылки уведомления об активности экземпляра роли msvc (500 - 60000 мс).
Для режима mode='active-passive'.

Поле: opts.attachment_info
Режим: out
Тип: object
По умолчанию: empty

Информация о загруженном вложении, доступная для чтения. Само вложение загружается через путь /attachment в REST-API.

Поле: ext
Режим: inout
Тип: object
Составное поле

Позволяет расширять состав произвольными ключами и значениями

Поле: ext.ct
Режим: out
Тип: date
По умолчанию: generated

Время создания объекта

Поле: ext.lwt
Режим: out
Тип: date
По умолчанию: generated

Время последней модификации объекта

См. также