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

Joe*_*ang 7 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的概念有什么不同?怎么理解呢?谢谢.

小智 7

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

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

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