1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/WeBank-DeFiBus

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
6-dynamic-adjust-queue.md 4.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 12:39 96228eb

6. Автоматическое расширение и сжатие очереди

В одной и той же группе потребителей каждая очередь обслуживается только одним экземпляром. Когда количество очередей меньше количества экземпляров потребителей, некоторые экземпляры потребителей не получают очередь; наоборот, когда количество очередей больше количества экземпляров потребителей, каждому потребителю необходимо обслуживать несколько очередей. Если количество очередей не является целым числом, кратным количеству экземпляров потребителей, то некоторые экземпляры должны будут обслуживать больше очередей, чем другие экземпляры в той же группе, что приводит к проблеме неравномерного распределения нагрузки.

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

При необходимости увеличения количества очередей сначала корректируется ReadQueueNum темы, чтобы увеличить количество доступных для чтения очередей; через 10 секунд корректируется WriteQueueNum темы, чтобы увеличить количество доступных для записи очередей. Это позволяет новым расширенным очередям быть сначала обнаруженными и отслеживаемыми потребителями, а затем производителями, которые отправляют сообщения в новые очереди, обеспечивая более плавное расширение.

Когда необходимо уменьшить количество очередей, сначала корректируется WriteQueueNum темы, чтобы уменьшить количество доступных для записи очередей; через пять минут (по умолчанию, настраивается) проверяется, есть ли сообщения, оставшиеся необработанными в очередях, подлежащих сокращению. Если да, то операция сокращения откладывается, позволяя потребителям завершить обработку сообщений в очередях; если нет, корректируется ReadQueueNum, чтобы уменьшить количество доступных очередей.

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

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/WeBank-DeFiBus.git
git@api.gitlife.ru:oschina-mirror/WeBank-DeFiBus.git
oschina-mirror
WeBank-DeFiBus
WeBank-DeFiBus
develop