一、kafka的架构
1、Broker
kafka集群包含一个或者多个服务器,这种服务器就叫做Broker
2、Topic
每条发布到kafka集群的消息都有一个类别,这个类别就叫做Topic(逻辑上的概念,物理上不同的Topic的消息分开存储,逻辑上一个topic的消息虽然保存于一个或者多个broker上但是用户只需指定消息的Topic,即可生产或者消费数据而不必关心数据存储在何处)
3、Partition
Partition是物理上的概念,每个Topic对应一个或者多个Partition
4、Producer
负责将消息发送到kafka的broker服务器上
5、Consumer
消息消费者,向kafka broker读取消息的客户端
6、Consumer Group
high-level consumer-API中,每个consumer都属于一个consumer group,每个consumer group会有多个consumer,但每个消息只能被consumer group的一个consumer消费,但可以被多个group 消费(可为每个Consumer指定consumer name,如果不指定则属于默认的group)
7、replica
partition 的副本,保障 partition 的高可用
8、leader
replica 中的一个角色, producer 和 consumer 只跟 leader 交互
9、follower
replica 中的一个角色,从 leader 中复制数据
10、controller
kafka 集群中的其中一个服务器,用来进行 leader election 以及 各种 failover
11、zookeeper
kafka 通过 zookeeper 来存储集群的 meta 信息
二、kafka的拓扑结构