在戈朗存储网络套接字连接的最佳方法是什么



我用websockets写了一个网络聊天应用程序。它每页使用一个连接将新消息推送给在线用户。

因此,有很多websocket.Conn需要管理。我目前正在使用地图。

onlineUser = map[int] *websocket.Conn

当打开1,000,000页时,我非常担心地图。

有更好的方法来存储所有websocket.Conn


Erlang的内部数据库可以用来存储erlang套接字。

对于 Go,我曾考虑过使用"encoding/gob"将套接字缓存在 memcached 或 redis 中。但是在使用websocket.Conn之前,它被GOB解码,这将消耗太多CPU。

1,000,000 个并发用户是一个很好的问题。 :)

您的主要问题是 websocket 规范要求连接保持打开状态。这意味着您无法序列化和缓存它们。

但是,如果您可以对它们进行 GOB 编码,并且每个用户每秒发送一条消息(IMO 高得不切实际),那么每秒一百万次 GOB 解码不会主导您的负载。

此外,地图可以轻松处理一百万个条目。

如果您真的想担心将来的扩展,请弄清楚如何让应用程序的两个实例在负载上协同工作。然后将其增加到 N 个实例。

相关内容

  • 没有找到相关文章

最新更新