第三节:kafka sarama 遇到Bug?

news/2024/6/14 14:09:17 标签: kafka, bug, 分布式

文章目录

  • 前言
  • 一、先上结果
  • 二、刨根问底
  • 总结


前言

前面两节,我们已经简单应用了sarama的两个类型Client和ClusterAdmin,其中有一个案例是获取集群的ControllerId,但是在后面的测试过程过程中,发现一个问题,返回的ControllerID是随机的,这个是什么原因呢,我们下面分析下


一、先上结果

下图展示了我用四种方式,获取到的ControllerId的信息,分别是
ClusterAdmin 的 DescribeCluster()
ClusterAdmin 的 Controller()
Client的 Controller()
Clinet的 RefreshController()
可以看到每次返回的四个结果都不一致
在这里插入图片描述
开始我也怀疑是不是我的kafka集群本身有问题,但是通过kafka工具查看

./bin/kafka-metadata-quorum.sh --bootstrap-server 172.20.37.227:34997  descr
ibe  --status

集群的Controller的LeaderID尽管在更新,但是不会短时间内迅速切换,所以集群没有问题。
在这里插入图片描述

二、刨根问底

ControllerID返回结果随机是什么原因呢,一顿查找,终于是找的一个类似的问题。

传送门:
DescribeCluster() returns random broker ID as the controller ID under KRaft mode #2521

这个开发者也是遇到和我一样的困惑,为什么获取到的ControllerID和kafka-metadata-quorum.sh获取的不一致呢。
在这里插入图片描述
解答在这里:
在这里插入图片描述
kafka 在kraft模式是希望您将请求发送到集群中的任何节点,并且它会相应地进行负载平衡

目前我们用的sarama v1.42.2版本还是有这个问题的,但是作者,提示会在后期更新类似的方法,获得我们需要的结果。
在这里插入图片描述

总结

sarama本身也是遵循了kafka kraft版本的代码行为,就使用来说,对客户端是无所谓的,有人相应就好,但是作为运维和排查问题角度,还是需要一个方法,获取到目前集群的Controler的Leader具体是哪个节点。我们可以继续关注这个问题。


http://www.niftyadmin.cn/n/5393097.html

相关文章

springBoot整合Redis(一、Jedis操作Redis)

在springboot环境下连接redis的方法有很多,首先最简单的就是直接通过jedis类来连接,jedis类就相当于是redis的客户端表示。 但是因为现在比较常用的是:StringRedisTemplate和RedisTemplate,所以jedis只做简单的介绍。 一、Jedis…

5、生命周期配置策略

生命周期策略源于生命周期假说,该假说认为人的一生的收入决定他的消费,但这种收入不是现期绝对收入水平,而是一生中的收入与财产,最理想的状态应该是收入和消费支出相等,以实现效用的最大化。人的一生分为青年期、中年期、老年期。…

04_第四章 XML_Tomcat_HTTP

文章目录 第四章 XML_Tomcat10_HTTP一 XML1.1 常见配置文件类型1.1.1 properties配置文件1.1.2 xml配置文件 1.2 DOM4J进行XML解析1.2.1 DOM4J的使用步骤1.2.2 DOM4J的API介绍 二 Tomcat102.1 WEB服务器2.2 Tomcat服务器2.2.1 简介2.2.2 安装 2.3 Tomcat目录及测试2.4 WEB项目的…

UE5 C++ TPS开发 学习记录(六)

这节课学习了如何创建插件,在Build.cs内使用模块和创建OnlineSubsystem // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Subsystems/GameInstanceSubsystem.h" #incl…

【基于Ubuntu20.04的Autoware.universe安装过程】方案一:虚拟机 | 详细记录 | Vmware | 全过程图文 by.Akaxi

目录 一、Autoware.universe背景 二、虚拟机配置 三、Ubuntu20.04安装 四、GPU显卡安装 五、ROS2-Galactic安装 六、ROS2-dev-tools安装 七、rmw-implementation安装 八、pacmod安装 九、autoware-core安装 十、autoware universe dependencies安装 十一、安装pre-c…

2024.2.25 -ElasticSearch 进阶

倒排索引 Elasticsearch的倒排索引机制是通过将文档中出现的词汇与它们所在的文档ID关联起来,实现快速查找包含特定词汇的文档。下面是一个具体的例子来说明倒排索引的工作原理: 假设我们有一个简单的文章集合,包含以下三篇文章&#xff1a…

探索Django路由规则(路由匹配、路由命名空间、HTML中的跳转与Django集成、路由传参以及后端重定向)

路由管理: ​ 在实际开发过程中,⼀个Django 项⽬会包含很多的 app ,这时候如果我们只在主路由⾥进⾏配置就会显得杂乱⽆章,所以通常会在每个 app ⾥,创建各⾃的 urls.py 路由模块,然后从根路由出发&#x…

目标追踪(tracking)简介

目标追踪是计算机视觉中一项关键技术,主要用于在视频中持续跟踪特定对象。这项技术在许多领域都有广泛的应用,包括视频监控、自动驾驶、增强现实等。在目标追踪中,常见的方法包括基于传统的特征匹配和基于深度学习的方法。 基于传统的特征匹…