重新思考日誌:業務系統竟然是一個大數據庫?

《I Heart Logs 》出版於 2014 年,是一本很短小的書。作者 Jay Kreps,是前 LinkedIn 的 Principal Staff Engineer,也是 LinkedIn 許多著名開源項目的負責人及聯合作者,如 Kafka、Voldemort 等。他是現任 Confluent 的 CEO,主要工作在於圍繞實時數據提供企業級服務支持。這本書算是 Jay Kreps 過去多年實踐的思考結晶。本文主要是對書中的一些看法、觀點的梳理,有興趣可以閱讀原著或博客。

注:本文大部分圖片、內容來自於原著或原博客。

日誌即數據

在討論日誌之前,首先要明確日誌的含義。這裏的日誌並非指我們常用的非結構化或半結構化的服務日誌,而更接近數據庫中常見的結構化的提交日誌 (commit log/journal/WAL),這些日誌通常是隻往後追加數據,這裏的序號暗含着邏輯時間,標識着連續日誌產生的邏輯先後順序:

a-structured-log

數據庫中的日誌

日誌在數據庫中常常被用來實現故障恢復、數據複製、最終一致性等。一個事務提交成功與否在日誌提交成功時就可以確定,只要 WAL 落盤,便可告訴客戶端提交成功,即便數據庫發生故障,也能從 WAL 日誌中恢復數據;日誌 (如 BinLog) 的 pub/sub 機制可以用來在主節點與複製節點之間同步數據,通過同步的進度可以知道不同複製節點的同步進度,此外日誌的邏輯順序保證了主節點與複製節點之間數據的一致性。

原文鏈接:【https://www.infoq.cn/article/QLrFHTKoKwDtGMSF0ISy】。未經作者許可,禁止轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章