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

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

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

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

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

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

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

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

© 2021 V2EX