【发布时间】:2017-09-25 06:22:55
【问题描述】:
我们正在使用套接字 i/o 来处理大量实时数据。用户使用套接字发送/接收数据。由于我们使用的是负载均衡器,所以我们不能使用 socket i/o 的命名空间模型,而是在 socket 中使用 redis 的 pub/sub。
到目前为止,我们正在为每个用户每个频道的订阅创建单独的 redis 连接。但是最近我们遇到了 redis 上的最大连接数达到 (Error: Ready check failed: ERR max number of clients reached) 的问题,我们发现这是因为通过 pub sub 的 redis 连接太多。
为了反驳这一点,我想到不是每个用户使用多个订阅 redis 连接,为什么不使用一个发布 redis 连接和一个订阅 redis 连接来监听所有频道,并且可以通过以下方式实现:
var pub = redis.createClient();
var sub = redis.createClient();
sub.psubscribe('*');
sub 将收听所有频道。此外,我们可以将用户订阅的频道信息存储在套接字对象中,并相应地处理数据。
希望我对问题陈述很清楚,并想了解使用此设计模式的性能如何?
【问题讨论】:
标签: node.js sockets redis socket.io publish-subscribe