kafka体系结构
一、kafka基本概念
1、主题
kafka将一组消息抽象归纳为一个主题(topic),一个主题就是对消息的一个分类。生产者将消息发送到特定主题,消费者订阅主题或主题的某些分区进行消费。
2、消息
消息是kafka通信的基本单位,由一个固定长度的消息头和一个可变长度的消息体构成。
3、分区和副本
kafka将一组消息归纳为一个主题,而每个主题又被分成一个或多个分区(partition)。每个分区在物理上对应为一个文件夹。每个分区又有一至多个副本(replica),分区的副本分布在集群的不同代理上,以提高可用性。
4、副本
分为Leader副本和Follower副本。Leader副本负责与客户端进行交互;如果Leader失效,则通过选举,选出新的Leader副本
5、偏移量
发布到分区的消息会被直接追加到日志文件的尾部,而每条消息在日志文件中的位置都会对应一个按序递增的偏移量。是一个分区下严格有序的逻辑值。老版本偏移量保存在zookeeper中,新版本保存在主题中。
6、日志段
一个日志被划分为多个日志段(LogSegment),日志段是kafka日志对象分片的最小单位。与日志对象一样,日志段也是一个逻辑概念,一个日志段对应磁盘上一个具体日志文件和两个索引文件,.index表示消息偏移量索引文件和.timeindex消息时间戳索引文件。
7、代理
kafka集群就是由一个或多个kafka实例构成,我们将每一个kafka实例称为代理(Broker),通常也称代理为kafka服务器(kafkaServer).
8、生产者
负责将消息发送给代理,也就是向kafka代理发送消息的客户端。
9、消费者和消费组
消费者(Comsumer)以拉取方式拉取数据,它是消费的客户端。每个消费者被分配一个消费组。
10、ISR
kafka在zookeeper中动态维护了一个ISR(In-sync Replica),即保存同步的副本列表,该列表中保存的是与Leader副本保持消息同步的所有副本对应的代理节点id。
11、ZooKeeper
kafka利用zookeeper保存相应元数据信息,kafka元数据信息包括如代理节点信息、kafka集群信息、旧版消费者信息及其消费偏移量信息、主题信息、分区状态信息、分区副本分配方案信息、动态配置信息等。
kafka的集群结构