做什么
记录线上发生的系统异常信息,以及一些我们需要及时通知开发者的信息,以邮件或者是其他信息流的方式,通知开发者处理。
这样子的好处是可以及时通知开发者处理一些线上的问题,不需要等到用户反应问题才去处理。
为什么要异步
一般情况下,发送邮件或者是其他信息流的方法发送消息,都是非常耗系统资源,并且是一个耗时的动作,我们更希望发生异常的时候,只是做一个快速的记录操作(几乎不会消耗多少系统性能),而发送告警消息,通过异步线程去触发。
如何实现
在我们的系统中,通过memcache实现了一个轻量级的队列,之所以使用memcache,主要原因是因为本身系统原本就是使用了memcache作为主要的缓存,不需要再引入其他新的组件。队列提供了两个主要的对外接口,入队&全部出队。
当系统发生异常,或者存在信息我们要发送给开发者时,我们可以将信息进行入队操作,另外在通过一个定时接口,每隔一段时间就将队列中的消息全部出队,组装成消息发送给开发者。
拓展
一般情况下,我们有两种信息需要发送给开发者,一种是异常信息,我们会封装一个异常处理的工具方法,在该方法中,可以把异常信息的toString信息写入队列中,等待自动发送。
另外一种就是一些日常的数据检查,将检查结果定时发送给开发者。都可以直接将信息入队。由于我们的异常信息是每分钟发送一次,所以可以认为是消息几乎实时的。
网友评论