在我们的 Spring boot 应用程序中,我们希望使用 Redis 发布-订阅将消息发布到正常情况下拥有大约 500 个侦听器的通道。 但在某些罕见的时间/日子里,听众可能会多达 10000 人。
系统特点如下:
我对以下问题有以下疑问:
频道的听众/订阅者数量有限制吗?
订阅者数量没有限制。但是,Redis 通过 maxclients 配置限制客户端(即连接)数量,默认为 10000。注意:您还需要确保您的系统允许大量打开文件。
在此设置中,当有 10K 个客户端时,这会导致 Redis 中打开 10K 个连接吗?
是
有更好的方法来做到这一点吗? (例如,生产者不是发布到 pub-sub,而是在 Redis 中创建密钥,而消费者可以按计划检查 Redis 密钥是否存在)
你的建议还不错,因为订阅者太多的情况很少见。
此外,您可以为主服务器设置多个副本,并将订阅者分发到这些副本。这样每个副本就不必维护太多的连接。