我正在考虑将Redis用于新项目架构的一部分。它将包含许多客户端(node.js连接)SUBSCRIBING到特定键,一个进程根据需要发布到这些键。
我很好奇PUBLISH / SUBSCRIBE命令的限制以及如何减轻它们。一个明显的限制是使用Redis在机器上打开的文件描述符的数量,因此在某些时候我需要将Master-Slave或Consistent Hashing实现到多个Redis实例。
有没有人有关于如何使用Redis的PubSub扩展此架构的任何解决方案?
答案 0 :(得分:23)
Redis PubSub非常容易扩展,因为主/从复制会自动发布到所有从属。
最简单的方法是使用例如HAProxy对与node.js的连接进行负载平衡,在每个与发布消息的主服务器同步的Web服务器上运行Redis从服务器。
我不能给你确切的数字,因为这很大程度上取决于底层系统,但这应该非常好。而且您无需管理客户端以及他们手动连接的服务器。你显然需要一些方法来处理会话状态,所以你可能还需要这样做,但是在负载均衡器中比在应用程序中要容易得多。