Redis ИЗДАТЬ / ПОДПИСАТЬСЯ - PullRequest
16 голосов
/ 28 июня 2011

Я рассматриваю Redis для раздела архитектуры нового проекта. Он будет состоять из множества клиентов (соединения с node.js), ПОДПИСЫВАЮЩИХСЯ на определенные ключи, с одним процессом, ПУБЛИКАЦИОННЫМ для этих ключей при необходимости.

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

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

1 Ответ

23 голосов
/ 28 июня 2011

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

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

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

...