石臻臻的杂货铺
CSDN博客之星Top5 ,石臻臻《Kafka运维与实战宝典》电子书作者(可找我:szzdzhp001下载)、 Kafka Contributor 、 KnowStreaming PMC、Nacos Contributor、华为云 MVP 。 滴滴Kafka技术专家 、
展开
-
图解KafkaConsumer SyncGroupRequest请求流程
在上一篇文章中,我们分析了JoinGropRequest的流程,详细请看Kafka消费者JoinGroupRequest流程解析那么我们知道,在执行完了JoinGroupRequest之后, 所有的Member都对消费组协调器发起了SyncGroupRequest请求那么SyncGroup具体做了哪些事情呢?我们今天来一起分析一下!当我们JoinGroup完成之后, 消费者客户端收到了Response, 然后就会立马发起SyncGroupRequest相关代码如下JoinGroupResponseHandl原创 2022-11-16 10:20:57 · 22742 阅读 · 52 评论 -
Kafka扩分区和分区副本重分配之后消费组会自动均衡吗?
扩分区之后 消费组会不会重新平衡呢?那我们今天从源码的角度来一起分析一下, 扩分区能否重平衡?原创 2022-10-28 10:17:51 · 15502 阅读 · 9 评论 -
图解Kafka消费者客户端分区分配策略
我们先看一下分区策略的类图/*** 返回序列化后的自定义数据} /*** 分区分配的计算逻辑/*** 当组成员从领导者那里收到其分配时调用的回调} /*** 指明使用的再平衡协议* 默认使用RebalanceProtocol.EAGER协议, 另外一个可选项为 RebalanceProtocol.COOPERATIVE} /**} /*** 分配器的名字。原创 2022-09-22 09:59:23 · 6693 阅读 · 17 评论 -
寻找协调器FindCoordinatorRequest请求流程
知道了哪个Broker, 那我们就能够获取到对应的EndPoint, 一个Broker可能同时有多个EndPoint(配置了多个监听器),那么我们应该使用哪个EndPoint呢?从客户端 -> Broker -> 其他Broker. 这是一个调用链路,从最开始用的是什么监听器那么这条链路上都是用的这个监听器!这个主要是看当前处理请求的Broker是通过哪个入口来的。这里才是真正的找到协调器的主要逻辑, 这里的判断逻辑是。他们的处理逻辑都是一样的,只是处理的Topic不一样。元信息发起请求的时候也是会用的。原创 2022-09-02 11:50:05 · 15402 阅读 · 20 评论 -
领取20万字《Kafka运维与实战宝典》PDF文档
作者:石臻臻,CSDN博客之星Top5、、、华为云 MVP,腾讯云TVP,滴滴Kafka技术专家、。。大家好,我是 石臻臻应广大读者要求,我把Kafka运维相关系列文章整理成了《Kafka运维与实战》PDF手册啦这份手册包含 运维和开发人员必备知识点和运维命令,还有很多常见的异常问题及其解决方案我会一直更新这么一份手册的, 希望它能够成为开发和运维同学的一份必备宝典~...原创 2022-08-29 10:25:18 · 15569 阅读 · 26 评论 -
Kafka中生产消息时的三种分区分配策略
DefaultPartitioner 默认分区策略如果消息中指定了分区,则使用它如果未指定分区但存在key,则根据序列化key的hash选择一个分区如果不存在分区或key,则会使用粘性分区策略,关于粘性分区请参阅 KIP-480。.........原创 2022-08-04 13:28:24 · 18663 阅读 · 12 评论 -
【kafka源码】TopicCommand之alter源码解析(分区扩容)
文章目录脚本参数Alert Topic脚本分区扩容源码解析1. `TopicCommand.alterTopic`客户端发起请求createPartitions2. Controller角色的服务端接受createPartitions请求处理逻辑` adminZkClient.addPartitions` 添加分区adminZkClient.writeTopicPartitionAssignment将分区信息写入zk中3. Controller监控节点`/brokers/topics/{topicName}原创 2022-08-03 12:04:46 · 6381 阅读 · 16 评论 -
多网络情况下,Kafka客户端如何选择合适的网络发起请求
最近有个同学问了我一个非常有意思的问题, 今天我根据这个问题来给大家好好分析一下。我们都知道, 每个Broker都可以配置多个监听器, 用来用于网络分流。相关知识请看:一文搞懂Kafka中的listeners和advertised.listeners以及其他通信配置然后, 我们客户端中需要配置 来连接到集群中。然后当Kafka集群Broker数量很多的时候,我们不可能在配置所有的地址所以Kafka是允许你只配置其中部分地址的, 它会通过自身的元信息更新机制,去获取Kafka集群中的所有地址。然后如果需要原创 2022-06-28 16:42:07 · 8375 阅读 · 14 评论 -
一文搞懂Kafka中的listeners和advertised.listeners以及其他通信配置
参数详解listener.security.protocol.map安全协议集合默认集合:PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSLPLAINTEXT:不需要授权,非加密通道SSL:使用SSL加密通道SASL_PLAINTEXT:使用SASL认证非加密通道SASL_SSL:使用SASL认证并且SSL加密通道inter.broker.listener.name用于Broker之间通原创 2022-06-16 09:39:49 · 8403 阅读 · 3 评论 -
图解Kafka的RecordBatch结构
文章目录RecordBatchRecordBatch初始化写入消息Record结构图关闭ProducerBatch关闭输出流appendStream并压缩数据填充RecordBatchHeader数据RecordBatchHeader结构图RecordBatch整体结构图阅读完本文你大概会获得以下知识什么时候执行消息的压缩操作RecordBatch结构图RecordBatch我们之前有讲过生产者的ProducerBatch, 这个RecordBatch跟ProducerBatch的区别是什么呢原创 2022-05-22 13:17:29 · 2382 阅读 · 3 评论 -
Kafka生产者客户端几种异常Case详解
kafka生产者常见问题解析原创 2022-05-13 10:23:41 · 3985 阅读 · 22 评论 -
【kafka源码】/log_dir_event_notification的LogDir脱机事件通知
前言我们会看到zk的数据中有一个节点/log_dir_event_notification/,这是一个序列号持久节点这个节点在kafka中承担的作用是: 当某个Broker上的LogDir出现异常时(比如磁盘损坏,文件读写失败,等等异常): 向zk中谢增一个子节点/log_dir_event_notification/log_dir_event_序列号 ;Controller监听到这个节点的变更之后,会向Brokers们发送LeaderAndIsrRequest请求; 然后做一些副本脱机的善后操作原创 2022-05-05 10:38:13 · 2782 阅读 · 20 评论 -
多图详解kafka生产者消息发送过程
文章目录相关配置源码元信息数据的更新 METADATA发起ApiVersionsRequest获取Kafka版本信息发起MetadataRequest获取元信息信息Kafka服务接受到METADATA客户端收到Response, 更新元数据 ProducreMetaData生产者拦截器生产者拦截器详解onSend(ProducerRecord今天我们来通过源码来分析一下,生产者发送一条消息的所有流程~~~相关配置参数说明默认/示例key.serializerkey的序列化器,需要原创 2022-04-29 08:30:00 · 9969 阅读 · 37 评论 -
Kafka的客户端NetworkClient如何发起的请求
Client 2 Server原创 2022-04-08 10:38:43 · 5112 阅读 · 32 评论 -
图解Kafka的服务端的网络通信模型
在开始讲解Kafka的网络通信模型之前,我们有必要先简单了解一下:线程模型 Reactor模式Reactor模式Reactor 模式,是指通过一个或多个输入同时传递给服务处理器的服务请求的事件驱动处理模式。服务端程序处理传入多路请求,并将它们同步分派给请求对应的处理线程,Reactor 模式也叫 Dispatcher 模式。即 I/O 多了复用统一监听事件,收到事件后分发(Dispatch 给某进程),是编写高性能网络服务器的必备技术之一。根据 Reactor 的数量和处理资源池线程的数量不同,有原创 2022-03-30 14:34:14 · 45637 阅读 · 8 评论 -
图解Kafka Producer中的消息缓存模型
图解Kafka Producer中的消息缓存模型原创 2022-03-17 10:29:04 · 17187 阅读 · 45 评论 -
【Kafka】编译 Kafka 源码并搭建源码环
搭建源码环境可以看这篇文章:编译 Kafka 源码并搭建源码环境上面有个地方注意,启动的时候,可以传入VM参数来指定 kafka.log.dir 路径(存放各种日志的路径)-Dkafka.logs.dir=/Users/shirenchuang/work/IdeaPj/open_source/kafka/logs按照上面的方法搭建并成功启动了Kafka, 那么当我们想要启动集群怎么办呢?IDEA同时启动多个Kafka配置多个server.properties, 例如server1.pro原创 2022-02-16 13:45:43 · 2314 阅读 · 1 评论 -
你想知道的所有关于Kafka Leader选举流程和选举策略都在这(内含12张高清图)
文末送书原创 2022-01-12 16:28:33 · 22235 阅读 · 14 评论 -
Kafka 消费者之 findCoordinator源码解析
Kafka消费者源码即系原创 2022-01-05 14:02:04 · 2280 阅读 · 0 评论 -
【读者答疑】为啥我创建的topic分区分配不均匀?
文末送书原创 2021-12-29 13:31:53 · 4600 阅读 · 3 评论 -
【kafka源码】分区副本重分配之kafka跨目录数据迁移实现源码解析
同一个Broker直接如何进行跨目录迁移?原创 2021-12-15 11:14:07 · 9159 阅读 · 19 评论 -
图解Kafka分区副本同步限流机制三部曲(源码原理篇+测试用例 )
之前的文章中,我们有讲解Kafka中的数据采集和统计机制分区副本限流机制三部曲(源码篇)如果你都仔细研读过这两篇文章,那么会更容易理解本篇文章想要把限流讲好, 我们分下面几个方面讲如何配置副本限流配置如何记录并统计Follower副本Fetch到的流量如何判断Follower副本是否限流,并进行限流如何记录并统计Leader副本Fetch到的流量手动写入动态限流配置来进行限流如何配置副本限流配置如果你对我之前写的关于 分区副本重分配源码解析 还有印象, 那么你肯定记得这么几个配置原创 2021-12-06 11:26:53 · 5902 阅读 · 3 评论 -
13张图让你百分百掌握kafka副本同步限流机制
文章目录不同Broker之间副本同步限流各种情况的限流情况Leader 限流 Follower不限流 结论Leader不限流 Follower限流同Broker跨目录同步限流如何手动设置限流设置相关配置属性如何设置合理的限流值呢?大家好,我是石臻臻上周我们分别讲解了《Kafka分区副本同步限流机制三部曲》中的第一篇 《源码篇》《图解Kafka中的数据采集和统计机制 》之所以中间插入了 《图解Kafka中的数据采集和统计机制 》 是因为理解了 数据的采集和统计机制有利于我们对 限流的理解。原创 2021-12-01 12:42:09 · 14284 阅读 · 40 评论 -
【kafka运维】Leader重新选举运维脚本
文章目录kafka-leader-election Leader重新选举More日常运维 、问题排查 怎么能够少了滴滴开源的滴滴开源LogiKM一站式Kafka监控与管控平台kafka-leader-election Leader重新选举1 指定Topic指定分区用重新PREFERRED:优先副本策略 进行Leader重选举> sh bin/kafka-leader-election.sh --bootstrap-server xxxx:9090 --topic test_create原创 2021-11-26 10:30:01 · 5334 阅读 · 16 评论 -
图解Kafka中的数据采集和统计机制
在讲解kafka限流机制之前,我想先讲解一下Kafka中的数据采集和统计机制你会不会好奇,kafka监控中,那些数据都是怎么计算出来的比如下图这些指标这些数据都是通过Jmx获取的kafka监控指标, 那么我们今天老探讨一下,这些指标都是怎么被计算出来的在开始分析之前,我们可以自己思考一下如果让你统计前一分钟内的流速,你会怎么统计才能够让数字更加精确呢?我相信你脑海中肯定出现了一个词:滑动窗口在kafka的数据采样和统计中,也是用了这个方法, 通过多个样本Sample进行采样,并合并统计当然原创 2021-11-24 10:25:27 · 10553 阅读 · 72 评论 -
分区副本限流机制三部曲(源码篇)
分区副本同步限流机制三部曲(源码篇)转载 2021-11-18 10:05:24 · 13882 阅读 · 16 评论 -
【kafka思考】最小成本的扩缩容副本设计方案
在这篇文章开始前,你需要先了解 【kafka源码】kafka分区副本的分配规则从【kafka源码】kafka分区副本的分配规则 中我们已经知道了,如何分区副本是如何进行分配的那么当我们想要批量进行副本扩缩的时候, 如果按照之前 --generate的重新计算分配方式来做的话, 那么这个数据迁移量是非常大的; 很有可能大部分的副本都有变动(牵一发而动全身)那么我们有没有什么方式能够尽量减少这种变动吗, 根据这个目标,我们本篇文章就好好思考一下设计方案扩缩副本 想法1我们指定,扩缩副本在kafka原创 2021-10-24 11:28:54 · 8922 阅读 · 4 评论 -
Kafka如何修改分区Leader | 文末送书8本
大家好,我是石臻臻,这是 「kafka专栏」 连载中的第「N」篇文章…前几天有个群友问我: kafka如何修改优先副本? 他们有个需求是, 想指定某个分区中的其中一个副本为Leader需求分析对于这么一个问题,在我们生产环境还是挺常见的,经常有需要修改某个Topic中某分区的Leader比如 topic1-0这个分区有3个副本[0,1,2], 按照「优先副本」的规则,那么 0 号副本肯定就是Leader了我们都知道分区中的只有Leader副本才会提供读写副本,其他副本作为备份原创 2021-09-29 08:30:00 · 4594 阅读 · 41 评论 -
【实战】kafka删除Topic常见异常排查思路及解决方案
有人报案最近技术群里面有几个同学碰到了 删除Topic的问题, 怎么样也删除不掉,然后我协助排查之后,就做个记录,写篇文章,大家在碰到这类型的问题的时候应该怎么去排查收集线索报not retrying deletion 异常版本:kafka_2.11-2.0.0删除前在执行重分配,但是失败了,强制停止数据迁移,手动删除了节点/admin/reassign_partitions再次重新删除提示异常Topic test is already marked for deletion所有Broke原创 2021-09-14 10:20:06 · 6414 阅读 · 98 评论 -
一图全解Kafka在zookeeper中的数据结构
大家好,我是石臻臻,这是 「kafka专栏」 连载中的第「10」篇文章…首发: 一图全解Kafka在zookeeper中的数据结构一图知全貌 /cluster/cluster/id 持久数据节点集群ID当第一台Broker启动的时候, 发现/cluster/id不存在,那么它就会把自己的cluster.id配置写入zk; 标记当前zk是属于集群哪个集群; 后面其他的Broker启动的时候会去获取该数据, 如果发现数据跟自己的配置不一致; 则抛出异常,加入的不是同一原创 2021-09-07 09:38:14 · 12333 阅读 · 105 评论 -
超强!!! Kafka高质量专栏学习大全,持续连载中
超强!!! Kafka高质量专栏学习大全,持续连载中.....运维Topic增删查(扩容) kafka-topics.sh kafka的动态配置 kafka-config.shTopic发送消息 kafka-console-producer.shTopic消费消息 kafka-console-consumer.sh持续批量推送消息 kafka-verifiable-producer.sh持续批量拉取消息kafka-verifiable-consumer生产者压力测试kafka.原创 2021-08-31 15:38:33 · 1552 阅读 · 11 评论 -
【kafka】kafka的动态配置管理使用和分析
文章目录源码分析1. Broker启动加载动态配置1.1 启动加载动态配置总流程1. 2 加载Topic动态配置1.3 加载Broker动态配置2. 查询动态配置 流程 `--describe`3. 新增/修改/删除/动态配置 的流程Topic配置其他的类型都一样4. Broker监听/config/changes的变更源码总结Q&A如果我想在我的项目中获取kafka的所有配置该怎么办?源码分析1. Broker启动加载动态配置KafkaServer.startup1.1 启动加载动态配置原创 2021-08-31 09:12:45 · 4971 阅读 · 72 评论 -
【kafka源码】kafka分区副本的分配规则
我们有分析过【kafka源码】TopicCommand之创建Topic源码解析;因为篇幅太长所以 关于分区分配的问题单独开一篇文章写;源码分析创建Topic的源码入口 AdminManager.createTopics()以下只列出了分区分配相关代码其他省略def createTopics(timeout: Int, validateOnly: Boolean, toCreate: Map[String, Creatab原创 2021-08-29 09:15:39 · 2078 阅读 · 72 评论 -
详解Kafka分区副本分配的Bug
Hello~~ 大家好,我是石臻臻~~~~ 今天这篇文章,给大家分享一下最近看kafka源码时候,困扰我几天的疑惑,供大家一起思考讨论,确定一下它是不是一个 Bug 欢迎留言一起探讨!这个 " Bug " ,发生在分区副本进行分配的时候, 为了让大家更好的理解,我把kafka里面所有情况的分区分配规则给大家详细讲解一下 「 不想看过程,可以直接看最后的总结部分 」在kafka需要进行分区副本分配计算的地方有三个地方「 Topic创建 」的时候「 分区扩容 」的时候「 分区副本重分配 」的.原创 2021-08-26 09:10:04 · 7293 阅读 · 180 评论 -
8.【kafka运维】kafka-dump-log.sh数据查看
日常运维问题排查怎么能够少了滴滴开源的滴滴开源LogiKM一站式Kafka监控与管控平台1.查看日志文件 kafka-dump-log.sh参数描述例子--deep-iteration--files <String: file1, file2, ...>必需; 读取的日志文件–files 0000009000.log--key-decoder-class如果设置,则用于反序列化键。这类应实现kafka.serializer。解码器特性。自.原创 2021-08-18 10:39:46 · 7919 阅读 · 39 评论 -
万字长文解析删除Topic流程领导再也不用担心我排查生产环境问题了(附教学视频,建议收藏!!!)
【源码】Topic删除流程分析+常见问题 日常运维 、问题排查 怎么能够少了滴滴开源的滴滴开源LogiKM一站式Kafka监控与管控平台文章目录删除Topic命令相关配置源码解析1. 客户端发起删除Topic的请求2. Controller处理deleteTopics的请求3. Controller监听zk变更 执行删除Topic流程3.1 resumeDeletions 执行...原创 2021-08-15 21:23:33 · 13624 阅读 · 114 评论 -
7.【kafka运维】 kafka-consumer-groups.sh消费者组管理
文章目录消费者组管理 kafka-consumer-groups.sh1. 查看消费者列表`--list`2. 查看消费者组详情`--describe`3. 删除消费者组`--delete`4. 重置消费组的偏移量 `--reset-offsets`5. 删除偏移量`delete-offsets`More日常运维 、问题排查 怎么能够少了滴滴开源的滴滴开源LogiKM一站式Kafka监控与管控平台消费者组管理 kafka-consumer-groups.sh1. 查看消费者列表--lists原创 2021-08-13 10:44:31 · 19641 阅读 · 48 评论 -
【kafka源码】Topic的创建源码分析(附视频)
文章目录脚本参数创建Topic脚本创建Topic 源码分析1. 源码入口2. 创建AdminClientTopicService 对象2.1 先创建 Admin3. AdminClientTopicService.createTopic 创建Topic3.1 KafkaAdminClient.createTopics(NewTopic) 创建Topic4. 发起网络请求5. Controller角色的服务端接受请求处理逻辑5.1 KafkaApis.handle(request) 根据请求传递Api调用不同原创 2021-08-10 10:29:23 · 1918 阅读 · 55 评论 -
6.【kafka运维】删除Topic消息+查看Broker磁盘信息
文章目录1.删除指定分区的消息kafka-delete-records.sh2. 查看Broker磁盘信息kafka-log-dirs.shMore日常运维 、问题排查 怎么能够少了滴滴开源的滴滴开源LogiKM一站式Kafka监控与管控平台1.删除指定分区的消息kafka-delete-records.sh删除指定topic的某个分区的消息删除至offset为1024先配置json文件offset-json-file.json{"partitions":[{"topic": "test1原创 2021-08-07 18:39:40 · 1086 阅读 · 32 评论 -
5.【kafka运维】生产者消费组压力测试运维(5)
文章目录1.生产者压力测试kafka-producer-perf-test.sh2.消费者压力测试kafka-consumer-perf-test.shMore日常运维 、问题排查 怎么能够少了滴滴开源的滴滴开源LogiKM一站式Kafka监控与管控平台1.生产者压力测试kafka-producer-perf-test.sh1. 发送1024条消息--num-records 100并且每条消息大小为1KB--record-size 1024 最大吞吐量每秒10000条--throughput 1原创 2021-08-05 08:03:04 · 1725 阅读 · 30 评论