Kafka简介
Kafka是一款高吞吐量、分布式的发布—订阅消息系统。
Kafka基本概念
- Broker:
每个Kafka的实例称为代理(Broker),通常也称代理为Kafka服务器。 - Message/Record:
消息是Kafka通信的基本单位,消息生产者会将消息序列化后发送给Kafka服务器,消息接收者则会反序列化获取消息。 - Producer:
生产者负责将消息发送给代理,也就是向Kafka代理发送消息的客户端。 - Comsumer:
消费者以拉取(pull)的方式拉取数据,它是消费的客户端。 - Topic:
Kafka将一组消息抽象归纳为一个主题,也就是说,一个主题就是对消息的一个分类。生产者将消息发送到指定的主题,消费者从订阅的 主题中消费消息。 - Partition:
Kafka将一组消息归纳一个主题,而每个主题又被分成一个或多个分区,每个分区由一系列有序、不可变的消息组成,是一个有序的队列。每个分区在物理上对应为一个文件夹,分区的命名规则为主题名+”-“,再接上分区编号,分区编号从0开始。 - Replica:
每个分区有一个或多个副本,分区的副本分布在集群的不同代理上,以提高可用性。 - Segment:
一个日志又被划分为多个日志段,日志段是Kafka日志对象分片的最小单位。一个日志段对应磁盘上一个具体日志文件和两个索引文件,.log文件用于保存消息数据,.index和.timeindex分别表示消息偏移量索引文件和消息时间戳索引文件。 - Leader副本和Follower副本:
由于每个分区有一个或多个副本,就需要保证副本数据的一致性,Kafka会选择其中一个副本作为Leader,而其他的副本即为Follower。只有Leader副本才负责处理客户端的读写请求,Follower副本从Leader副本不同数据。Leader与Follower并不是固定不变的,如果Leader失效,Kafka会通过象应的选举算法从其他Follower中选出新的Leader。 - ConsumerGroup:
每一个消费者都属于一个特定消费组,我们可以为每个消费者指定一个消费组,以groupId代表消费组名称。 - Offset:
任何发布到分区的消息会被直接追加到日志文件的尾部,而每条消息在日志文件中的位置都会对应一个按序递增的偏移量。消费者可以通过控制消息偏移量来进行消费,比如可以从指定偏移量开始消费。消费者已消费的消息对应的偏移量也需要保存。旧版本中消费者的消息偏移量保存在Zookeeper中,而新版本则是保存在Kafka内部主题当中。 - Zookeeper:
Kafka利用Zookeeper保存相应的元数据信息,Kafka元数据信息包括如代理节点信息、Kafka集群信息、主题信息、分区信息、分区副本分配方案信息等。Kafka在运行时会监听保存在Zookeeper上的元数据变化,从而方便对Kafka进行管理操作。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d81b6bc050fc747af38528a17360bb77.png)