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

2021-03-08 16:18:16 +08:00
 HashV2

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

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

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

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

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

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

还是取决于你的统计粒度。你先思考业务的最小粒度吧
qiayue
2021-03-08 17:56:02 +08:00
用 Prometheus
Thinginitself
2021-03-09 11:37:49 +08:00
感觉这是个日志的问题,elasticsearch 感觉满足你的需求
HashV2
2021-03-09 12:55:52 +08:00
@Thinginitself 我用了 @leopod1995 的方法,然后存 redis 里一天一条数据,30 天过期,挺好的 感谢
Thinginitself
2021-03-10 11:40:45 +08:00
@HashV2 23333,能解决就好

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/759673

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX