在刚学习kafka的时候,有时候会比较纳闷broker是什么?topic又是什么?一台机器上有多少broker?又有多少的topic和partition?由下面这张图来初识我们的kafka:
上图中包含了一个kafka集群的所有组件:
1)三台broker集群
2)三台zookeeper集群
3)一个生产者producer
4)一组消费者consumer group
5)一个单独的消费者consumer3
6)一个topic1,其中partition是2,表示每个topic有两个分区,replica是3,表示每个分区有三个副本,分布在每台broker上。
蓝色消息发送的流程:
1)producer发送蓝色消息到topic1;
2)假设发送到broker1的topic1中的partition1中,此时这个partition1自动成为了当前partition三个副本replicas的leader,则broker2和broker3的两个partition1自然的成为follower;
3)由当前的replica leader负责当前分区消息的读和写,另外两个分区follower会从leader同步消息。
4)consumer group的consumer1去消费partition1的leader中的消息,则consumer2是不能消费的;同一组内只有一个consumer可以消费消息。
红色消息发送的流程:
1)producer发送蓝色消息到topic1;
2)此时发送到broker2的topic1中的partition2中,此时这个partition2自动成为了当前partition三个副本replicas的leader,则broker1和broker3的两个partition2自然的成为follower;
3)由当前的replica leader负责当前分区消息的读和写,另外两个分区follower会从leader同步消息。
4)consumer3去消费partition2的leader中的消息。
再简单模拟了消息的分布和生产消费过程后,我们具体说明每个组成的功能:
1)producer:消息生产者,向kafka的broker发送消息的客户端。
2)consumer: :消息消费者,向 kafka broker拉取消息的客户端;
3)consumer group:消费者组,由多个 consumer 组成。 消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
4)broker:一台kafka服务器就是一个broker,一个集群在有多个broker。一个broker内可存放逗哥topic。
5 )topic :可以理解为一个队列, 生产者和消费者面向的都是一个 topic。
6 )partition :一个非常大的topic可以分布到多个broker上,一个 topic分为多个partition,每个partition是一个有序的队列。
7)Replica:副本,为保证集群中的某个节点发生故障时,该节点上的 partition 数据不丢失,使得kafka仍然能够继续工作,kafka提供了副本机制,一个topic的每个分区都有若干个副本,一个leader和若干个follower。
8 )leader:每个分区多个副本的主节点,负责数据的读写,即生产者发送数据的对象,以及消费者消费数据的对象都是leader。
9 )follower:每个分区多个副本中的从节点,实时从leader中同步数据,保持和leader数据
同步。leader发生故障时,某个follower会成为新的leader。