Распределение сообщений между группами серверов
Логика распределения сообщений на отправку
Для каждой группы серверов создается собственный пул – набор потоков, который обрабатывает сообщения.
Для пула возможно включить буфер – область памяти пула для промежуточного хранения сообщений, которая снижает нагрузку на очередь. Благодаря буферу потоки чаще обращаются к этой области памяти, а не напрямую к очереди, что снижает нагрузку на очередь.
Каждый пул работает со своей очередью сообщений и забирает сообщения либо напрямую из нее, либо из буфера, если буфер включен. Каждый буфер хранит информацию о состоянии своей очереди.
Есть возможность установить дополнительные правила выбора очереди, из которой пул будет забирать сообщение. Для этого необходимо настроить правило обработки очередей.
Порядок распределения сообщений:
Система определяет, к какой группе серверов относится получатель.
Система определяет пул, соответствующий группе серверов.
Выбранный системой пул обрабатывает сообщение.
Обработка сообщений при перегрузке пула
Если пул в группе серверов перегружен, то новые сообщения не отправляются сразу, а попадают в отдельный список сообщений.
Когда нагрузка уменьшается и появляются свободные потоки, сообщения из этого списка начинают обрабатываться и отправляться.
Настройка
Количество сообщений в пуле и буфере настраивается отдельно для каждой группы серверов в группе параметров кластера nodeGroupCollection:
poolMessagesCount (integer): количество сообщений в пуле. Значение по умолчанию 5000.
poolMessagesSize (integer): размер сообщений в пуле. Значение по умолчанию 524288000 байт (соответствует 500 МБ).
buffering (boolean): включен ли буфер для данного пула. По умолчанию буфер выключен.
Чтобы установить количество сообщений в пуле и (или) включить буфер, перейдите в ЦН в раздел Обслуживание -> Кластеры и включите режим редактора кофигурации. Укажите значения параметров для каждой группы серверов.
Мониторинг
Что просмотреть информацию о состоянии пула и буфера, перейдите в ЦМ по пути Сервер -> вкладка Основные. В дереве раскройте показатель Передача на другие серверы – в нем отображаются значения для каждой группы серверов:
Сообщений в пуле: количество сообщений в пуле.
Буфер: количество сообщений в буфере, если буфер включен, или метка Не используется.