超详细图解kafka生产消费流程

news2025/7/19 11:21:20

目录:

一条消息在kafka是如何生产的?

一条消息在kafka是如何存储的?

一条消息在kafka是如何消费的?

Kafka为什么高性能?

Kafka为什么高可用?

一.一条消息在kafka是如何存储的?

1.1 客户端流程:

 

1.2 服务端流程:

 

二.一条消息在kafka是如何存储的

2.1数据结构

 

2.2数据读取

 

三. 一条消息在kafka是如何消费的?

3.1消费流程

3.2 消费者如何拉取数据

3.3 消费者消费进度如何保证

 

四. kafka是如何做到高可用的?

4.1 基于NIO的高并发网络结构

 

4.2 磁盘顺序IO

顺序读写在kafka源码体现:

写:提前批量申请segment+基于上次offset写入

读:从固定位置读取+size

4.3 零拷贝

传统的IO流程:

 

零拷贝kafka实现:

  1. selector写入数据时,通过FileChannel.transferTo实现零拷贝

 

2)-OffsetIndex的mmap实现零拷贝(将内核中读缓冲区(read buffer)的地址与用户空间的缓冲区(user buffer)进行映射,从而实现内核缓冲区与应用程序内存的共享)

 

4.4 批量处理

 

五. Kafka为什么高可用?

5.1-分区副本机制

a. 每个分区可以配置副本,主要用于容灾处理。比如leader副本挂了,可以再选择其他ISR的follower副本来作为leader副本,进而对外服务

b. 只有leader副本对外提供服务,follower副本不提供服务,只会跟leader副本保持数据同步

 

5.2-ACK机制

a. 对于高可靠性要求较高的场景,设置ack=all可以保证消息不会丢失

b.不丢失原理

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【前端】Vue+Element UI案例:通用后台管理系统-登陆不同用户显示不同菜单、动态添加路由

文章目录目标代码0.动态地显示菜单:store1.动态注册路由2.解决刷新后摆平问题总代码本篇修改的代码文件tab.js参考视频: VUE项目,VUE项目实战,vue后台管理系统,前端面试,前端面试项目案例链接【前端】VueEl…

spring-IOC理论推导P3

1.新建一个项目。名字叫做spring-study 2.导包 <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.23</version></dependency></dependencies&…

solr-7.7.3 搭建

solr-7.7.3 搭建 solr-7.7.3 搭建 文章目录solr-7.7.3 搭建一、前期准备安裝规划(一)资料下载(二)上传文件二、安裝(一)创建新用户(二)安装solr1.solr安装包解压到/opt/module2.将解压文件名修改为solr3.修改配置文件(三)分发文件&#xff08;四&#xff09;开启solr&#xff…

YOLOv5量化调优

目录 一、背景 二、模型调优 2.1 基准选取 2.1.1 官方精度数据 2.1.2 fp32bmodel的精度 2.1.3 int8bmodel精度数据 2.2 多图量化 2.3 预处理对齐&lmdb 2.4 网络图优化 2.4.1 per_channel优化 2.4.2 accuracy_opt优化 2.4.3 conv_group优化 2.4.4 总结 2.5 混…

python中使用xlrd、xlwt操作excel表格详解

最近遇到一个情景&#xff0c;就是定期生成并发送服务器使用情况报表&#xff0c;按照不同维度统计&#xff0c;涉及python对excel的操作&#xff0c;上网搜罗了一番&#xff0c;大多大同小异&#xff0c;而且不太能满足需求&#xff0c;不过经过一番对源码的"研究"&…

移动电源出口美国和欧盟需要做什么?

手机的普遍使用也带动了充电宝的发展&#xff0c;现在是智能的时代&#xff0c;手机现在是我们每个人永远不会忘记带的东西&#xff0c;当然耗电量也是很大的。所以充电宝在这时就有很大的用处了。移动电源是一种集供电和充电功能于一体的便携式充电器&#xff0c;一般由锂离子…

杰理的蓝牙芯片的key是什么?以及该如何添加key?杰理key文件原理

目录 一、简介 关于杰理芯片的key文件&#xff0c;实际上 杰理芯片特有的一种机制&#xff0c;而这种机制就是存在于杰理芯片特有的架构&#xff0c;也是杰理公司延续将近10年的特点&#xff0c;估计以后也会是这种机制。具体为什么&#xff0c;请听我娓娓道来&#xff0c;这里…

测试大咖漫谈如何搞定软件质量?

关于质量保障&#xff0c;好像已经说过太多&#xff0c;但这里还是抽象的唠叨几句。 多年的软件测试和质量保障工作让我越来越清晰的认识到&#xff1a;质量绝对不是一个环节&#xff0c;一个工种可以搞定的。比如&#xff1a; 从对语言的误用&#xff0c;到对第三方组件的误用…

