当前位置: 首页 > news >正文

kafka的leader和follower

leader和follower

kafka的leader和follower是相对于分区有意义的,不是相对于broker。

因为每个分区都有leader和follower,

leader负责读写数据。

follower负责复制leader的数据保存到自己的日志数据中,并在leader挂掉后重新选举出leader。

kafka会再创建topic的时候尽量让分配分区的leader在不同的broker中,就是负载均衡。

与Zookeeper区分

zookeeper的leader负责读写,follower可以读取。

kafka的leader负责读写,follower不能读写数据(确保每个消费者消费的数据是一致的),kafka一个topic有多个分区leader,一样可以实现负载均衡。

AR/ISR/OSR

kafka的follower可以分为三类:AR ISR OSR

  • AR(Assigned Replicas)表示一个topic下的所有副本。
  • ISR(In-Sync Replicas)表示一个topic下正在同步的副本。
  • OSR表示(OUT-SYNC-Replicas)不再同步的副本。

AR=ISR+OSR

查看分区的ISR

使用Kafka Eagle查看某个Topic的partition的ISR有哪几个节点。

partition是创建的topic为test的  0 1 2 三个分区。

Log Size是日志文件的大小

Leader是leader副本在那个broker节点上

Replicas是它的副本在哪些broker节点上。

In sync Replicas是正在同步的副本(包括leader)

尝试关闭id为0的broker(杀掉该broker的进程),参看topic的ISR情况。

leader的选举

leader的选举对于消息的写入以及读取非常关键,此时有两个疑问:

  • kafka是如何确定partition的哪个副本是leader,那个副本是follower呢?
  • 某个leader崩溃后,怎么快速确定另一个leader呢?因为Kafka的吞吐量很高、延迟很低,所以选举leader必须非常快

leader崩溃,kafka如果处理

使用Kafka Eagle找到某个partition的leader,再找到leader所在的broker。在Linux中强制杀掉该Kafka的进程,然后观察leader的情况。

通过观察,我们发现,leader在崩溃后,Kafka又从其他的follower中快速选举出来了leader。

Controller

  • kafka启动的时候,会在所有的broker中选举出controller
  • 前面的leader和follower是针对partition的副本,而controller是针对broker的。
  • 创建topic或者添加分区,修改副本数量之类的管理任务都是交给controller完成的。
  • kafka分区leader的选举,也是由controller决定的。

Controller的选举

  • 在kafka集群启动的时候,每个broker都会尝试去Zookeeper上注册为controller(ZK临时节点)
  • 但是只有一个竞争成功,其他的broker会注册该节点的监视器。
  • 一但节点的状态发生变化,就可以进行处理。
  • Controller也是高可用的,一旦某个broker崩溃,其他的broker会重新注册为Controller。

Controller选举partition的leader

  • 所有Partition的leader选举都由controller决定.
  • controller会将leader的改变通过RPC的方式通知需要为此做出响应的Broker
  • controller读取当前分区的ISR,只要有一个Replica还幸存,就选择其中一个作为leader。
  • 如果该partition的所有Replica都已经宕机,则新的leader为-1

为什么不通过ZK的方式进行选举?

如果kafka是居于ZK进行选举,ZK的压力比较大,例如某个节点崩溃,这个节点上不仅仅只有一个leader,是有不少的leader需要选举,通过ISR可以快速选举。

leader的负载均衡

kafka中引入Preferred Replica的概念,意思是优先的Replica。

在ISR中第一个replica就是preferred-replica.

副本存放的第一个broker,肯定就是preferred-replica

执行以下脚本可以将preferred-replica设置为leader,均匀分配每个分区的leader。

./kafka-leader-election.sh --bootstrap-server node1.itcast.cn:9092 --topic 主题 --partition=1 --election-type preferred

相关文章:

kafka的leader和follower

leader和follower kafka的leader和follower是相对于分区有意义的,不是相对于broker。 因为每个分区都有leader和follower, leader负责读写数据。 follower负责复制leader的数据保存到自己的日志数据中,并在leader挂掉后重新选举出leader。 kafka会再…...

git 空仓库笔记

标识身份,建议先完成 Git 全局设置 git config --global user.name “账号” git config --global user.email “email” 方式一:克隆仓库 git clone https://url/your.git cd your_path touch README.md git add README.md git commit -m "add …...

字母异位词分组(charyw)

字母异位词分组 题目描述 给定一个字符串数组&#xff0c;将字母异位词组合在一起。字母异位词指字母相同&#xff0c;但排列不同的字符串。 输入格式 第一行正整数n&#xff0c;表示有n个字符串(1<n<1000) 第二行n个字符串&#xff0c;空格隔开 输出格式 多组字母…...

力扣 41.缺少的第一个正整数

