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

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

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

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

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

讨论数量: 1

场景:小说点击更新是个频繁操作所以需要把数据放到redis中,再异步更新到mysql中。 1、你从redis中取出的值为0的情况,是启动的时候没有把数据加载进来吗? 此时是不是就不更新了,点击肯定是递增的,没有必要更新数据库了。 2、 redis服务崩溃,集群环境下还是很稳定的吧。

7个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!