卡夫卡高性能原因

Kafka 本身是分布式集群,可以采用分区技术,并行度高
1顺序写(磁盘读写慢因为寻址比较耗时,例如rebbitMq,redis为了提升速度都是基于内存的。先在内存中操作然后再同步到磁盘; kafka是基于硬盘消息的堆积能力更强,
磁盘分为很多磁道,磁头指向磁道;磁头寻址步骤非常的耗时,而kafka进行的是append操作,parition是有序的,顺序读写节省了寻址时间,访问时间接近内存);
3通过批量操作,不是一条条写入,减少io次数提升效率;topic和partition都是逻辑上的概念,partition分为多个segment存储(每个segment相当于一个文件),删除时候是通过segment整个的删除,效率很高
3零拷贝:传统方式:操作系统分为用户态和内核态。用户线程无法访问磁盘和网卡;访问的时候要从用户态切换到内核态保证安全性;
读取数据步骤:磁盘读取到内核缓冲区-》内核缓冲区通过线程上下文切换进行内核态切换到用户态,从内核缓冲区buffer写到用户态缓冲区buffer,然后需要发送到客户端,需要通过socket通信发送,socket也是内核态的,需要把用户态的数据写到socket的缓冲区(发送缓冲区)-》socket发送到网卡由网卡进行传输
写入是先网卡-》socket-》用户态缓冲-》内核态缓冲-》磁盘;
传统方式有多次的数据拷贝
零拷贝:使用的是操作系统指令由操作系统支持,直接将内核缓冲区的数据发送到网卡进行传输

数据文件分段 segment(顺序读写、分段命令、二分查找)
Kafka为每个分段后的数据文件建立了索引文件,文件名与数据文件的名字是一样的,只是文件扩展名为index。 index文件中并没有为数据文件中的每条Message建立索引,而是采用了稀疏存储的方式,每隔一定字节的数据建立一条索引。这样避免了索引文件占用过多的空间,从而可以将索引文件保留在内存中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值