• Kafka性能之道


    Kafka高性能之道

    高效使用磁盘

    零拷贝

    批处理和压缩

    Partition

    ISR

    高效使用磁盘

    》顺序写cipan

    Append Only(数据不更新,无记录级的数据删除,只会整个segment删除)

    》充分利用Page Cache

    》支持多Directory(可使用多Drive

    零拷贝

    》传统模式下数据从文件传输到网络需要4次数据拷贝,4次上下文切换和2次系统调用

     

    DMA先将文件拷贝到linux内核的Read buffercpu再将Read buffer里面的文件拷贝到Application buffercpu再将Application buffer里面的我呢件拷贝到Socket bufferDMA再将Socket buffer里面的文件拷贝到网络接口的Nic buffer中。

    Kafka的零拷贝是指cpu不参加了拷贝,它通过NIOtransfer To/transferFrom调用操作系统的sendfile(内核级命令)实现零拷贝。总共发生2次内核数据拷贝,2次上下文切换和1次系统调用,消除了CPU数据拷贝

     

    批处理和压缩

    ProduceConsumer均支持批量处理数据,从而减少了网络传输的开销

    Producer可将数据压缩后发送给broker,从而减少网络传输代价。目前支持SnappyGzipLZ4压缩。

    Partition

    》通过Partition实现了并行处理和水平扩展

    PartitionKafka(包括Kafka Stream)并行处理的最小单元

    》不同Partition可处于不同的Broker(节点),充分利用多机资源

    》同一Broker上的不同Partition可置于不同的Directory,如果节点上由多个Disk Drive,可将不同的Drive对应不同的Directory,从而使Kafka从分利用多Disk Drive的磁盘优势

    ISR

    ISR实现了可用性和一致性的动态平衡

    replica.lag.time.max.ms = 10000;

    replica.lag.max.messages=4000;

    ISR可容忍更多的节点失败

    Majority Quorum如果要容忍f个节点失败,则需要2f+1个节点

    ISR如果要容忍f个节点失败,至少需要f+1个节点

    如何处理Replica Crash

    Leader crash后,ISR中的任何replica皆可竞选成为Leader

    》如果所有replicacrash,可选择让每一个recoverreplica或者第一个在ISR中的replica成为Leader

    unclean.leader.election.enable

  • 相关阅读:
    MySQL之数据的备份与还原
    调用、查看、修改、删除存储过程和函数
    变量的使用、游标的使用、流程控制的使用
    存储过程与函数
    elementUI 表格设置表头样式
    oracle先排序再分页
    postgresql行转列
    crosstab(unknown, unknown) does not exist
    sublime安装php_beautifier来格式化PHP代码
    从今天开始我要经常更新博客
  • 原文地址:https://www.cnblogs.com/WardSea/p/7454019.html
Copyright © 2020-2023  润新知