gpt4 book ai didi

java - 绝地武士很多订阅者

转载 作者:IT王子 更新时间:2023-10-29 06:05:42 27 4
gpt4 key购买 nike

我正在用 java 构建一个推送服务器,并计划使用 Redis PubSub 排队发送给客户端的消息。

现在,我的实现在每个设备上都有一个 redis 订阅者。因此,当设备上线时,它会为其设备订阅一个 Redis 队列。

这个比例可以吗/有更好的方法吗?我将拥有成千上万的订阅者。

最佳答案

每台设备一个订阅者应该可以正常工作。我认为扩展问题主要围绕您向每个订阅者发布的内容以及消息的实际位置。您可能还需要考虑在某个时候运行多个 redis 实例,可能由 Redis Sentinel 管理,以确保高可用性。如果主服务器不可用,Redis Sentinel 将处理将您的一个从属 Redis 实例提升为主服务器,然后在它回来并追上时将原始主服务器提升回主服务器。

如果消息对于每个订阅者都是唯一的,那么将消息发送给每个订阅者似乎是一个不错的方法。请注意,redis 中的 pub/sub 不提供持久性,因此,如果我的订阅者断开连接或崩溃或发生任何情况并返回,则他将无法使用自他上次订阅以来发送的所有消息。如果您需要持久性,那么消息可能应该进入每个订阅者的 LIST,并且在 channel 上发布的内容应该只是通知客户端有新消息可用。然后,订阅者可以随意从 LIST 中弹出任何消息,直到 LIST 为空。每当在 channel 上收到通知时,都会重复此过程。

如果一条消息正在广播给所有或许多客户,那么您可能应该考虑将消息本身存储在 redis 键或列表或其他东西中,并在每个受影响的客户的 channel 上发布一条新消息可用以及在哪里(什么键)阅读它。您可以使用多种策略来跟踪哪个订阅者阅读了哪些消息并删除所有人阅读的旧消息。

关于java - 绝地武士很多订阅者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20958489/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com