美文网首页
kafka原理

kafka原理

作者: 奋斗的韭菜汪 | 来源:发表于2021-12-22 21:46 被阅读0次

    相关关联:

    zookeeper在kafka中的作用有哪些?(可通过ZooViewer工具来查看kafka相关集群信息)

    • zookeeper帮助kafka做了配置的管理(节点、分区、topic)
    • kafka节点的选举依赖kafka来实现
      kafka安装必须先安装zookeeper

    kafka管理界面:kafka-manager(至少要JDK11)、kafka-eagle
    topic自动创建配置,在生产环境一般需要关闭(若开启,手动删除topic后,kafka会自动创建topic)
    副本(partition)数不能大于机器数(broker),否则创建的时候会报错(多个副本放在一个broker上违背了设计原则,一个broker宕机broker上多个副本信息都丢失了,和一个副本信息丢失是等价的)

    消费者组

    同一个消费者组内的消费者不能同时消费同一个topic内相同的partition,当消费者和partition建立消费关系时(哪个消费者消费哪个patition),对应的消费关系会写入zk不会发送改变


    image.png

    生产者事务

    开启事务、成功提交、失败抛弃
    使用的是2PC,两阶段提交思想(都成功再写入磁盘,失败则抛弃)


    事务操作流程图.png

    kafka消息幂等

    依赖的两个参数
    1、PID(Producer ID)生产者id
    2、sequence number (消费者)针对同一个partition,sequence number是连续的
    同一个会话才会有幂等,也就是同一个线程,如果生产者重启,就没法保证幂等了

    producer发送消息

    image.png

    生产者通过accumelator.append()累加器方法进行消息的拼接,批量发送
    accumelator累加器对象本质是一个currentHashMap
    pros.put("acks","0");//生产者不等待broker的ack通知,直接认为发送的消息成功
    pros.put("acks","1");//(默认)只要leader节点写入成功则然后ack通知
    pros.put("acks","-1");//-1或者all需要做所有副本都写入成功才发送ack


    image.png

    稀疏索引

    kafka中index文件中offset和position的对应关系就是一个稀疏索引,(隔一段时间给offset建立索引)


    kafka中log文件内容和索引文件中index对应的关系

    稀疏索引可以根据文件大小或者时间来控制稀疏索引的稀疏度,kafka中使用的是消息的大小来控制消息度,可用通过上图中的配置来控制

    kafka索引

    .index偏移量(offset)索引文件
    .timeindex时间戳(timestamp)索引文件
    log.message.timestamp.type=CreateTime/LogAppendTime,时间戳记录时间的时机分为消息创建时的时间/消息在broker刷盘的时间
    .timeindex时间戳(timestamp)索引的作用:
    前提:每一个消息都必须有一个时间戳
    1、产生segement需要根据时间(比如每周生成一个segement)
    2、根据时间来清理历史消息
    kafka的索引是一个hash索引

    kafka存储总结:

    image.png

    消息清理策略

    消息清理策略

    注:compact,可理解为压缩,相同key的消息取最新的消息进行压缩存储(如下图)


    image.png

    消费者

    消费者消费策略
    RangerAssignor(默认),消费者随机消费paritition上的消息
    RoundRobinAssignor,消费者轮询消费parition上的消息
    StickyAssignor,消费者均匀的消费partition上的消息

    kafka为什么这么快

    • 顺序读写(避免了了磁盘寻址,大大提高了读写效率)
    • 索引
    • 批量读写和文件压缩
    • 零拷贝

    相关文章

      网友评论

          本文标题:kafka原理

          本文链接:https://www.haomeiwen.com/subject/pbgygktx.html