zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    广域网(ppp协议、HDLC协议)
    0120. Triangle (M)
    0589. N-ary Tree Preorder Traversal (E)
    0377. Combination Sum IV (M)
    1074. Number of Submatrices That Sum to Target (H)
    1209. Remove All Adjacent Duplicates in String II (M)
    0509. Fibonacci Number (E)
    0086. Partition List (M)
    0667. Beautiful Arrangement II (M)
    1302. Deepest Leaves Sum (M)
  • 原文地址:https://www.cnblogs.com/WardSea/p/7454019.html
Copyright © 2011-2022 走看看