我们正在研究使用 redis 流作为集群范围的消息传递总线,其中集群中的每个节点都有一个唯一的 id。这个想法是,每个节点在生成时都会创建一个具有该唯一 ID 的消费者组到中央 redis 流,以保证集群中的每个节点都获得每条消息的副本。在一个编排的环境中,集群节点将在运行中生成和删除,每个节点都有一个唯一的 id。随着时间的推移,我可以看到这导致有 100 个甚至 1000 个旧的/未使用的消费者组都订阅了同一个 redis 流。
我的问题是——redis可以处理的消费者群体的数量是否有上限,大量(未使用的)消费者群体是否有任何实际处理成本?似乎消费者组只是存储在redis中的一个指针,它指向流中的最后一个读取条目,并且仅在该组的消费者执行范围XREADGROUP时才被访问。这将导致我假设(无需深入研究 Redis 代码)消费者组的数量确实无关紧要,除了消费者组指针会占用的少量 RAM。
现在,我知道我们应该更聪明,一个节点应该在它被杀死时删除它自己的消费者组,或者我们应该定期清理它,但是如果一个消费者组只是 redis 中的一条记录,我不确定值得付出努力 - 至少在 MVP 开发阶段。
TL;博士; 我的理解是否正确,给定流的消费者组数量没有实际限制,除非使用它们没有处理成本?