![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
kafka
文章平均质量分 87
有关kafka的文章
胖墩的IT
一步一个脚印走下去,相信自己能成功,
学习的3W原则:who,what,which
生活的3W原则:who,what,why
展开
-
kafka 3.5 生产者请求中的acks,在服务端如何处理源码
这意味着至少要等待leader已经成功将数据写入本地log,但是并没有等待所有follower是否成功写入。如果follower没有成功备份数据,而此时leader又无法提供服务,则消息会丢失。已经成功接收数据,同时重试配置不会发生作用(因为客户端不知道是否失败)回馈的offset会总是设置为。acks=-1,太慢,acks=0,有风险,acks=1,则是推荐,所以也是默认值的原因。这里不从头开始,如果想知道推送的数据怎么到下面方法的,可以看。不需要等待任何确认收到的信息,副本将立即加到。原创 2023-09-15 01:30:39 · 616 阅读 · 0 评论 -
kafka 3.5 主题分区的高水位线HW,低水位线LW,logStartOffset,LogEndOffset什么情况下会更新源码
这里需要针对和做特殊说明,要不会让大家脑袋混乱,并且前言后的章节讲的都是主题分区级别的。原创 2023-09-13 01:07:39 · 548 阅读 · 0 评论 -
kafka 3.5 主题分区ISR伸缩源码
*** 仅包括已提交到 ZK 的同步副本。*此集可能包括扩展后未提交的 ISR 成员。此“有效”ISR 用于推进高水位线以及确定 acks=all produce 请求需要哪些副本* 指示我们是否有正在进行的 更改分区 请求。原因以方法更新的是maximalIsr变量,而不是ISR列表本身。maximalIsr是一个优化变量,用于表示在上一次调用方法时,ISR列表的最大长度。这样,Kafka可以通过检查当前ISR列表的长度与maximalIsr的大小来判断是否需要进行收缩操作。更新。原创 2023-09-09 23:35:26 · 891 阅读 · 0 评论 -
kafka 3.5 主题分区的Follower创建Fetcher线程从Leader拉取数据源码
Kakfa集群有主题,每一个主题下又有很多分区,为了保证防止丢失数据,在分区下分Leader副本和Follower副本,而kafka的某个分区的Leader和Follower数据如何同步呢?下面就是讲解的这个首先要知道,Follower的数据是通过Fetch线程异步从Leader拉取的数据,不懂的可以看一下。原创 2023-09-06 23:29:03 · 623 阅读 · 2 评论 -
kakfa 3.5 kafka服务端处理消费者客户端拉取数据请求源码
选合适副本默认首先Leader副本,但是2.4版本后支持主题分区非Leader副本中读取数据,即Follower副本读取数据。在遍历日志的时候不需要将日志全部读到内存中,而是在需要的时候再读取。我们直接看最重要的iterator方法。kafka服务端接收生产者数据的API在KafkaApis.scala类中,handleFetchRequest方法。这里生成一个新的文件数据对象,下面就是。()方法,之后调用第五章节的。最后通过这个方法获得日志。方法在内存中生成批量数据。之后看一下哪里调用的。原创 2023-09-03 16:38:01 · 1391 阅读 · 0 评论 -
kafka 3.5 kafka服务端接收生产者发送的数据源码
方法中比遍历Topic分区集合,针对Topic分区得到分区对象,再执行保存数据到Topic分区Leader。把数据存入副本中(这里的副本指的是Topic分区Leader副本)kafka服务端接收生产者数据的API在。获取需要写入到哪个segment。上面写入本地日志的方法是。原创 2023-09-02 20:24:11 · 931 阅读 · 0 评论 -
kafka 2.1.1 java的消费者客户端如何获取数据源码
后,this.nextInLineRecords.isFetched会被置为true,下次循环又要走else了,nextInLineRecords又重新被队列中的新的值赋值,并且新的this.nextInLineRecords.isFetched=false,下一次循环又可以走if语句了。2、之后第二次走的是循环里的if语句,因为刚被赋值,所以nextInLineRecords不为null,并且还没有提取,所以this.nextInLineRecords.isFetched=false。原创 2023-07-21 01:20:53 · 609 阅读 · 0 评论 -
kakfa 2.4.1 java的生产者client发送消息源码
/.......删除干扰理解的代码行 RecordAccumulator . RecordAppendResult var13;try {//.......删除干扰理解的代码行 RecordAccumulator . RecordAppendResult appendResult = this . tryAppend(timestamp , key , value , headers , callback , dq);原创 2023-07-20 01:08:17 · 575 阅读 · 0 评论 -
kakfa 2.4.1 java的生产者client在发送消息前分配消息属于哪个分区源码
标题是否不是很熟悉,面试不得必问啊。原创 2023-07-18 00:38:17 · 679 阅读 · 0 评论 -
kafka 零拷贝如何实现的(FileChannel)
想了解kafka的零拷贝到底是什么,可以看一下Kafka为什么这么快?如果看零拷贝和非拷贝之间的区别图可以看Kafka_Kafka中的Zero Copy原创 2022-03-20 21:17:26 · 2751 阅读 · 1 评论 -
kafka 3.5 日志定时清理(源码)
文章目录1、定时任务入口2、LopManager(这个是日志抽象层,实际逻辑不在这里)(1) 把日志清理加入定时任务中3、清理符合条件的日志(1)deletableSegments(把需要删除的segment加入待删除的集合)(2) deleteSegments(对待删除的segment集合删除)1、定时任务入口这里选择kraft的模式启动的定时任务,所以入口是在BrokerServer.scala文件中,如果选择ZooKeeper模式的入口在KafkaServer.scala def star原创 2022-03-20 15:25:26 · 2928 阅读 · 1 评论 -
kakfa 3.5 创建topic流程(源码)
1、主要是因为从kafka2.8开始,除了zk我们又有新的选择,用kraft来做zk的工作,并被称为革命性的,但是旧的zk其实没有被废弃,只是提供了新的选择,并且创建topic的命令,Kraft是用控制器API创建的。在命令行上添加的配置会覆盖服务器的默认设置,例如数据应该保留的时间长度。下面就是验证参数,是否指定参数设置等等,之后调用新创建的clien创建topic。因为我觉得先看这个比较好理解,因为它不是单调执行的一步到位,比如先看。这个方法是实际调用的call的方法。初始化时,会根据配置文件中的。原创 2022-03-17 00:59:56 · 4489 阅读 · 3 评论 -
kafka 3.5 如何选择启用kraft还是ZooKeeper(选择哪个server实现,不涉及到server具体的初始化)
这里用kakfa 3.5版本做源码演示。原创 2022-03-15 01:04:40 · 2304 阅读 · 0 评论 -
kafka陡增和坠崖问题分析
场景:某个业务量激增,是原来的3倍以上,造成了消息的积压,TOPIC有两个消费分组,都扩容消费端的机器,之后分别出现了陡增和坠崖两种问题,所以这里记录一下,这里的broker你就任务是某个消费分组的积压数一、坠崖图片分析原因:使用flink消费,但是消费端的auto.offset.reset没有设置,说明采用是默认的latest,关于这个可以看Kafka auto.offset.reset值详解当时采取的策略是启动新的flink任务,双流消费,原来消费任务不停,消费策略还是latest,等到下午.原创 2021-05-30 03:45:56 · 492 阅读 · 0 评论 -
kafka中所有的配置文件解析(八)
Broker配置文件Broker配置Topic配置文件Topic配置Producer配置文件Producer配置Consumer配置文件Consumer配置Streams配置文件Streams配置Connect配置文件Connect配置AdminClient配置文件AdminClient配置...原创 2019-07-23 17:06:24 · 302 阅读 · 0 评论 -
kafka在虚拟机上启动并实现单例生产消费队列(二)
这首先有两个Linux命令需要知道,查看端口的占用情况1、lsof -i: 端口号2、netstat -tunlp|grep 端口号有可能找不到这个命令,那就需要加载这个插件命令:yum install 加载的linux命令前提是你的虚拟机能联网,你可以ping一下看有没有网在启动之前有个问题:启动fakfa有前台启动和后台启动前台启动:默认的启动命令,但是当前窗口不能再进行其...原创 2019-07-18 23:19:38 · 628 阅读 · 0 评论 -
kafka中组和分区的区别和联系(九)
组这个也就是group.id是从消费者的角度看的分区是对主题(topic)而言的,对生产者和消费者都有很大的关系,当然最麻烦的是消费者我感觉特别有必要整理整理这方面的思路,要不又要把我绕进去在生产者角度的分区这个是最简单理解的,哈哈在创建主题的时候我们会选择创建几个备份,几个分区,在这说一下分区,关于备份节点如果学到这还不懂那你可以放弃了。(1)直接上图一个主题单个分区生...原创 2019-07-23 23:45:06 · 1083 阅读 · 2 评论 -
kafka之设置多个broker集群并测试集群的容错(三)
首先,感谢半兽人,他把kafka官方文档翻译成中文文档,所以不用浪费多余的时间来翻译,再次感谢,给大家他的地址:kafka安装和启动,我以后的文章基本上都需要参考上面的,顺便推荐他的命令行大全:kafka命令大全不能只参考一家,所以推荐另一个命令大全,只是他是旧版的,自己多仔细一点Kafka集群消息发送和消费的相关命令上一篇基本上可以启动单个broker(代理)集群,现在我们要开多个bro...原创 2019-07-19 18:23:21 · 1283 阅读 · 0 评论 -
kafka之使用Kafka Connnect 来 导入/导出 数据和使用Kafka Stream来处理数据(四)
这里不是很重点,了解转载自:作者:半兽人链接:https://www.orchome.com/6来源:OrcHome1、使用 Kafka Connect 来 导入/导出 数据从控制台写入和写回数据是一个方便的开始,但你可能想要从其他来源导入或导出数据到其他系统。对于大多数系统,可以使用kafka Connect,而不需要编写自定义集成代码。Kafka Connect是导入和导出数...转载 2019-07-19 21:20:55 · 1225 阅读 · 0 评论 -
kafka之分区和副本(十)
对于消费者不用担心某个消费者挂掉,因为它有备份可以顶上,但是想过topic如果挂掉那会怎么样,不过一般是分区的,也就是一个Topic有很多区,怕挂掉一个区整个Topic也挂掉,分区的好处也是显而易见的,可以水平扩展,扩大吞吐量,也是kafka的优势坏处吗,太多也不好,会有延迟那如果一个分区挂掉呢?所以出现了副本这个东西1、kafka的副本kafka使用的是默认副本 — 就是不需要副...原创 2019-07-25 16:39:14 · 792 阅读 · 0 评论 -
kafka之主机客户端连接虚拟机上的kafka集群并进行生产者和消费者测试(五)
想连接的话需要满足下面的条件1、关闭虚拟机的防火墙,或者开放kafka和zookeeper的指定端口centos7关闭防火墙2、给虚拟机设定静态的IP,当然如果不嫌麻烦就可以不设CentOS7用NAT模式设置静态IP3、把kafka文件夹下的配置文件config/server.properties里面的listenters写上虚拟机的IP,不要默认的localhost下面所有的操作...原创 2019-07-23 12:15:34 · 1739 阅读 · 0 评论 -
kafka之多线程处理(七)
新的生产者是线程安全的,在线程之间共享单个生产者实例,通常单例比多个实例要快。Kafka消费者不是线程安全的所以下面主要是消费者的大体,也没有实际的例子,提供思路来自多线程处理在页面最后一部分所有网络I/O都发生在进行调用应用程序的线程中。用户的责任是确保多线程访问正确同步的。非同步访问将导致ConcurrentModificationException。此规则唯一的例外是wake...转载 2019-07-23 14:14:05 · 1324 阅读 · 0 评论 -
SpringBoot2整合kafka
这kafka是伪集群,因为虚拟机有限,zookeeper也是集群上面一篇写了springboot2整合dubbo,原来我以为可以springboot整合dubbo和kafka呢?之后才发现我想错了说一下这两个用途的一些区别dubbo是微服务,微小的服务,如果并发量不是太高,上千万,上亿级别的或者想要返回结果的可以用dubbokafka是消息队列,如果想提高吞吐量,不要返回结果(返回...原创 2019-08-06 15:19:42 · 274 阅读 · 0 评论 -
kafka安装在虚拟机上的步骤(一)
网上的安装步骤五花八门,最后总算安装测试成功了,这里的虚拟机为CentOS7为例一定要下载Xftp和Xshell,这两个就是神器,怎么运用可以百度下面所有下载的东西不建议镜像虚拟机上下载,太慢了,下载下来用Xftp传给虚拟机就行了,很快1、首先,下载jdk因为kafka是基于Java的,必须要有java的环境,如果没装后面会报错,找不到java,看到错误你就会感觉特别像在JVM中的报...原创 2019-07-18 22:18:35 · 2863 阅读 · 0 评论