这是一个创建于 302 天前的主题,其中的信息可能已经有所发展或是发生改变。
最近在做小说网站,需要统计小说作品的点击次数这个业务指标,需要实时记录并提供历史查询功能。
后端用的 golang ,服务器是小服务器 1h2G 哈,不能运行 k8s 啥的。
目前的方案是:
后端程序启动时,查询 mysql 把各个作品的点击数据批量同步到 redis ,这是初始化;
用户点击作品时,更改 redis 中的作品的点击数据,记录下待同步的作品 id ;
在每 10 分钟执行一次的定时任务中,如果发现存在待同步的作品 id ,就把它们的 redis 中的点击数据批量同步到 mysql ;
遇到的问题:
同步点击数据到 mysql 时,从 redis 里取的的可能是 0 值,作品的点击数据就被重置为 0 了;或者 redis 服务意外停了,导致指标数据异常;同步时可能因为延时,导致数据不那么太健康,比如原本 9 点 30 分的数据,记录在了 9 点 38 分。
如何设计一个精简健壮的指标采集同步系统呢?
4 条回复 • 2023-09-05 22:22:16 +08:00
|
|
1
Morriaty 302 天前
健壮点就上 kafka 咯,mysql 只做定时数据校验,kafka 可以从头回溯
|
|
|
2
dahuahua 302 天前
为什么要重新同步回 mysql 呀?而且 redis 又不是不支持持久化
|
|
|
3
IvanLi127 302 天前 via Android
健壮?那先上集群。。。 我认为用这个硬件配置的项目,redis 够了,redis 数据异常是起不来的。
|