KAFKA基本原理!
KAFKA基本原理!
月伴飞鱼数据存储
Kafka 消息以 Partition 作为存储单元,每个 Topic 的消息被一个或者多个 Partition 进行管理。
- Partition 是一个有序的,不变的消息队列,消息总是被追加到尾部。
- 一个 Partition 不能被切分成多个散落在多个 Broker 上或者多个磁盘上。
Partition 又划分成多个 Segment 来组织数据。
Segment 在它的下面还有两个组成部分:
- 索引文件:以
.index
后缀结尾,存储当前数据文件的索引。- 数据文件:以
.log
后缀结尾,存储当前索引文件名对应的数据文件。
请求模型
请求到Broker后,也会通过类似于请求转发的组件Acceptor转发到对应的工作线程上。
Kafka中被称为网络线程池,一般默认每个Broker上为3个工作线程,可以通过参数
num.network.threads
进行配置。
并且采用轮询的策略,可以很均匀的将请求分发到不同的网络线程中进行处理。
但是实际的处理请求并不是由网络线程池进行处理的,而是会交给后续的IO线程池。
当网络线程接受到请求的时候,会将请求写入到共享的请求队列中,而IO线程池会进行异步的处理。
默认情况下是8个,可以通过
num.io.threads
进行配置。