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

  • 相关阅读:
    我为什么写博客
    Jquery选中行实现行中的Checkbox的选中与取消选中
    jquery中attr和prop的区别
    如何将.il、.res文件封装成dll文件
    修改VS2010生成的dll文件中的内容
    asp.net mvc4中自定义404页面
    asp.net EF6.0中出现未找到具有固定名称“System.Data.SqlClient”的 ADO.NET提供程序的实体框架提供程序解决办法
    ASP.NET中JSON的序列化和反序列化(转)
     WPF 控件总结
    C语言基础:二维数组 分类: iOS学习 c语言基础 2015-06-10 21:42 16人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/WardSea/p/7454019.html
Copyright © 2011-2022 走看看