高性能日志类KLog(已开源代码)

项目开源地址:https://github.com/ihambert/KLog

    上回介绍了超简易日志类,但他有诸多的局限性,注定了不能作为一个网站的日志类。

那什么样的日志类才能用于网站呢。首先来假设三个场景:

场景1:我的网站perfect,几天产生一个bug你吹呀。

场景2:我的网站大多数时间是perfect的呀,但偶尔几秒钟就有几千个bu*生呀。。。

场景3:我的网站非常多人访问呀,平均每秒都有几十条日志产生。

那么咋样的日志类才能既满足这三类场景又能保持高性能呢。首先,批量写入日志应该是大家都能想到的吧,但批量写入日志如何实现,大多数人想到的可能是用一个线程定期循环检查队列,有日志来了我就处理一下,但既然要高性能,这样的循环显然在场景1里面是种浪费,那就得把循环干掉,循环检查队列是种什么操作,是种主动型的操作啊,但记录日志显然是可以使用被动型的嘛,被动型的怎么做呢,我可以在日志来了时开个线程延迟1分钟写日志呀,在这一分钟里那个队列会继续增长,也有可能不变,不管如何,1分钟后我就得批量写日志了,那有没有办法连这一分钟的延迟都不要呢,办法还是有的,比如每次有日志来了时我判断一个队列里第一条日志和当前时间的差值,假如差值大于1分钟,我就批量写日志,那这两种那种比较高性能呢,我没测试过,但我直觉延迟1分钟写日志更高性能,能折腾的就做下测试吧,这个不讨论了;其次加锁

上一篇:opensuse 使用xx-net


下一篇:python的面试问题