V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
HashV2
V2EX  ›  程序员

如何统计某个功能模块的运行成功率,数据库该怎么设计不冗余?

  •  1
     
  •   HashV2 · 2021-03-08 16:18:16 +08:00 · 1110 次点击
    这是一个创建于 1341 天前的主题,其中的信息可能已经有所发展或是发生改变。

    当一个模块的单次运行拥有成功和失败的时候,如何统计模块的执行成功率

    类似 celery 或邮件模块,以邮件发送为例:

    邮件发送可以捕获到成功和失败 如何不冗余且高效的统计一个月内邮件发送的成功率?
    难道要每发送一次邮件就往数据库里写一条数据么?然后写 sql 根据时间和结果 count 统计?
    不存关系型数据库的话,存缓存的话又该怎么存数据?

    总觉得不论怎么设计都很臃肿,缓存还能设置个过期时间,关系型数据库还要手动去清除老数据

    因为我只需要一个月内的数据统计,能否做到实时计算存储?

    7 条回复    2021-03-10 11:40:45 +08:00
    leopod1995
        1
    leopod1995  
       2021-03-08 16:43:24 +08:00
    用 count 字段记录某个模块的成功 /失败
    要做统计 -> 必然是要落盘的 -> 不然数据哪里来
    -----
    数据量大 上 redis 1s 刷一次盘 多少个模块一个月就多少条数据
    HashV2
        2
    HashV2  
    OP
       2021-03-08 16:46:58 +08:00
    @leopod1995
    我有想过这个,但是使用 count 字段记录就无法记录时间段了,比如我想要实时显示当前时间近 1 个月内的数据
    leopod1995
        3
    leopod1995  
       2021-03-08 17:55:02 +08:00
    @HashV2
    那就一天一条数据啊。。。 转动你的小脑袋瓜子,一个月不就是 30 条数据么。

    还是取决于你的统计粒度。你先思考业务的最小粒度吧
    qiayue
        4
    qiayue  
       2021-03-08 17:56:02 +08:00
    用 Prometheus
    Thinginitself
        5
    Thinginitself  
       2021-03-09 11:37:49 +08:00
    感觉这是个日志的问题,elasticsearch 感觉满足你的需求
    HashV2
        6
    HashV2  
    OP
       2021-03-09 12:55:52 +08:00
    @Thinginitself 我用了 @leopod1995 的方法,然后存 redis 里一天一条数据,30 天过期,挺好的 感谢
    Thinginitself
        7
    Thinginitself  
       2021-03-10 11:40:45 +08:00
    @HashV2 23333,能解决就好
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2772 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 02:00 · PVG 10:00 · LAX 18:00 · JFK 21:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.