原谅我,我只是在学习Kafka
。当我阅读commit-log
的材料时,我多次遇到一个名为Kafka
的单词。但仍然不知道究竟是什么。提到的链接如下。
https://kafka.apache.org/documentation/#uses_commitlog
Kafka可以作为分布式的外部提交日志 系统。该日志有助于在节点之间复制数据,并充当 重新同步机制,以便故障节点恢复其数据。
我在这一切中学到的最有用的东西之一就是很多 我们正在构建的东西有一个非常简单的概念: 日志。有时称为预写日志或提交日志或 交易记录,
https://kafka.apache.org/protocol.html#protocol_partitioning
Kafka是一个分区系统,因此并非所有服务器都具有完整功能 数据集。而是回想一下,主题被拆分为预定义的 分区数P,每个分区都复制一些 复制因子,N。主题分区本身只是订购 "提交日志" 编号为0,1,...,P。
commit-log是什么意思?与DBMS的概念有什么不同?怎么理解呢?感谢。
答案 0 :(得分:5)
从概念上讲,"提交日志"之间没有区别。 Kafka提供的以及DBMS使用的提交日志/事务日志/预写日志:它们都是关于记录对某些内容所做的更改以便以后可以重放的内容。
对于DBMS,如果数据库未完全关闭并且必须确保DB在一致状态下恢复服务,则会发生此重放。重要的是,在数据库中,此提交日志是数据库的实现细节,不是数据库客户端的关注点。
在Kafka应用程序中,此提交日志是一流的概念。主题的订阅者可以为自己重建应用程序的状态,如果他们想要(实际上,"重放日志")。他们还可以对主题中的特定事件做出反应,并了解特定状态是如何实现的,传统的DBMS都不容易。