Redis Пределы PUBLISH/SUBSCRIBE

Я рассматриваю Redis для раздела архитектуры нового проекта. Он будет состоять из большого количества клиентов (node.js-соединений). ПОДПИСАТЬСЯ на определенные клавиши с одним процессом. ИЗДАТЬ эти ключи по мере необходимости.

Мне любопытно ограничить команды PUBLISH/SUBSCRIBE и как их смягчить. Очевидным ограничением является количество файловых дескрипторов, открытых на машине с помощью Redis, поэтому в какой-то момент мне нужно будет реализовать Master-Slave или Consistent Hashing для нескольких экземпляров Redis.

Есть ли у кого-нибудь решения о том, как масштабировать эту архитектуру с помощью Redis 'PubSub?

Ответы

Ответ 1

Redis PubSub очень легко масштабируется, так как репликация Master/Slave автоматически публикует все подчиненные.

Самый простой способ - сбалансировать соединения с node.js с помощью, например, HAProxy, запустить подчиненный Redis на каждом веб-сервере, который синхронизируется с одним ведущим, который публикует сообщения.

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