Kafka基础架构
1. Kafka拓扑结构图
2. 角色说明
A. producer
消息生产者,发布消息到kafka 集群的终端或服务
B. broker
节点,kafka 集群中包含的服务器
C. topic
主题,每条发布到kafka 集群的消息属于的类别。生产者向Kafka中生产消息或消费者从消费者中消费消息都是以Kafka的topic为单位的。即Kafka是面向topic的。
D. partition
分区,parition是物理上的概念,每个topic包含一个或多个partition。Kafka分配的原则是partition。partition数只能增加,不能减少。
E. consumer
消息消费者,从Kafka集群中消费消息的终端或服务
F. consumer group
消费者组,每一个consumer都属于一个consumer group。每条消息可以被多个consumer group消费,但是每条消息只能被consumer group中的一个consumer消费。即数据是组内竞争,组间共享。
G. replication
副本,为了保证数据的高可用,每一个partition可以有多个replication。replication有leader和follower两种角色。
H. leader
replication的角色,每一个partition可以有多个replication,但是只有一个leader。producer和consumer只与角色为leader的replication交互。
I. follower
replication的角色,负责从leader中同步数据。当leader挂掉后,选出新的leader,继续工作。
J. controller
整个Kafka集群的管理者,Kafka集群中的其中一台服务器,用来进行leader选举以及各种失败恢复。
1》负责管理集群的broker的上下线
2》所有topic的分区副本分配
3》leader选举
K. zookeeper
Kafka通过zookeeper来存储集群的元数据信息。
3. 设计理念
A. 为了方便扩展并提高吞吐量,一个topic分为多个分区。
B. 配合分区的概念提出了消费者组的概念,组内的每个消费者并行消费。消费者组内的每个消费者负责消费不同分区的数据,一个分区只能被一个消费者消费。
C. 为了提高高可用,每一个分区增加了若干个副本。类似与HDFS的namenode的HA