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

  • 相关阅读:
    Best Time to Buy and Sell Stock III
    Valid Palindrome
    Longest Substring Without Repeating Characters
    Copy List with Random Pointer
    Add Two Numbers
    Recover Binary Search Tree
    Anagrams
    ZigZag Conversion
    Merge k Sorted Lists
    Distinct Subsequences
  • 原文地址:https://www.cnblogs.com/but999/p/12674699.html
Copyright © 2011-2022 走看看