上篇文章说了自己最近事情比较少,基本上就是一个做报警脚本的工作,外加给他们拉点店铺数据打下手,倒也算乐的清闲,当然报警脚本这种东西之前是完全没有写过的,所以又陷入了两眼一抹黑的状态,还好有之前的代码,虽然完全没有注释(麻了,为什么大家写代码懒得写注释)。但是靠着问导师,至少磕磕绊绊两礼拜把东西做出来了,还挺好。稍微总结一下用到的知识,至少还是有点之前没接触到的东西的。
流程
简单叙述一下思路,线上的脚本都是配置了对应的任务间隔的,大概是固定几小时更新一次,要做的就是监控脚本有多长时间没有做拉取报表的工作了,一旦超出对应的间隔一定倍数,就发送消息到一个通知容器里,会有机器人读取通知内容在群里进行通知。
报告的成功时间是记录在日志表里的,直接读取对应的表就行,所以还是比较容易的,然后比较难获取的是时间间隔,这个东西配置在触发器里,一个类型一个,如果改成直接从触发器里读,就会异常的多,而且需要建立一个通知类型对应对应的触发器的表,以后如果要添加新的类型的话,难免会要反复对报警脚本的代码进行修修改改,头大。最后请教了一下,直接把任务间隔提到了一个配置文件里,让触发器和报警脚本都去读配置文件,这个问题就解决了。
上面的内容已经基本解决了基本的报警逻辑,然后就是通知部分的写法了,如果每次运行脚本都会发送通知的话,恐怕通知就会异常的多,而且问题出现的话会相当频繁地进行通知,没有必要。之前代码解决这个问题是用缓存传入一个标志来完成的。大概就是一个过一段时间就会释放的值,每次访问的时候都会检测这个值是否存在,如果不存在了,才进行通知,通知后再填入一个缓存标志。如此循环。用这样的方式来避免过于频繁的通知消息发送。
总结
基本只是说了一下思路,具体怎么写就不做介绍了,毕竟其实也没什么难点,大概缓存那里的几个方法,像是put,has和get,看看就好。