美文网首页
变小问题

变小问题

作者: flystarts | 来源:发表于2025-02-18 10:32 被阅读0次

问题现象:
每天上午8点05分,出现acc字段变小


image.png

上面的calc字段是通过物理设备的字段计算得来,acc字段是calc字段的累计值,正常情况下,acc字段不应出现变小

首先怀疑是获取last acc时获取错误
因为acc = last acc + calc
而calc是0,acc变小,可能是last acc获取错误导致
查看代码,看到last acc是先从redis获取,没有则到influx里获取,获取time< 当前时间的最后一条
redis里的缓存则是每次计算后会刷新。这个逻辑看上去没问题
但是如果redis缓存里的数据有误,那么后续数据在这个错误的基础上计算,肯定也都是错误的
所以我们怀疑是redis缓存之前有错误的数据,于是我们把redis清空再继续观察

但是几天后,问题还是出现了
思考为什么每次都是8:05分数据变小?因为每天8点会执行每日重计算,把前一天到今天8点的数据重新计算
所以问题其实是重算的结果和5分钟任务算的结果不一致
不一致是什么时间点开始的,其实很难知道,因为是累计值

为什么不一致?
第一种可能是重算时有对缺失的值进行估值,是不是估值导致的?经过查看,出问题的设备并未估值,所以不是这个原因
第二种可能: 重算时会把一天的所有时间点依次计算,不会少算,但是5分钟任务就不一定了,如果定时器调度失败,那么就漏算了一条。由于acc是累计值,漏算就可能导致数据变小

所以,最大可能就是5分钟任务有漏算,如何保证不漏?
方案1: 调整xxljob参数,增加失败重试次数,串行执行
但是可能导致任务阻塞太多,影响其他任务的调度,不可信

方案2:优化调度方案
xxljob调度时,生成该时间点的任务写入MQ,由MQ的机制保证任务不丢失。
为防止调度失败造成丢任务,在redis里记录当前生成的任务时间点,每次从缓存的时间点往后生成多条任务写MQ
这样通过redis缓存形成一个丢失补偿机制,最多补偿1小时的任务
最终采用此方案

相关文章

  • 【胡小豆日记69】变大好?还是变小好?

    到底是长大好还是变小好呢?长大有长大的好处,变小有变小的好处,哎,这个问题让我很纠结。 大人可以有自己的手机,可以...

  • 如果贺朝变小了 - 草稿

    《如果贺朝变小了(下) 》 谢俞变小篇番外,ooc属于我。 谢俞变小篇直通车:如果谢俞变小了(上) 如果谢俞变小了...

  • Dataset和RDD中的coalesce和repartitio

    Dataset coalesce不进行shuffle,分区从大变小,可以用来解决小文件问题repartition进...

  • 变小

    在意着,不该在意的黑夜 敞开的窗帘,孤单最骄傲 四季花的黄昏,唠唠叨叨,烦恼 肚子饿了,找点吃的 睡不着,星星背后...

  • 变小

    看到小时候,看着 还有老态,感觉 不可逆的时间 尽想,他只可能是一瞬的经历 却出现在我世界的一角 静缓的状态,按着...

  • 2018-09-16

    解决分区变小问题 1,先打开CMD 2,输入diskpart 3,list disk 4,select disk 1

  • 两种方法告诉你如何将PDF文件变小

    如何将PDF文件变小?相信你看到标题就懵了吧,其实这个变小指的是将文件体积变小,那么如何才能够将文件的体积变小呢?...

  • 2018-08-26

    我们处在这个阶段解决了不了的问题,提升自己到另一个阶段。 问题就迎刃而解了。 心变强大,问题就变小了。

  • 夏天到了,可喜的是,我的‘第二个春天’来了

    弘丹老师说:“当你大了,问题就变小了;当你小了,问题就变大了。” 意思是说,你自身解决问题的能力和问题大小之间是成...

  • 原创分享【问题的变大与变小】

    邹庆会,持续原创分享第1338天,2022年3月16日 在咨询外化中,经常会问这样一个问题:什么时候它(问题)会变...

网友评论

      本文标题:变小问题

      本文链接:https://www.haomeiwen.com/subject/fngdpjtx.html