当前位置 博文首页 > Shockang的博客:Kafka 的核心概念一网打尽
本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系
Kafka 是消息引擎嘛,这里的消息就是指 Kafka 处理的主要对象。
(老版本中叫 message)
消息生产者,发布消息到 Kafka集群的终端或服务。
Kafka集群中包含的服务器。
每条发布到 Kafka集群的消息属于的类别,即 Kafka是面向 topic 的。
主题是承载消息的逻辑容器,在实际使用中多用来区分具体的业务。
partition 是物理上的概念,每个 topic 包含一个或多个 partition。Kafka分配的单位是 partition。
partition是一个有序不变的消息序列。
表示分区中每条消息的位置信息,是一个单调递增且不变的值。
表征消费者消费进度,每个消费者都有自己的消费者位移。
从 Kafka集群中消费消息的终端或服务。
high-level consumer API 中,每个 consumer 都属于一个 consumer group,每条消息只能被 consumer group 中的一个 Consumer 消费,但可以被多个 consumer group 消费。
消费者组内某个消费者实例挂掉后,其他消费者实例自动重新分配订阅主题分区的过程。rebalance 是 Kafka 消费者端实现高可用的重要手段
partition 的副本,保障 partition 的高可用。
Kafka 中同一条消息能够被拷贝到多个地方以提供数据冗余,这些地方就是所谓的副本。
副本还分为领导者副本和追随者副本,各自有不同的角色划分。
副本是在分区层级下的,即每个分区可配置多个副本实现高可用。
replica 中的一个角色, producer 和 consumer 只跟 leader 交互。
replica 中的一个角色,从 leader 中复制数据。
Kafka集群中某个broker宕机之后,是谁负责感知到他的宕机,以及负责进行Leader Partition的选举?
如果你在Kafka集群里新加入了一些机器,此时谁来负责把集群里的数据进行负载均衡的迁移?
包括你的Kafka集群的各种元数据,比如说每台机器上有哪些partition,谁是leader,谁是follower,是谁来管理的?
如果你要删除一个topic,那么背后的各种partition如何删除,是谁来控制?
还有就是比如Kafka集群扩容加入一个新的broker,是谁负责监听这个broker的加入?
如果某个broker崩溃了,是谁负责监听这个broker崩溃?
这里就需要一个Kafka集群的总控组件,Controller。他负责管理整个Kafka集群范围内的各种东西。
cs