編者按: Jay Kreps是來(lái)自LinkedIn的首席工程師,他表示日志幾乎在計(jì)算機(jī)產(chǎn)生的時(shí)候就存在,除了可用在分布式計(jì)算或者抽象分布式計(jì)算模型內(nèi)部之外,還有廣泛的用途。本文中他講述的日志的原理和通過(guò)把日志用做單獨(dú)服務(wù)來(lái)實(shí)現(xiàn)數(shù)據(jù)集成、實(shí)時(shí)數(shù)據(jù)處理以及分布式系統(tǒng)設(shè)計(jì)。文章內(nèi)容非常干貨,值得學(xué)習(xí)。
以下是原文:
我在六年前的一個(gè)令人興奮的時(shí)刻加入到LinkedIn公司。從那個(gè)時(shí)候開始我們就破解單一的、集中式數(shù)據(jù)庫(kù)的限制,并且啟動(dòng)到特殊的分布式系統(tǒng)套件的轉(zhuǎn)換。這是一件令人興奮的事情:我們構(gòu)建、部署,而且直到今天仍然在運(yùn)行的分布式圖形數(shù)據(jù)庫(kù)、分布式搜索后端、Hadoop安裝以及第一代和第二代鍵值數(shù)據(jù)存儲(chǔ)。
從這一切里我們體會(huì)到的最有益的事情是我們構(gòu)建的許多東西的核心里都包含一個(gè)簡(jiǎn)單的理念:日志。有時(shí)候也稱作預(yù)先寫入日志或者提交日志或者事務(wù)日志,日志幾乎在計(jì)算機(jī)產(chǎn)生的時(shí)候就存在,同時(shí)它還是許多分布式數(shù)據(jù)系統(tǒng)和實(shí)時(shí)應(yīng)用結(jié)構(gòu)的核心。
不懂得日志,你就不可能完全懂得數(shù)據(jù)庫(kù),NoSQL存儲(chǔ),鍵值存儲(chǔ),復(fù)制,paxos,Hadoop,版本控制以及幾乎所有的軟件系統(tǒng);然而大多數(shù)軟件工程師對(duì)它們不是很熟悉。我愿意改變這種現(xiàn)狀。在這篇博客文章里,我將帶你瀏覽你必須了解的有關(guān)日志的所有的東西,包括日志是什么,如何在數(shù)據(jù)集成、實(shí)時(shí)處理和系統(tǒng)構(gòu)建中使用日志等。
第一部分:日志是什么?