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

最近在做小说网站,需要统计小说作品的点击次数这个业务指标,需要实时记录并提供历史查询功能。

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

遇到的问题:
同步点击数据到 mysql 时,从 redis 里取的的可能是 0 值,作品的点击数据就被重置为 0 了;或者 redis 服务意外停了,导致指标数据异常。

这是简化后的描述,实际上是把 redis 的数据同步到 mysql 与 clickhouse。
后端使用的是golang


回答:

数据初始化的时候做一些验证,,用 Redis 的原子操作(INCR)来更新点击次数,增量的数据才做更新,给每个每个作品加一个最后时间的时间戳

以上是 业务指标的采集与同步如何设计呢? 的全部内容, 来源链接: utcz.com/p/945329.html

回到顶部