数据埋点方案及注意事项


背景

最近有个诉求,产品需要根据用户使用频次,使用时长,重新调整菜单的等级和顺序,因此需要对前端的一些事件进行埋点。

一、整体方案

design
整体方案采用后端提供接口,前端相关操作调用后端接口,服务端将埋点数据放在进程内队列,然后根据数据保存策略(定时+定量)产生任务。异步任务循环从队列取数据,达到一定额度,批量写入DB。最后通过Sqoop每天凌晨从mysql抽取数据放入到Hive中,在数据集市中,对Hive中的数据归纳分类展示。

二、注意点

1.接口并发能力

由于前端页面埋点的数据量大,客户操作繁多,所以这个接口并发能力尽量高,能够避免的操作就尽量避免。所以方案中,将埋点数据直接放入到进程的队列中。

2.数据库连接数

埋点接口调用多,若是每次调用,都将数据插入db,对db的连接数是一个大的挑战,所以后端需要采用批量保存的方式。目前批量保存支持两种策略:定时、定量。

3.数据定时清除

这个数据表里面的数据是亿基本,每天产生的数据也至少是500万,所以每天定时清除历史数据,并且需要使用小事务:根据删除日期阈值查询最小id,最大id,每次删除10万条数据,直到全部删完。

总结

方案的考虑,需要多考虑非功能需求,例如此方案中并发,数据库连接,数据大小,每天清除数据大小。考虑的越多,方案才能更加完美。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值