请教一个系统设计题

320 天前
 zdking08135
一个系统,客户端会上报统计点,上报本身不去重,报一次记一次:
uid ,地域(城市省份国家),打点时间(时间戳)。

这里定位服务保证地域唯一。

要求实现如下能力:

- 统计指定地域(最小城市维度,省份,国家也可以)与时间范围(天维度)内的单 uid 单日平均打点数
(结果是按天输出,每天一个指定地域平均数)。

- 查询支持实时 & 支持输入。

- 时间范围,最长 1 年。

- 地域支持多地域 or 查询,但是多地域出现的 uid 需要合并统计。(比如,用户同一天在 A,B 两地上报,如果查询条件为 A or B ,那么这个用户的打点数要合并计算)

指标:用户量 10 亿,单 uid 单日打点数 10~50 之间,城市范围覆盖到全球。
3646 次点击
所在节点    程序员
22 条回复
zzmark06
319 天前
按题目数据量级,大概算下来,一年大概 18 万亿行,磁盘空间应该在 1t 到 2t 之间,写入带宽都喂不满一个单点 ck 配几块机械盘
不过列存嘛,整体结构参考上面 @dlmy 兄弟的描述
xueling
318 天前
兄弟,用我的开源软件,不能帮你实现所有需求,但是可以帮你实现很多需求,可以实现统计 1 天内、小时级、分钟级的 uv,和各地区的 uv ,支持高并发查询结果。至于地区模糊查询和超过 1 天以上日期的查询可以借助 clickhouse 或离线统计来实现。为什么不建议全部使用 ck ,因为 ck 每次查询都是全量计算,并发查询效率比较低。我的开源项目: https://github.com/xl-xueling/xl-lighthouse.git ,有问题找我~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1029046

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX