猿问

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

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


慕码人8056858
浏览 242回答 2
2回答

繁星点点滴滴

这个问题可以更笼统地表述:你有一个值的集合。您需要迭代集合,添加到集合中并从高并发的集合中删除。我将从您的建议开始:使用受互斥锁保护的映射。如果您发现互斥锁上存在高争用,则考虑使用锁条带化。这是您使用 N 互斥锁和映射对的地方,其中该对是通过键的散列选择的。
随时随地看视频慕课网APP

相关分类

Go
我要回答