broker(kafka实例,节点):
kafka应用实例,包含多个topic
无副本机制,宕机就无法使用
kafka集群由多个broker组成
接受生产者的消息,为消息设置偏移量,并提交消息到磁盘保护
为消费者服务,对读取分区的请求作出响应,返回已经提交到磁盘上的消息
topic(主题):
不同消息可以通过主题来区分
topic可以分布在不同的broker上
partition(分区):
一个topic可以有多个分区
一个分区就是一个消息队列,当有且仅有一个消费者消费这个分区时,消息是按顺序消费的。
replica(分区副本):
当节点发生故障时,为了保证partition数据不丢失,且kafka能够正常运行而提供的副本机制
主从副本应该均匀地分步在所有节点上,否则宕机后主从一起挂掉,就没有太大的意义
leader(主副本):
即当前生产者发送消息的对象和消费者获取消息的对象都是leader
follower(从副本):
实时从leader同步数据。leader故障时,通过ISA机制选取一个成为新的leader。
broker(kafka实例,节点)、partition(分区)、leader(主副本)、follower(从副本)关系

producer(生产者)
消息生产者,生产消息后经过处理存放在partition的leader中
Consumer(消费者)
消息消费者,从partition的leader中获取消息消费
ConsumerGroup(消费者组)
可以并行消费partition的leader中的数据
每个消费者组都可以拿到相同的全部数据。
一个分区内的消息只能被同一个组中的一个消费者消费。
当分区数少于消费者数的时候,多于的消费者无事可做(不能消费数据)。
当分区数多于消费者数的时候,有的消费者对应多个分区。
当分区数等于消费者数的时候,每个消费者对应一个分区。
启动多个组,相同的数据会被不同组的消费者消费多次。(即消费者组不会管消息有没有被别的组消费)
controller(控制器)
kafka集群中会有一个或多个broker,其中一个会被选举为controller
当某个分区的leader副本出现故障时,由控制器负责为该分区从follower中选举一个成为新的leader副本
当检测到ISR列表发生变化,有controller通知集群中所有broker更新其MetadataCache信息
增加某个topic分区的时候也会由controller管理分区的重新分配工作
zookeeper(集群管理器)
broker启动时会在zookeeper注册并保持相关的元数据(topic,partition信息等)更新
监测partition中leader的存活性
consumer使用zookeeper来注册信息,用来发现broker和对应的partition列表,并和partition的leader建立socket连接