最近一个要求实时的用户人数在线曲线,展示最近 60 秒每一秒在线用户人数,维度大概是全国 400 个市级城市。
因为使用了多机写入数据 redis ,如果分城市优先队列现在我们产品有近 100 个,也就是需要 100*400=4w 个 redis list , 如果将产品所有城市合并成一条记录只需要 400 个 list 。
但问题是我们是分布式多机写入,不能保证多台服务同时写入数据是时序 push 进入 redis queue 。
如果使用 key 过期机制,做 key/value 存储,又会因为 web 服务的时间矫正很难保证到秒级别,而可能在展示出最近 60 秒数据后,每秒请求实时一秒数据时因为系统服务的时间而可能无法找到数据。
不知道大家又没什么遇到过此类问题。多多指教。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.