Kafka 是一个分布式的流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。
主要功能体现于三点:
1.顺序读写磁盘分为顺序读写与随机读写,基于磁盘的随机读写确实很慢,但磁盘的顺序读写性能却很高,kafka 这里采用的就是顺序读写。
2.Page Cache为了优化读写性能,Kafka 利用了操作系统本身的 Page Cache,就是利用操作系统自身的内存而不是JVM空间内存。
3.零拷贝Kafka使用了零拷贝技术,也就是直接将数据从内核空间的读缓冲区直接拷贝到内核空间的 socket 缓冲区,然后再写入到 NIC 缓冲区,避免了在内核空间和用户空间之间穿梭。
4.分区分段+索引Kafka 的 message 是按 topic分 类存储的,topic 中的数据又是按照一个一个的 partition 即分区存储到不同 broker 节点。每个 partition 对应了操作系统上的一个文件夹,partition 实际上又是按照segment分段存储的。通过这种分区分段的设计,Kafka 的 message 消息实际上是分布式存储在一个一个小的 segment 中的,每次文件操作也是直接操作的 segment。为了进一步的查询优化,Kafka 又默认为分段后的数据文件建立了索引文件,就是文件系统上的.index文件。这种分区分段+索引的设计,不仅提升了数据读取的效率,同时也提高了数据操作的并行度。
5.批量读写Kafka 数据读写也是批量的而不是单条的,这样可以避免在网络上频繁传输单个消息带来的延迟和带宽开销。假设网络带宽为10MB/S,一次性传输10MB的消息比传输1KB的消息10000万次显然要快得多。 6.批量压缩Kafka 把所有的消息都变成一个批量的文件,并且进行合理的批量压缩,减少网络 IO 损耗,通过 mmap 提高 I/O 速度,写入数据的时候由于单个Partion是末尾添加所以速度最优;读取数据的时候配合 sendfile 进行直接读取。
欧洲车企电动化转型受困!为何纷纷求助中国厂商?自由鲸完全指南PHPRedis与Predis的区别Clash for Windows节点详解搭建 VPN 教程如何将一个Gmail账号扩展至1000个?学会这些技巧下载 Shadowsocks for PC 完整教程Shadowrocket小火箭:科学上网利器详解深度分析v2ray内核:原理、功能和配置详解身体对撞: 知识、技巧和常见问题如何在Linux系统上搭建Shadowsocks Libv服务器如何在iOS设备上安装ShadowrocketiPhone有哪些好玩的单机游戏?推荐iOS游戏软Ether VPN Server教程Linode数据中心位置详解流媒体机场 ︱解锁Netflix科学上网VPN梯子推荐白月光机场发布旧不限时流量包套餐调整通知Trojan 便宜机场推荐:LatteCloud 拿铁云机场怎么样?国内中转线路构建Potatso问题集锦及解决方案狗狗加速机场怎么样?狗狗加速机场2024最新评测