精華 騰訊宣布開源 其高性能日志系統(tǒng) BqLog
騰訊宣布開源 BqLog,一個(gè)源于《Honor Of Kings》(王者榮耀國(guó)際服)的,輕量級(jí)、跨平臺(tái)、高性能的日志組件。由 C++ 實(shí)現(xiàn),同時(shí)支持 Java,C# 的調(diào)用。可以用于 Unreal、Unity 等游戲引擎,也能用于 Android、IOS 環(huán)境下的 App。在 Windows、Mac、Linux 等的桌面和服務(wù)器環(huán)境也能夠很好運(yùn)行。
主要特點(diǎn)
高并發(fā),高性能
現(xiàn)在業(yè)界有很多開源日志組件,不管是 Java,C++ 還是其他語(yǔ)言實(shí)現(xiàn),通過(guò)實(shí)測(cè),性能最高的還是 Log4j2,當(dāng)其運(yùn)行于異步模式下的時(shí)候,對(duì)比其他日志組件有巨大的性能優(yōu)勢(shì)。而 BqLog 同樣運(yùn)行在異步模式下的時(shí)候,比 Log4j 有 5 倍以上的性能提升(見 Github 內(nèi)的 README 和 benchmark)。同時(shí)在 Java 和 C# 環(huán)境下使用的時(shí)候,可以做到無(wú) GC。
低內(nèi)存
由于 BqLog 源自手機(jī)游戲,所以必須適應(yīng)嚴(yán)苛的內(nèi)存使用限制。整個(gè)組件本身的內(nèi)存消耗只在 1M 左右。
高壓縮比
BqLog 推出了一種自有知識(shí)產(chǎn)權(quán)的日志壓縮格式,在日常環(huán)境中,最后生成的日志不僅尺寸只有文本格式的 20% 到 30% 左右,其寫入性能還超出普通格式很多。(見 Github 內(nèi)的 README 和 benchmark)
防數(shù)據(jù)丟失
異步日志最大的問(wèn)題是當(dāng)程序發(fā)生異常結(jié)束的時(shí)候,內(nèi)存里的數(shù)據(jù)還沒(méi)來(lái)得及寫入日志文件,BqLog 提供了多種解決方案用于避免數(shù)據(jù)丟失。
高泛用性
BqLog 提供動(dòng)態(tài)庫(kù),靜態(tài)庫(kù),源代碼等多種導(dǎo)入方式,本身代碼除了 stdlibc 之外,沒(méi)有任何依賴。所以可以在 Android NDK 的 ANDROID_STL=none 的嚴(yán)格模式下通過(guò)編譯。
可擴(kuò)展
BqLog 提供自定義 adapter 支持,可以用于適配各種不同的數(shù)據(jù)類型,本身已經(jīng)默認(rèn)提供了針對(duì) Unreal 引擎常用數(shù)據(jù)類型的支持。