题目描述&#xff1a; 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 解释&#xff1a;范围 …...

Git从入门到放弃

由于我的Git学的不太好&#xff0c;所以为了能够将以后我的学习笔记能够整理的更好&#xff0c;我先要系统的学习一下git&#xff0c;文章由此产生。 文章笔记源自尚硅谷Git入门到精通全套教程视频内容 1 进入官网 学习新技术的第一步需要熟悉官网&#xff0c;Git也不例外。ht…...

003.数据分析_PandasSeries对象

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…...

【介绍下什么是Kubernetes编排系统】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…...

linux防止nmap扫描

1、首先关闭Centos7自带的firewalld [rootnode ~]# systemctl disable firewalld.service && systemctl stop firewalld.service 2、安装iptables服务 [rootnode ~]# yum install iptables-services iptables-devel -y [rootnode ~]# systemctl enable iptables …...

基于SpringBoot的装饰工程管理系统源码数据库

如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统装饰工程项目信息管理难度大&#xff0c;容错率低&#xff0c;管…...

2024前端面试准备2-JS基础知识回顾

变量类型和计算 1.值类型和引用类型的区别 常见值类型:undefined(定义undefined只能用let,不能用const)、字符串、bool、number、 Symbol; 常见引用类型: 对象, 数组、null(特殊引用类型,指针指向为空地址) 、function(特殊引用类型); 值类型的值直接存储在栈中;引用类型值存储…...

C++ 环形链表(解决约瑟夫问题)

约瑟夫问题描述&#xff1a; 编号为 1 到 n 的 n 个人围成一圈。从编号为 1 的人开始报数&#xff0c;报到 m 的人离开。下一个人继续从 1 开始报数。n-1 轮结束以后&#xff0c;只剩下一个人&#xff0c;问最后留下的这个人编号是多少&#xff1f; 约瑟夫问题例子&#xff1a;…...

【微信小程序】模板语法

数据绑定 对应页面的 js 文件中 定义数据到 data 中&#xff1a; 在页面中使用 {{}} 语法直接使用&#xff1a; 事件绑定 事件触发 常用事件&#xff1a; 事件对象的属性列表&#xff08;事件回调触发&#xff0c;会收到一个事件对象 event&#xff0c;它的详细属性如下&…...

深入了解 C 语言 Bug

目录 一、引言二、Bug的定义三、Bug的由来四、Bug的影响五、应对 Bug 的方法六、结论 一、引言 1、在 C 语言的编程世界中&#xff0c;Bug 是一个我们无法回避的话题。 2、Bug&#xff0c;简单来说&#xff0c;就是程序中存在的错误或缺陷。它可以表现为程序运行结果的异常、崩…...

Redis 内存回收

文章目录 1. 过期key处理1.1 惰性删除1.2 周期删除 2. 内存淘汰策略 Redis 中数据过期策略采用定期删除惰性删除策略结合起来&#xff0c;以及采用淘汰策略来兜底。 定期删除策略&#xff1a;Redis 启用一个定时器定时监视所有的 key&#xff0c;判断key是否过期&#xff0c;过…...

【讲解下ECMAScript和JavaScript之间有何区别?】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…...

Linux基本指令查询硬件信息001

在Linux系统中查询硬件信息可以通过多种命令行工具完成&#xff0c;本章主要讲述如何查询Linux硬件信息。 操作系统&#xff1a; CentOS Stream 9 操作步骤&#xff1a; 指令uname -a : 显示内核版本、硬件名称、操作系统等基本信息。 [rootlocalhost ~]# uname -a Linux …...

Spring Boot(七十四):集成Guava 库实现布隆过滤器(Bloom Filter)

之前在redis(17):什么是布隆过滤器?如何实现布隆过滤器?中介绍了布隆过滤器,以及原理,布隆过滤器有很多实现和优化,由 Google 开发著名的 Guava 库就提供了布隆过滤器(Bloom Filter)的实现。在基于 Maven 的 Java 项目中要使用 Guava 提供的布隆过滤器,只需要引入以…...

二叉查找树详解

目录 二叉查找树的定义 二叉查找树的基本操作 查找 插入 建立 删除 二叉树查找树的性质 二叉查找树的定义 二叉查找树是一种特殊的二叉树&#xff0c;又称为排序二叉树、二叉搜索树、二叉排序树。 二叉树的递归定义如下&#xff1a; &#xff08;1&#xff09;要么二…...

3072. 将元素分配到两个数组中 II

题目 给你一个下标从 1 开始、长度为 n 的整数数组 nums 。 现定义函数 greaterCount &#xff0c;使得 greaterCount(arr, val) 返回数组 arr 中 严格大于 val 的元素数量。 你需要使用 n 次操作&#xff0c;将 nums 的所有元素分配到两个数组 arr1 和 arr2 中。在第一次操…...

