我使用websockets編寫了一個web聊天應用程序。它每頁使用一個連接將新消息推送給在線用戶。在golang中存儲websocket連接的最佳方式是什麼
所以,有很多websocket.Conn
來管理。我目前正在使用地圖。
onlineUser = map[int] *websocket.Conn
當1,000,000頁打開時,我非常擔心地圖。
還有更好的方法來存儲所有的websocket.Conn
?
Erlang的內部數據庫可以用來存儲erlang套接字。
對於Go,我曾考慮使用「encoding/gob」將套接字緩存在memcached或redis中。但之前使用websocket.Conn
它,但被GOB解碼,並將消耗太多的CPU。
一旦你有1E9併發連接,你將會遇到不同的問題。 – Volker
映射是內部的哈希表。 Go的開發人員在這裏做得很好,我不會過多擔心它的性能。 (無論如何,你是否進行了基準測試?) – fuz