2011-06-28 19 views
15

Considero a Redis como una sección de la arquitectura de un nuevo proyecto. Consistirá en una gran cantidad de clientes (conexiones node.js) SUSCRIBIENDO a claves particulares con un proceso PUBLICANDO a esas claves según sea necesario.Redis PUBLISH/SUBSCRIBE limits

Tengo curiosidad sobre los límites de los comandos PUBLICAR/SUSCRIBIR y cómo mitigarlos. Un límite obvio es la cantidad de descriptores de archivos abiertos en la máquina con Redis, por lo que en algún momento tendré que implementar Master-Slave o Constant Hashing en varias instancias de Redis.

¿Alguien tiene alguna solución sobre cómo escalar esta arquitectura con Redis 'PubSub?

Respuesta

22

Redis PubSub escala muy fácilmente ya que la duplicación Maestro/Esclavo se publica automáticamente en todos los esclavos.

La manera más fácil es balancear la carga de las conexiones a node.js con HAProxy, por ejemplo, ejecutar un esclavo Redis en cada servidor web que se sincroniza con un único maestro que publica los mensajes.

No puedo darle números exactos, ya que eso depende en gran medida del sistema subyacente, pero esto debería escalar extremadamente bien. Y no necesita administrar los clientes y a qué servidor se conectan manualmente. Obviamente, necesita alguna forma de manejar el estado de la sesión, por lo que es posible que tenga que hacerlo de todos modos, pero eso es mucho más fácil de hacer en el equilibrador de carga que en su aplicación.