Kafka架构

Kafka架构

1、介绍

kafka是最初由linkedin公司开发的,使用scala语言编写,kafka是一个分布式,分区的,多副本的,多订阅者的日志系统(分布式MQ系统),可以用于搜索日志,监控日志,访问日志等
特点
可靠性、可扩展性、耐用性、性能好、速度快
主要应用场景
指标分析、日志聚合解决办法、流式处理

2、架构

Kafka架构
Kafka:Kafka Server 【Broker节点】,一台机器就是一个Broker

Zookeeper:zkServer 存储元数据,选举副本

producer:生产者,生产的消息通过topic进行归类,保存到kafka的broker

consumer:消费者

consumer group :消费者组,一个组中可以有多个消费者,但topic中的一条数据只能被其中一个消费者消费

topic:主题,用于区分不同业务的数据,给数据进行分类别存储(

kafka将消息以topic为单位进行归类

​ 支持多用户订阅,可以为零,一,或者多个消费者的订阅

​ 可以有无数个主题
partition:分区,为了方便将topic进行分布式存储,将topic中的数据按照分区存储(region

每一个分区都是有序的,先进先出

offset:偏移量,任何发布到此partition的消息都会被直接追加到log文件的尾部,每条消息在文件中的位置称为offset(偏移量)

分区规则:只有value,没有key,轮询

​ 有keyvalue,按照key.hashCode%numpartitions

​ 指定分区号

​ 自定义分区

​ 每一个分区都有一个编号

分区名称:topic名称+分区号

replication:副本,为分区创建多个副本,同一个分区的每个副本存储在不同的机器上

​ 副本的个数最多是机器的个数,一般等于机器的个数

​ 所有的副本是有主从关系

​ - leader:负责生产者的写和消费者的读

​ - follower:不断与leader同步数据,保证数据一致性

​ - ISR:当前可用的副本,进行选举
segement:基于分区之下的逻辑存储单元,里面有成对的log和index文件
Kafka架构

.log:kafka真正数据存储的位置,数据

​ 最多存储1G数据

​ 底层按key,value存储

​ 文件名:长度19位,当前文件在整个分区中偏移量的起始位置

.index:与.log文件成对出现,数据的索引,记录稀疏的索引信息

​ 第一列为offset,

​ 第二列就是要查找的数据在该.log文件中硬盘存储的偏移量

3、检索流程

消费者根据上一次的分区的offset来消费新的数据

​ 先进入对应的分区

​ 检索对应.log,通过文件名中的起始偏移量位置

​ 读取对应的.index文件,使用二分法来实现具体偏移量的定位

4、Kafka的Zookeeper存储结构

Kafka架构