2017-07-17 72 views
0

原諒我我只是在學習Kafka。我在閱讀Kafka的資料時遇到過多次名爲commit-log的單詞。但仍然不知道究竟是什麼。提到的鏈接如下所示。在Kafka中提交日誌的含義是什麼?

https://kafka.apache.org/documentation/#uses_commitlog

卡夫卡可以作爲一種外部提交日誌對於分佈式 系統。該日誌有助於在節點之間複製數據,並作爲失敗節點的重新同步機制來恢復其數據。

https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying

其中最有用的東西,在這一切的教訓是很多的 我們正在建立的東西在他們的心臟有一個非常簡單的概念: 日誌。有時也被稱爲預寫日誌提交日誌事務日誌

https://kafka.apache.org/protocol.html#protocol_partitioning

卡夫卡是一個分區系統,所以並不是所有的服務器都具有完整的 數據集。相反,回想一下,主題分成預定義的 數量的分區P,並且每個分區使用一些 複製因子N進行復制。主題分區本身只是訂購了 「提交日誌」編號爲0,1,...。 ..,P.

commit-log是什麼意思?與DBMS的概念有什麼不同?如何理解它?謝謝。

回答

2

從概念上講,Kafka提供的「提交日誌」與DBMS使用的提交日誌/事務日誌/預先寫入日誌在概念上沒有區別:它們都是關於記錄對某事進行的更改以便可以重播後來。

對於DBMS,如果數據庫沒有完全關閉並且需要確保數據庫以一致狀態恢復服務,則會發生此重播。重要的是,在數據庫中,這個提交日誌是數據庫的實現細節,不是數據庫客戶端關心的問題。

在Kafka應用程序中,這個提交日誌是第一類的概念。如果他們想要(實際上是「重放日誌」),則主題的訂閱者可以爲他們自己重新構建應用程序的狀態。他們還可以對主題中的特定事件做出反應,並瞭解特定狀態是如何到達的,傳統DBMS對這兩者都不是那麼容易。

相關問題