业务指标的采集与同步如何设计呢?

247 天前
 tianshunovel2
最近在做小说网站,需要统计小说作品的点击次数这个业务指标,需要实时记录并提供历史查询功能。
后端用的 golang ,服务器是小服务器 1h2G 哈,不能运行 k8s 啥的。

目前的方案是:
后端程序启动时,查询 mysql 把各个作品的点击数据批量同步到 redis ,这是初始化;
用户点击作品时,更改 redis 中的作品的点击数据,记录下待同步的作品 id ;
在每 10 分钟执行一次的定时任务中,如果发现存在待同步的作品 id ,就把它们的 redis 中的点击数据批量同步到 mysql ;

遇到的问题:
同步点击数据到 mysql 时,从 redis 里取的的可能是 0 值,作品的点击数据就被重置为 0 了;或者 redis 服务意外停了,导致指标数据异常;同步时可能因为延时,导致数据不那么太健康,比如原本 9 点 30 分的数据,记录在了 9 点 38 分。
如何设计一个精简健壮的指标采集同步系统呢?
719 次点击
所在节点    问与答
4 条回复
Morriaty
247 天前
健壮点就上 kafka 咯,mysql 只做定时数据校验,kafka 可以从头回溯
dahuahua
247 天前
为什么要重新同步回 mysql 呀?而且 redis 又不是不支持持久化
IvanLi127
247 天前
健壮?那先上集群。。。
我认为用这个硬件配置的项目,redis 够了,redis 数据异常是起不来的。
hahahahahahahah
247 天前
为啥不用时序数据库来存储

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

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

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

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

© 2021 V2EX