每个用户可以拥有 1 个 Redis 流和该流中的一个消费者组吗?例如:每个用户将生成一些内容,他们会将这些内容提供给该消费者组中的一组用户。
这可以扩展吗?如果我们有 10,000 个用户。我们可以有1个流和10,000个消费者组吗?
您当然可以拥有一个包含 10,000 个消费者组的流。这会起作用。但是,有一些注意事项。
流是一个密钥,并且密钥仅存在于单个分片上。而且Redis是单线程的。因此,对该流的所有访问都将通过单个分片上的单个线程进行。换句话说,每个人都会一一看同一个地方。这可能会产生可扩展性问题,具体取决于流填充和/或访问的频率。从本质上讲,该流成为热键。
创建只读副本可能会缓解这一问题——我不太确定消费者组如何使用只读副本——但是将密钥分布在分片之间的标准集群肯定不会有帮助,因为每个密钥都存在于一个且仅一个分片中.
综上所述,Redis 速度相当快,因此这可以很好地工作。它仅取决于上述一些变量。当然,还有您的硬件,虚拟的或其他的。