gpt4 book ai didi

concurrency - 维护打开的 websocket 连接列表的最佳方法是什么?

转载 作者:IT王子 更新时间:2023-10-29 02:05:40 62 4
gpt4 key购买 nike

我想向通过 websocket 连接到我的每个客户端发送消息流(Go 中的 channel )。每 ~100 毫秒发送一条新消息。我如何维护一个打开的连接列表,连接一直打开和关闭,同时必须对该列表进行某种迭代以发送超过 50,000 个连接的消息?现在我将连接存储在与单个互斥体同步的映射中,但我不确定这是否可以扩展。

最佳答案

最好的方法是根本不维护列表。

每个连接都应连接到具有给定标识符(例如:用户 ID、连接 ID 等)的集线器,订阅此类标识符的消息并使用该标识符发布消息。如果需要,还可以订阅全局消息和群组消息。

更新:

要扩展到 50K+ 连接,您将需要一种更加分布式的方法,而不是带有互斥锁的简单映射。例如:https://github.com/bitly/nsq (在 GO 中制作)“NSQ 是一个实时分布式消息传递平台,旨在大规模运行,每天处理数十亿条消息。”

关于concurrency - 维护打开的 websocket 连接列表的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27370217/

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