Kafka小结
Kafka
是由 Linkedin 公司开发的,它是一个分布式的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订阅模式的消息引擎系统。
Kafka层级:topic——partition——Replica(Leader/Follower)
Kafka 技术特点
- Kafka 实现了零拷贝原理来快速移动数据,避免了内核之间的切换。
- Kafka 可以将数据记录分批发送,从生产者到文件系统(Kafka 主题日志)到消费者,处理能够进行更有效的数据压缩并减少 I/O 延迟.记录的批处理分摊了网络往返的开销,使用了更大的数据包从而提高了带宽利用率。
- Kafka 采取顺序写入磁盘的方式,避免了随机磁盘寻址的浪费。
- 利用了现代操作系统分页存储 Page Cache 来利用内存提高 I/O 效率.
5.(分区并行)。
可以发现完成「一次读写」需要2次DMA拷贝,2次CPU拷贝。而DMA拷贝是省不了的,所谓的零拷贝技术就是把CPU的拷贝给省掉
mmap是将读缓冲区的地址和用户空间的地址进行映射,实现读内核缓冲区和应用缓冲区共享
sendfile+DMA Scatter/Gather则是把读内核缓存区的文件描述符/长度信息发到Socket内核缓冲区,实现CPU零拷贝