城市之旅:使用 LLM 和 Elasticsearch 简化地理空间搜索(二)

我们在之前的文章 “城市之旅&#xff1a;使用 LLM 和 Elasticsearch 简化地理空间搜索&#xff08;一&#xff09;”&#xff0c;在今天的练习中&#xff0c;我将使用本地部署来做那里面的 Jupyter notebook。 安装 Elasticsearch 及 Kibana 如果你还没有安装好自己的 Elasti…...

智鼎在线测评通关秘籍:2024最新51job题库实战解析与避坑指南

智鼎在线测评通关秘籍&#xff1a;2024最新51job题库实战解析与避坑指南 在竞争激烈的求职市场中&#xff0c;智鼎在线测评已成为众多知名企业筛选人才的第一道门槛。据统计&#xff0c;2024年使用智鼎测评系统的企业数量同比增长35%&#xff0c;而通过率却不足40%。这份指南将…...

AI背景分离革新性全攻略:ComfyUI-BiRefNet创意工作流零基础上手指南

AI背景分离革新性全攻略&#xff1a;ComfyUI-BiRefNet创意工作流零基础上手指南 【免费下载链接】ComfyUI-BiRefNet-ZHO Better version for BiRefNet in ComfyUI | Both img & video 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-BiRefNet-ZHO 在数字创意…...

低成本DIY智能小车核心模块:用STM32和TB6612实现带编码器的定速巡航功能

低成本DIY智能小车核心模块&#xff1a;用STM32和TB6612实现带编码器的定速巡航功能 周末在工作室调试新做的智能小车时&#xff0c;突然意识到一个有趣的现象&#xff1a;当我们给电机设定固定转速后&#xff0c;实际速度总会因为电池电压波动、负载变化等因素产生偏差。这让…...

Pixel Fashion Atelier效果实测:在RTX 4090上单图生成耗时稳定在3.2秒内

Pixel Fashion Atelier效果实测&#xff1a;在RTX 4090上单图生成耗时稳定在3.2秒内 1. 测试环境与配置 1.1 硬件配置 本次测试使用的硬件平台为高端游戏工作站&#xff1a; 显卡&#xff1a;NVIDIA RTX 4090 (24GB GDDR6X)处理器&#xff1a;Intel i9-13900K内存&#xff…...

STM32WU55蓝牙开发避坑指南:从官方例程到8通道肌电信号传输实战

STM32WU55蓝牙开发避坑指南&#xff1a;从官方例程到8通道肌电信号传输实战 当肌电信号采集遇上低功耗蓝牙&#xff0c;工程师们往往面临一个尴尬的平衡&#xff1a;既要满足医疗级数据精度&#xff0c;又要兼顾穿戴设备的续航需求。STM32WU55系列以其双核架构和集成射频模块&a…...

JavaScript代码保护实战:用javascript-obfuscator给你的前端穿上防弹衣

JavaScript代码保护实战&#xff1a;用javascript-obfuscator打造坚不可摧的前端防线 1. 为什么前端代码需要保护&#xff1f; 记得去年参与一个电商项目时&#xff0c;团队花三个月开发的核心促销算法&#xff0c;上线一周就被竞争对手完整"借鉴"。检查发现对方直…...

Mind+连接百度AI实战:手把手教你做一个能听会说的垃圾分类小助手

Mind与百度AI融合实战&#xff1a;打造智能垃圾分类助手的完整指南 在创客教育和STEAM领域&#xff0c;将硬件编程与人工智能结合已成为培养学生综合能力的新趋势。Mind作为一款图形化编程工具&#xff0c;以其低门槛和丰富的扩展库深受教育者和爱好者青睐。而百度AI开放平台提…...

DanKoe 视频笔记:个人商业模型:第三部分:如何将知识转化为价值

概述 在本节课中&#xff0c;我们将学习如何将你头脑中积累的知识和经验&#xff0c;转化为能够创造价值并带来收益的产品或服务。我们将探讨一个系统化的方法&#xff0c;帮助你从自我提升走向自我实现&#xff0c;并最终实现自我超越。 信息&#xff1a;新时代的基石 上一…...

py每日spider案例之某website反混淆后的代码

window=global; const _VER_ = "1.2.5"; (() => {window.cdn = atob(static-cdn.byteamone.cn...

Qwen3-VL-2B入门到应用:从环境部署到实际场景落地全解析

Qwen3-VL-2B入门到应用&#xff1a;从环境部署到实际场景落地全解析 1. 项目概述 Qwen3-VL-2B-Instruct是一款突破性的视觉语言模型&#xff0c;它将图像理解与自然语言处理能力完美结合。不同于传统只能处理文本的AI模型&#xff0c;这款模型能够真正"看懂"图片内…...