Kafka天生的分布式架构
顺序写:Kafka使用了磁盘顺序写来提升的性能。Kafka的message是不断追加到本地磁盘文件末尾的,而不是随机的写入,减少了磁盘寻址的开销
Kafka利用了 *** 作系统自身的内存,Kafka的读写 *** 作基本上是基于内存的,读写速度得到了极大的提升。而不是JVM空间内存,避免GC问题,Java对象的内存消耗比较大
通过 “零拷贝”的机制,Kafka消费端的性能也大幅提升,零拷贝技术,不需要切换到用户态,在内核态即可完成读写 *** 作,零拷贝避免了在内核空间和用户空间之间的拷贝,sendfile方法允许 *** 作系统将数据从Page Cache 直接发送到网络,只需要最后一步的copy *** 作将数据复制到 NIC 缓冲区
分区分段+索引:Kafka的message是按topic分类存储的,topic中的数据按照一个个的partition存储到不同broker节点,每个分区有分多个segment,Kafka默认为分段后的数据文件建立索引文件。这种分区分段+索引的设计,提高了数据读取的效率,及数据 *** 作的并行度。
对消息批量压缩,减少网络IO损耗
Kafka数据读写是批量的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)