Broker of messages (broker)

Описание

Системный брокер сообщений.
Обеспечивает прием и сохранение данных без нарушения порядка поступления.

Гарантирует доставку поступивших сообщений потребителям. При взятии сообщения потребителем сообщение автоматически удаляется (в отличие от известных брокеров, сохраняющих сообщения на некоторое время). +

Временно и ограниченно хранит данные о событиях в различных процессах, сгенерированных на текущем сайте.
Используется как очередь заданий для процессов пост-обработки (агрегатор cdr, микшер, упаковщик, стенограф и т.д.).

Резервируется в режиме Active-Passive.
Масштабируется разделением на группы по доменам. Потенциально при нехватке производительности может быть разделен на группы по именам очередей. Принципиально: одна очередь - одна группа.

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

Код

broker

Режим работы

Сервис, хранилище

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

Active-Passive

Типы сайтов

Любые

Слой

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

Размещение

Внутренний

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

Да

Приложение

era_broker

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

ODB Mnesia

Ограничения

  • Максимальное количество элементов в одной очереди - 2 млн. После достижения лимита наиболее старые сообщения начинают автоматически удаляться.

  • Максимальная производительность брокера сообщений на прием и выдачу - около 40 тысяч сообщений в секунду.

Параметры

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

name

str

required

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

roletype

str

required

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

iface

str

required

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

ext

json

empty

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

enabled

bool

empty

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

group

int

required

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

order

int

required

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

mnesia_storage_mode

str

disc "Режим работы объектного хранилища.

Возможные варианты:

* disc - полный режим

в оперативной памяти с сохранением на диск на всех экземплярах группы.

  • ram - только в оперативной памяти (с поддержкой распределенности

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

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

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

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

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

  "group": 11400,
  "order": 1
}

См. также