【发布时间】:2020-01-24 08:32:04
【问题描述】:
我们正在使用 MySQL 数据库在 Go 中创建一个 Web 应用程序。我们的用户一次只能有一个活跃的客户。就像 Spotify 一样,您一次只能在一台设备上收听音乐。为此,我制作了一张地图,其中以用户 ID 为键,并将其活动 websocket 连接的引用作为值。基于客户端必须在请求标头中发送的 websocket id,我们可以识别请求来自其活动会话的天气。
我的问题是将数据(在本例中为带有用户 ID 和 websocket 的地图)存储在全局空间中是否是一种好习惯,或者将其存储在数据库中是否更好。
我们预计同时活跃的客户不会超过 10000 个。平均可能会在 1000 左右。
【问题讨论】:
-
如果您最多使用一台服务器来终止 websocket 连接,那么内存中的映射足以记录给定用户的活动连接。如果您计划使用多个服务器,则需要更多信息才能获得答案。
标签: database performance go memory websocket