如何在自定义日期范围内以低延迟计算非附加指标(例如“唯一访客”)?

问题描述 投票:0回答:1

我正在与工作人员一起构建一个分析解决方案来计算 30 天的统计数据,并构建一个 UI 来显示它们。

目前,UI 使用固定的

last 30 days
日期范围,但我希望支持具有毫秒响应时间的自定义日期范围。

诸如

video_views
之类的附加指标可以每天预先计算并针对任何日期范围进行求和。

但是,非累加性指标(例如

unique_videos
unique_visitors
)需要不同的方法,因为它们需要考虑唯一值。

如何有效处理非附加指标?

备注:

  • 2000万日活跃用户
  • 5000 万个每日事件
  • 当前基于AWS的解决方案(ECS、Redshift、RDS)
  • 原始数据是点击流
amazon-web-services database-design architecture unique metrics
1个回答
0
投票

我没有设计具有这种活动水平的系统的经验,所以我有兴趣看看提出了哪些其他想法。

  • 收集数据:当发生给定事件(新会话或添加新视频)时,捕获基本信息并将其放入队列中进行处理。 可以是一个队列,也可以是每个事件类型一个队列,您认为最好的都可以。
  • 数据结构/解决方案:使用某种NoSQL数据库,例如DynamoDB。 每个感兴趣的事件都有一个“表”。
  • 处理:处理队列中的项目,为每个事件添加 1 个新条目/记录。
  • 处理选项:采用某种缓存 - 在处理每个结果的同时更新它,使用诸如侧写、后写等缓存模式。

要获取值计数,有一些选项:

  • 只需根据需要从数据库中查询即可。
  • 从缓存中查询。
  • 定期预编译值计数(例如每 5 分钟)- 假设这在功能上是可接受的。
© www.soinside.com 2019 - 2024. All rights reserved.