写在前面的 最近看了Kafka Summit上的这个分享,觉得名字很霸气,标题直接沿用了.这个分享源于社区的KIP-500,大体的意思今后Apache Kafka不再需要ZooKeeper.整个分享大约40几分钟.完整看下来感觉干货很多,这里特意总结出来.如果你把这个分享看做是<三国志>的话,那么姑且就把我的这篇看做是裴松之注吧:) 客户端演进 首先,社区committer给出了Kafka Java客户端移除ZooKeeper依赖的演进过程.下面两张图总结了0.8.x版本和0.11.x版本(是…
转载自 huxihx,原文链接 Kafka水位(high watermark)与leader epoch的讨论 本文主要讨论0.11版本之前Kafka的副本备份机制的设计问题以及0.11是如何解决的.简单来说,0.11之前副本备份机制主要依赖水位(或水印)的概念,而0.11采用了leader epoch来标识备份进度.后面我们会详细讨论两种机制的差异.不过首先先做一些基本的名词含义解析. 水位或水印(watermark)一词,也可称为高水位(high watermark),通常被用在流式处理领域…
~~~这是一篇有点长的文章,希望不会令你昏昏欲睡~~~ 本文主要讨论0.11版本之前Kafka的副本备份机制的设计问题以及0.11是如何解决的.简单来说,0.11之前副本备份机制主要依赖水位(或水印)的概念,而0.11采用了leader epoch来标识备份进度.后面我们会详细讨论两种机制的差异.不过首先先做一些基本的名词含义解析. 水位或水印(watermark)一词,也可称为高水位(high watermark),通常被用在流式处理领域(比如Apache Flink.Apache Spark…
如果某个broker挂了,leader副本在该broker上的分区就要重新进行leader选举.来简要描述下leader选举的过程 1.4.1 KafkaController会监听ZooKeeper的/brokers/ids节点路径,一旦发现有broker挂了,执行下面的逻辑.这里暂时先不考虑KafkaController所在broker挂了的情况,KafkaController挂了,各个broker会重新leader选举出新的KafkaController 1.4.2 leader副本在该br…
Kafka Need No Keeper 最近在鹅厂工作中不断接触到Kafka,虽然以前也使用过,但是对其架构和发展过程总是模模糊糊,所以在回学校准备末考的时候找些资料总结一下. Kafka Need No Keeper 是一个在Kafka Submit分享的标题,我也是看了Kafka needs no Keeper(关于KIP-500的讨论)这篇博客分享后才对Kafka有了初期的认识,如果想要了解细节的话可以直接阅读该博客分享,本篇博客是一次对Kafka的自我总结,多少有些大白话和概括之意.…
所有的讨论都是基于KIP-291展开的.抱歉,这又是一篇没有图的文字. 目前Kafka broker对所有发过来的请求都是一视同仁的,不会区别对待.不管是用于生产消费的PRODUCE和FETCH请求,还是controller端发送的LeaderAndIsr/StopReplica/UpdateMetadata请求,亦或是其他类型的请求也是一样.通常我们这里把PRODUCE/FETCH请求称为数据类请求:把controller发送的那3种请求称为控制类请求或controller类请求——在源码中前…
引言 前几期的评测中,我们对比了Kafka和RocketMQ的吞吐量和稳定性,本期我们要引入一个新的评测标准--软件可靠性. 何为"可靠性"? 先看下面这种情况:有A,B两辆越野汽车,在城市的周边地区均能很好应对泥泞的路况.当一同开去穿越西藏,A车会因为西藏本地的汽油不达标,导致油路受阻无法点火,而B车顺利完成了穿越.因此我们说,B车的可靠性比A车高. 何为"软件可靠性"? "软件的可靠性"就是考察软件在各种异常突发的情况下的应对能力.常见的软件…
Commit Log Kafka储存消息的文件被它叫做log,按照Kafka文档的说法是: Each partition is an ordered, immutable sequence of messages that is continually appended to—a commit log 这反应出来的Kafka的行为是:消息被不断地append到文件末尾,而且消息是不可变的. 这种行为源于Kafka想要实现的功能:高吞吐量,多副本,消息持久化.这种简单的log形式的文件结构能够更好…
集中讨论以下3 个有意思的话题 :• Kafka 如何进行复制:• Kafka 如何处理来自生产者和消费者的请求 :• Kafka 的存储细节,比如文件格式和索引. 集群成员关系 Kafka 使用 Zoo keeper 来维护集群成员的信息.每个 broker 都有一个唯一标识符,这个标识符可以在配置文件里指定 ,也可以自动生成.在 broker 启动的时候,它通过创建临时节点把自己的ID注册到 Zookeeper.Kafka 组件订阅 Zookeeper 的/brokers/ids 路径(br…
引言 前几期的评测中,我们对比了Kafka和RocketMQ的吞吐量和稳定性,本期我们要引入一个新的评测标准——软件可靠性. 何为“可靠性”? 先看下面这种情况:有A,B两辆越野汽车,在城市的周边地区均能很好应对泥泞的路况.当一同开去穿越西藏,A车会因为西藏本地的汽油不达标,导致油路受阻无法点火,而B车顺利完成了穿越.因此我们说,B车的可靠性比A车高. 何为“软件可靠性”? “软件的可靠性”就是考察软件在各种异常突发的情况下的应对能力.常见的软件异常有:磁盘损坏.进程意外退出.宿主机宕机等情况.…