0
要保存大猩猩websocket連接,我可以這樣的事情,其中的密鑰可以是userId。運行GO應用程序的多個實例時的大猩猩websocket連接
connections := make(map[int]*connection)
我使用一種叫做supervisord
這是一個過程控制系統,使我能夠在後臺作爲守護程序運行的Go應用程序 。看起來好像有幾個實例正在產生。
難道這些實例知道如何訪問相同的連接變量,如果我讓全球?
var connections map[int]*connection
還是會有問題?
此外,由於映射不是線程安全的,我應該創建一個結構並添加sync.RWMutex
,然後在檢查密鑰是否存在或從密鑰刪除密鑰之前執行RLock()/ Lock()和RUnlock()/ Unlock地圖?
謝謝!如果我使用多臺服務器進行負載平衡會怎麼樣?我將如何解決保存大猩猩websocket連接的問題,以便所有服務器都能夠訪問它? – Aiden
@Aiden你必須序列化連接。我不認爲這是可能的。你必須重新考慮你的設計 – rightfold
一種方法是粘性會話。 – elithrar