美文网首页
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史上最详细原理总结上

    Kafka史上最详细原理总结分为上下两部分,承上启下 Kafka史上最详细原理总结上 Kafka史上最详细原理总结...

  • Kafka史上最详细原理总结下

    Kafka史上最详细原理总结分为上下两部分,承上启下 Kafka史上最详细原理总结上 Kafka史上最详细原理总结...

  • kafka学习系列

    Kafka学习总结(一)——Kafka简介 Kafka学习总结(二)——Kafka设计原理 Kafka学习总结(三...

  • Kafka相关文集

    Kafka 运维 kafka集群配置 kafka的安装(包括zookeeper) 原理及使用 Kafka之sync...

  • Kafka学习

    MQ入门总结(六)Kafka的原理和使用 Kafka的架构原理,你真的理解吗? 真的,Kafka 入门一篇文章就够...

  • zookeeper、kafka、redis

    zookeeper kafka 1 kafka优势: 消息事务 零拷贝 2 Kafka原理:http://www....

  • Kafka 原理介绍及安装部署

    Kafka 原理介绍及安装部署 标签:kafka 安装 简介 Kafka 是 Linkedin 于 2010 年 ...

  • kafka

    一、什么是Kafka1、kafka简介 2、kafka基本架构 二、kafka原理 三、Zookeeper在kaf...

  • Kafka

    一、什么是Kafka1、kafka简介 2、kafka基本架构 二、kafka原理 三、Zookeeper在kaf...

  • 大数据相关

    hadoop原理 spark原理 kafka原理 数据仓库部分 Hadoop原理 MapReduce的原理默认根据...

网友评论

      本文标题:kafka原理

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