kafka高性能的相关设计(2):

 

1.kafka 存储再文件系统上
  顺序写磁盘 效率比随机写内存还要高,这是kafka高吞吐率的一个重要的保证。
  缓存页 pageCache
  数据传输的零拷贝
  读写数据的批量batch处理以及压缩传输
 
零拷贝:
  消除cpu拷贝,减少上下文切换。 Kafka 在这里采用的方案是通过 NIO 的 transferTo/transferFrom 调用操作系统的 sendfile 实现零拷贝。 总共发生 2 次内核数据拷贝、2 次上 下文切换和一次系统调用,消除了 CPU 数据拷贝。
 
2. kafka 中的 底层存储设计
  
  partitio 均分为多个 segment File,由 index file 和 data file 组成  .index索引文件 和 .log数据文件
  Segment 是 Kafka 文件存储的最小单位。存储的message消息
 
seament由.index索引文件和.log数据文件组成。数值最大为 64 位 long 大小,19 位数字字符长度,长度不够数字用0填充。
  如 0000 0000 0000 0036 8769.index 和 0000 0000 0000 0036 8769.log。
partition 全局第一个segment是从0开始,后续的每一个segment文件为上一个文件的最后一条消息的offset值。
.index文件中元数据<1,5> 是数据文件中的第1个 message,在分区partition表示第 .index文件名称+1个消息 该消息的物理偏移量为5。

 

 

 

 

 

 

 

 

 

 

 

posted @ 2022-08-19 23:01  a菜搬砖  阅读(51)  评论(0)    收藏  举报