單機(jī)場(chǎng)景下日志采集比較容易携取,即使是數(shù)據(jù)被存放在不同目錄下纳令,通過(guò)幾行代碼也可以輕松的完成采集工作侥锦。
但分布式場(chǎng)景下进栽,日志產(chǎn)生于不同的計(jì)算機(jī)上,日志采集工作可以用以下三種方式:
第一種:傳統(tǒng)文件方式
可以通過(guò)傳統(tǒng)文件的方式進(jìn)行記錄恭垦,并統(tǒng)一收集處理入庫(kù)快毛,這樣的弊端在于數(shù)據(jù)的傳輸與存儲(chǔ)不夠靈活,且維護(hù)成本過(guò)高番挺。
第二種:通過(guò)數(shù)據(jù)庫(kù)進(jìn)行日志記錄
數(shù)據(jù)庫(kù)的讀寫就成了應(yīng)用服務(wù)的瓶頸唠帝,一般情況下,數(shù)據(jù)庫(kù)的讀寫會(huì)好用較多的時(shí)間資源玄柏,會(huì)影響應(yīng)用服務(wù)的質(zhì)量襟衰、穩(wěn)定性與可靠性。即使可以使用分布式高性能數(shù)據(jù)庫(kù)如hbase,這種應(yīng)用服務(wù)與數(shù)據(jù)傳輸?shù)穆?lián)系也是一個(gè)不知何時(shí)會(huì)爆發(fā)的隱患粪摘。
第三種:消息對(duì)列
應(yīng)用服務(wù)把數(shù)據(jù)內(nèi)容通過(guò)各種消息隊(duì)列(kafka)進(jìn)行傳輸瀑晒,然后通過(guò)一個(gè)高性能的日志采集系統(tǒng)(如Flume)采集這些消息隊(duì)列中的數(shù)據(jù)绍坝,進(jìn)行格式統(tǒng)一后,存入目標(biāo)文件系統(tǒng)苔悦。
這種異步處理模式順利將應(yīng)用與數(shù)據(jù)采集解耦轩褐,即使數(shù)據(jù)采集過(guò)程出現(xiàn)問(wèn)題也不會(huì)影響應(yīng)用,進(jìn)一步保證了用戶體驗(yàn)的穩(wěn)定性玖详。