Распределение сообщений между группами серверов

Логика распределения сообщений на отправку

Для каждой группы серверов создается собственный пул – набор потоков, который обрабатывает сообщения.

Для пула возможно включить буфер – область памяти пула для промежуточного хранения сообщений, которая снижает нагрузку на очередь. Благодаря буферу потоки чаще обращаются к этой области памяти, а не напрямую к очереди, что снижает нагрузку на очередь.

Каждый пул работает со своей очередью сообщений и забирает сообщения либо напрямую из нее, либо из буфера, если буфер включен. Каждый буфер хранит информацию о состоянии своей очереди.

Есть возможность установить дополнительные правила выбора очереди, из которой пул будет забирать сообщение. Для этого необходимо настроить правило обработки очередей.

Порядок распределения сообщений:

  1. Система определяет, к какой группе серверов относится получатель.

  2. Система определяет пул, соответствующий группе серверов.

  3. Выбранный системой пул обрабатывает сообщение.

Обработка сообщений при перегрузке пула

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

Когда нагрузка уменьшается и появляются свободные потоки, сообщения из этого списка начинают обрабатываться и отправляться.

Настройка

Количество сообщений в пуле и буфере настраивается отдельно для каждой группы серверов в группе параметров кластера nodeGroupCollection:

  • poolMessagesCount (integer): количество сообщений в пуле. Значение по умолчанию 5000.

  • poolMessagesSize (integer): размер сообщений в пуле. Значение по умолчанию 524288000 байт (соответствует 500 МБ).

  • buffering (boolean): включен ли буфер для данного пула. По умолчанию буфер выключен.

Чтобы установить количество сообщений в пуле и (или) включить буфер, перейдите в ЦН в раздел Обслуживание -> Кластеры и включите режим редактора кофигурации. Укажите значения параметров для каждой группы серверов.

Мониторинг

Что просмотреть информацию о состоянии пула и буфера, перейдите в ЦМ по пути Сервер -> вкладка Основные. В дереве раскройте показатель Передача на другие серверы – в нем отображаются значения для каждой группы серверов:

  • Сообщений в пуле: количество сообщений в пуле.

  • Буфер: количество сообщений в буфере, если буфер включен, или метка Не используется.

../_images/message_routing.png