> Linux安全 >

腾讯开源高性能日志系统 BqLog

腾讯宣布开源 BqLog,一个源于《Honor Of Kings》(王者荣耀国际服)的,轻量级、跨平台、高性能的日志组件。由 C++ 实现,同时支持 Java,C# 的调用。可以用于 Unreal、Unity 等游戏引擎,也能用于 Android、IOS 环境下的 App。在 Windows、Mac、Linux 等的桌面和服务器环境也能够很好运行。
 
主要特点
高并发,高性能
 
现在业界有很多开源日志组件,不管是 Java,C++ 还是其他语言实现,通过实测,性能最高的还是 Log4j2,当其运行于异步模式下的时候,对比其他日志组件有巨大的性能优势。而 BqLog 同样运行在异步模式下的时候,比 Log4j 有 5 倍以上的性能提升(见 Github 内的 README 和 benchmark)。同时在 Java 和 C# 环境下使用的时候,可以做到无 GC。
 
低内存
 
由于 BqLog 源自手机游戏,所以必须适应严苛的内存使用限制。整个组件本身的内存消耗只在 1M 左右。
 
高压缩比
 
BqLog 推出了一种自有知识产权的日志压缩格式,在日常环境中,最后生成的日志不仅尺寸只有文本格式的 20% 到 30% 左右,其写入性能还超出普通格式很多。(见 Github 内的 README 和 benchmark)
 
防数据丢失
 
异步日志最大的问题是当程序发生异常结束的时候,内存里的数据还没来得及写入日志文件,BqLog 提供了多种解决方案用于避免数据丢失。
 
高泛用性
 
BqLog 提供动态库,静态库,源代码等多种导入方式,本身代码除了 stdlibc 之外,没有任何依赖。所以可以在 Android NDK 的 ANDROID_STL=none 的严格模式下通过编译。
 
可扩展
 
 BqLog 提供自定义 adapter 支持,可以用于适配各种不同的数据类型,本身已经默认提供了针对 Unreal 引擎常用数据类型的支持。

 
(责任编辑:IT)