zoukankan      html  css  js  c++  java
  • kafka相关实践&经验总结

    Kafka快的原因:
    1、partition顺序读写,会先写入页缓存,再写入磁盘,充分利用磁盘特性,这是基础;

    2、Producer生产的数据持久化到broker,采用mmap文件映射,实现顺序的快速写入;

    3、页缓存技术在读取时可以实现零拷贝,减少io,加快socket传输速度
    4、Customer从broker读取数据,向broke提供topic、partition、offset,找到分区index和log文件,通过二分查找定位数据,采用sendfile,将磁盘文件读到OS内核缓冲区后,直接转到socket buffer进行网络发送。

    kafka配置需求:

    磁盘 > jvm内存

    jvm一般5G左右足够了

    consumer_group提交记录定位:

    kafka 默认topic __consumer_offsets下的分区对应的是Math.abs("${your.group.id}".hashCode()) % 50 

    记录着你这个消费组的offset
    看到__consumer_offsets topic的每一日志项的格式都是:[Group, Topic, Partition]::[OffsetMetadata[Offset, Metadata], CommitTime, ExpirationTime]

    Kafka安全的&高可靠配置:

    • topic的配置:replication.factor>=3,即副本数至少是3个;2<=min.insync.replicas<=replication.factor

    • broker的配置:leader的选举条件unclean.leader.election.enable=false

    • producer的配置:request.required.acks=-1(all),producer.type=sync

     

    参考:https://blog.csdn.net/gxsenjoy/article/details/70904615

    Kafka各场景测试总结:

    - 当acks=-1时,Kafka发送端的TPS受限于topic的副本数量(ISR中),副本越多TPS越低;
    - acks=0时,TPS最高,其次为1,最差为-1,即TPS:acks_0 > acks_1 > ack_-1;
    - min.insync.replicas参数不影响TPS;
    - partition的不同会影响TPS,随着partition的个数的增长TPS会有所增长,但并不是一直成正比关系,到达一定临界值时,partition数量的增加反而会使TPS略微降低;

    - retries不为0时,在broker发生异常后,可能会存在消息重复落盘的情况

    其他文献: https://www.jianshu.com/p/1c2596d2d235

  • 相关阅读:
    Windbg使用
    C#与C++之间类型的对应
    Hook CreateProcess
    基于EasyHook实现监控explorer资源管理器文件复制、删除、剪切等操作
    GUID和UUID、CLSID、IID 区别及联系
    hook C++
    EasyHook Creating a remote file monitor
    hook工具
    EasyHook
    Hook exe 和 file
  • 原文地址:https://www.cnblogs.com/but999/p/12674699.html
Copyright © 2011-2022 走看看