角色介绍:
- Producer:消息生产者,负责发送消息到kafka集群
- **Broker ** : kafka服务端,负责接收客户端(producer/consumer )请求、存储消息、协调消费组等。Broker没有主从之分,只不过通过Zookeeper选择出一个控制节点,控制节点负责管理整个集群中所有分区和副本的状态,例如分区故障后重新选择leader分区等。
- **Consumer **:负责从Broker上拉取消息进行业务处理。
- **Zookeeper **:负责协调整个Broker集群,负责选取控制Broker、存储集群 元数据 、topic路由信息存储等。
- Log:磁盘上的日志目录,消息就是存储在log中。
- **Topic **:kafka中的消息以topic为单位进行划分,生产者将消息发送到特定topic,而消费者负责订阅topic的消息并进行消费。
- **Offset **:offset是消息在分区中的唯一标识,kafka通过它来保证消息在分区的顺序性,不过offset并不跨越分区,也就是kafka保证的是分区有序性而不是主题有序性。
- **Record **:实际写入kafka中并可以被读取的消息记录。每个record包含了key、value和timestamp。
- Leader:每个分区多个副本的“主”leader,生产者发送数据的对象,以及消费者消费数据的对象都是leader。
- **Follower **:每个分区多副本中的“从”follower,实时从Leader中同步数据,保持和leader数据的同步。Leader发生故障时,某个follower会成为新的leader。
- Consumer ****** Group: **Consumer Group 为消费者组,一个消费者组可以包含一个或多个Consumer。使用多分区 + 多消费者 方式可以极大提高数据下游的处理速度,同一消费者组中的消息不会重复消费,同样的,不同消费组中组中的消费者消费消息时互不影响。 K afka就是通过消费者组的方式来实现P2P模式和广播模式。
- **Replication **: 副本,是kafka保证数据高可用的方式,kafka同一Partition的数据可以在多Broker上存在多个副本,通常只有主副本对外提供读写服务,当主副本所在broker崩溃或发生网络异常,kafka会在Controller的管理下重新选择新的Leader副本对外提供读写服务。
- Partition:一个topic可以分为多个分区,每个分区只属于单个主题。同一个主题下不同分区包含的消息是不同的,分区在存储层面可以看作一个可追加的日志(Log)文件,消息在被追加到分区日志文件的时候都会分配一个特定的偏移量(offset)。