第4关: 网页排序——PageRank算法

要求&#xff1a;编写实现网页数据集PageRank算法的程序&#xff0c;对网页数据集进行处理得到网页权重排序。 ####相关知识 ######PageRank算法原理 1.基本思想&#xff1a; 如果网页T存在一个指向网页A的连接&#xff0c;则表明T的所有者认为A比较重要&#xff0c;从而把T的一…

【Shell】入门Shell(基本变量、环境变量、特殊变量)

Shell脚本一、Shell脚本的执行方式1.脚本格式要求2. 编写第一个Shell脚本3.Shell脚本的常用执行方式二、Shell的变量1.Shell变量介绍2. Shell变量的定义a. 基本语法b. 快速入门(三案例)2. Shell变量的定义a. 定义变量的规则b. 将命令的返回值赋给变量三、Shell多行注释1. 用 :&…

成本优化之使用P2P的方案的需要了解的本地SDK的背后的原理

文章目录一. P2P的SDK到底做了什么二. P2P原理1. 同流分享思路2. 目前方案三. 使用P2P后产生的问题1. 有概率出现loading转菊花2. 首次打开速度明显慢于正常的通道1-2秒参考文章一. P2P的SDK到底做了什么 P2P的SDK在我们App启动后其实是开启了一个服务&#xff0c;固定端口去监…

刷题日记【第十一篇】-笔试必刷题【小易的升级之路+找出字符串中第一个只出现一次的字符+微信红包+计算字符串的编辑距离】

1.计算字符串的编辑距离【动态规划编程题】 import java.util.Scanner; import java.io.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String args[]) throws Exception{BufferedReader reader new BufferedReader(n…

【RuoYi-Vue-Plus】扩展笔记 07 - CentOS 7 集成 Prometheus + Grafana 监控初体验

文章目录前言参考目录官方文档博客参考相关书目操作步骤1、Prometheus1.1、安装 Prometheus1.2、配置 Prometheus1.3、访问控制台2、Grafana2.1、安装 Grafana2.2、访问控制台3、Grafana 大屏配置3.1、添加 Prometheus 数据源3.2、导入 dashboards 仪表板3.3、配置 node_export…

你安全吗?丨沉默的“复仇”到底是什么东西?

作者&#xff1a;黑蛋 在电视剧《你安全吗&#xff1f;》第七集中&#xff0c;因为周游的死缠烂打&#xff0c;秦淮第一次提起了他和陈默以前的事情&#xff0c;也给出了之前虎迫公司开除陈默的原因&#xff1a;陈默妈妈被诈骗团伙骗掉所有积蓄&#xff0c;又因为此事走神出了…

【附源码】计算机毕业设计JAVA计算机专业在线学习评估软件-演示录像-

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

Java抽象类

什么是抽象类&#xff1f; 如果一个类不能够表示一个准确的对象&#xff0c;则使用abstract修饰&#xff0c;表示为抽象类&#xff0c;抽象类就是为了被继承。抽象类使用abstract修饰 abstract class Animal {abstract public void eat(); }抽象类不能被实例化 public static …

第四节.常用Linux命令—文件内容查询

第四节.常用Linux命令—文件内容查询 1.查看目录内容&#xff1a;cat,more,grep 序号命令作用01cat 文件名查看文件内容&#xff0c;more创建文件&#xff0c;合并文件&#xff0c;追加文件内容等02more 文件名分屏显示文本内容03grep 搜索文本文件名搜索文本文件内容(模式查找…

快速入门Servlet

前导 1、web概述 1.1、Web与JavaWeb的概念 Web&#xff1a;全球广域网 &#xff0c;也称为万维网(www)&#xff0c;能够通过浏览器访问的网站 JavaWeb&#xff1a;是用Java技术来解决相关web互联网领域的技术栈 1.2、JavaWeb技术栈 了解JavaWeb技术栈之前&#xf…

面试官:说说React-SSR的原理

前言 所谓同构&#xff0c;简而言之就是&#xff0c;第一次访问后台服务时&#xff0c;后台直接把前端要显示的界面全部返回&#xff0c;而不是像 SPA 项目只渲染一个 <div id"root"></div> 剩下的都是靠 JavaScript 脚本去加载。这样一来可以大大减少首…

SpringMVC之通过最简单的方法实现多文件上传(提供一种模板,可以在这种方法的基础上进行各种的改良)

上一篇博客主要介绍的SpringMVC中单文件进行上传的两种方法单文件上传的两种方法 单文件上传的方法我们解决了&#xff0c;那如何如何实现多文件进行上传输出呢&#xff1f; 这篇文章主要实现的方法就是通过数组的方法来实现多文件的上传 注意本篇文章的大部分内容与上一篇文章…