kafka高性能背后的优秀设计

kafka高性能架构鉴赏

服务端请求处理

顺序处理请求(方案一)

while(true){ 
	Requestrequest=accept(connection); handle(request); 
}

每个请求必须等待前一个请求处理完了以后才会得到处理,吞吐量太差!

异步处理(方案二)

while(true){
   Requestrequest= accept(connection);
   Thread thread= new Thread(handle(request)); 
   thread.start(); 
}

每个请求都创建一个线程去处理,请求不会阻塞,但是每个请求都创建一个线程开销太 大

高性能高并发

在这里插入图片描述

顺序读写

在这里插入图片描述
K afka是将消息记录持久化到本地磁盘中的,一般人会认为磁盘读写性能差,对Kafka性 能如何保证提出质疑。实际上不管是内存还是磁盘,快或慢关键在于寻址的方式,磁盘分为顺序读写与随机读写,内存也一样分为顺序读写与随机读写。基于磁盘的随机读写确实很慢,但磁盘的顺序读写性能却很高,一般而言要高出磁盘随机读写三个数量级,一些情况下磁盘顺序读写性能甚至要高于内存随机读写

跳表设计

在这里插入图片描述

log文件:里面存储的是消息 index:存储索引信息这两个文件的文件名都是一样的,成对出现的,这个文件名是以 log 文件里的第一条消息的 offset 命名的,如下第一个文 件的文件名叫 00000000000012768089,代表着这个文件 里的第一个消息的 offset 是 12768089,也就是说第二条消 息就是12768090了。
在这里插入图片描述

零拷贝

在这里插入图片描述
非零拷贝流程
在这里插入图片描述
零拷贝流程

Producer设计

producer设计–批处理

在这里插入图片描述

producer设计–内存池设计

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值