Kafka源码解读 - 架构及核心概念
架构设计
Kafka结构
- Broker:一台Kafka服务器就是一个Broker,集群由多个Broker组成,一个Broker中保存有多个Topic的不同分区副本,Broker之间没有主从关系。
- Topic:每条发送到Kafka集群的消息都属于某个主题Topic,物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存在一个或多个Broker上,但从客户角度不需要关心数据存放在何处,只需要指定Topic就可以生产和消费消息。
- Partition:一个Topic可以分成若干的分区,并保存在集群的多个Broker节点上。分区中的每一条消息都会被分配一个自增ID,即消费位移Offset。Kafka只保证按照一个分区中的顺序将消息发送给消费者,但是不保证多个分区之间的顺序。
- Offset:分区中的消息消费位移,指向该分区最新消费位移的下一位。
- Replica:分区的副本,一个分区可以配置多个副本保存在不同Broker节点上,副本集合中有一个Leader副本,其他为Follower副本,Leader副本处理外部读写请求,Follower副本负责同步Leader副本数据。
- Message:消息是通信的基本单位。
- Producer:消息生产者,将消息发布到指定Topic,也可以指定发到某个分区,基于轮询或者Hash算法。
- Consumer:消息消费者,从指定Topic获取并消费消息。
- Consumer Group:消费者组,当消费者在同一组时,消息在消费者之间负载均衡。一个分区的消息只会被相同消费者组中的某个消费者消费。消费者组之间相互独立。
- Zookeeper:注册Kaf