producer生产者:负责向客户端发送消息.
Consumer Group:消费者组,消费者组中有多个消费者,一个分区只能有一个组内的消费者消费;消费者组之间互不影响.消费者组是逻辑上的订阅者.
consumer:消费者:消费者,向Kafka broker 获取消息的客户端
Broker 一个集群由多个broker组成,一个broker可以容纳多个topic
Topic:主题,类似一个队列.
Partition:一个topic可以分为多个partition,每个partition都是一个有序队列
segment:一个partition里面包含多个segment文件段,每个segment里面包含两个文件:index,真实数据
Replication 副本,保证数据数据不丢失,设置副本,分为leader主副本和follower从副本.
Leader:主副本,负责接收生产者发送的数据和向消费者推送数据.
follower:从副本,每个分区有多个从副本,实时从leader同步数据,leader发生故障时,某个follower会成为新的leader.
zookeeper: zk不属于Kafka,但是kafka需要依赖zk.
controller选举:当集群启动时,所有broker都会想zk注册自己信息,哪个broker最先注册就会被选举成为controller,controller将会和zk一起管理kafka集群.
broker注册,kafka集群中每个broker晨读信息都会被zk记录.
topic注册,在kafka中,同一个topic的消息会被分成多个分区,并将其分布在多个broker上,这些分区信息及与broker的对应关系有zk记录.
消费注册:记录加入的消费者节点信息.
生产者负载均衡:zk通过向生产者提供broker的动态信息,生产者从而根据这些信息实现负载均衡.
消费者负载均衡:与生产者类似,Kafka中的消费者同样需要进行负载均衡来实现多个消费者合理地从对应的Broker服务器上接收消息.
由于一个消费者组中一个分区只能由一个消费者消费,所以zk需要记录消费者consumer与分区partition之间的对应关系.
消息消费进度offset记录:定时记录消费者消费信息的进度.
Controller:kafka集群中的主节点,负责监听zk中数据的变化,并生成集群的元数据,并将数据下发到其他broker节点,让其他节点感知集群的变化.此时模拟一个场景,我们创建一个主题(其实就是在ZooKeeper上/topics/topicA这样创建一个目录而已),Kafka会把分区方案生成在这个目录中,此时controller就监听到了这一改变,它会去同步这个目录的元信息,然后同样下放给它的从节点,通过这个方法让整个集群都得知这个分区方案,此时从节点就各自创建好目录等待创建分区副本即可。这也是整个集群的管理机制。