commit-log在Kafka中意味着什么?

时间:2017-07-17 08:01:40

标签: apache-kafka

原谅我,我只是在学习Kafka。当我阅读commit-log的材料时,我多次遇到一个名为Kafka的单词。但仍然不知道究竟是什么。提到的链接如下。

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

  

Kafka可以作为分布式的外部提交日志   系统。该日志有助于在节点之间复制数据,并充当   重新同步机制,以便故障节点恢复其数据。

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

  

Kafka是一个分区系统,因此并非所有服务器都具有完整功能   数据集。而是回想一下,主题被拆分为预定义的   分区数P,每个分区都复制一些   复制因子,N。主题分区本身只是订购   "提交日志" 编号为0,1,...,P。

commit-log是什么意思?与DBMS的概念有什么不同?怎么理解呢?感谢。

1 个答案:

答案 0 :(得分:5)

从概念上讲,"提交日志"之间没有区别。 Kafka提供的以及DBMS使用的提交日志/事务日志/预写日志:它们都是关于记录对某些内容所做的更改以便以后可以重放的内容。

对于DBMS,如果数据库未完全关闭并且必须确保DB在一致状态下恢复服务,则会发生此重放。重要的是,在数据库中,此提交日志是数据库的实现细节,不是数据库客户端的关注点。

在Kafka应用程序中,此提交日志是一流的概念。主题的订阅者可以为自己重建应用程序的状态,如果他们想要(实际上,"重放日志")。他们还可以对主题中的特定事件做出反应,并了解特定状态是如何实现的,传统的DBMS都不容易。