V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
tianshunovel2
V2EX  ›  问与答

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

  •  
  •   tianshunovel2 · 2023-09-05 14:36:39 +08:00 · 910 次点击
    这是一个创建于 470 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在做小说网站,需要统计小说作品的点击次数这个业务指标,需要实时记录并提供历史查询功能。
    后端用的 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
    Morriaty
        1
    Morriaty  
       2023-09-05 15:01:42 +08:00
    健壮点就上 kafka 咯,mysql 只做定时数据校验,kafka 可以从头回溯
    dahuahua
        2
    dahuahua  
       2023-09-05 16:39:36 +08:00
    为什么要重新同步回 mysql 呀?而且 redis 又不是不支持持久化
    IvanLi127
        3
    IvanLi127  
       2023-09-05 19:48:34 +08:00 via Android
    健壮?那先上集群。。。
    我认为用这个硬件配置的项目,redis 够了,redis 数据异常是起不来的。
    hahahahahahahah
        4
    hahahahahahahah  
       2023-09-05 22:22:16 +08:00 via iPhone
    为啥不用时序数据库来存储
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3023 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:22 · PVG 22:22 · LAX 06:22 · JFK 09:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.