kafka-關于ISR-概述

一. 什么是ISR ?

? ? Kafka 中通常每個分區都有多個副本,其中一個副本被選舉為 Leader,其他副本為 Follower。ISR 是指與 Leader 副本保持同步的 Follower 副本集合。ISR 機制的核心是確保數據在多個副本之間的一致性和可靠性,同時在 Leader 副本出現故障時能夠快速進行故障轉移,保證服務的可用性。

二.?ISR 基本原理:

1. 數據同步過程:
? ? 首先: 生產者發送的消息首先會被 leader 副本接收,leader 副本會將消息寫入本地日志文件,并更新其偏移量。follower 副本會定期向 leader 副本發送 fetch 請求,拉取新的消息。follower 副本在收到消息后,會將其寫入本地日志文件,并更新自己的偏移量。如果 Follower 副本能夠及時地從 leader 副本拉取到數據,并將其成功寫入本地日志,那么該 follower 副本就被認為是與 leader 副本保持同步的,會被包含在 ISR 集合中。

2. ISR 變更:
? ? ?當一個新的 follower 副本啟動并開始從 leader 副本拉取數據時,如果它能夠在一定時間內跟上 leader 副本的進度,即它的日志偏移量與 leader 副本的差距在允許范圍內,那么它就會被添加到 ISR 集合中。 反之,如果某個 follower 副本由于網絡故障、磁盤故障等原因,導致它與 leader 副本的差距超過了一定的閾值,那么它就會被從 ISR 集合中移除。當 follower 副本恢復正常后,會嘗試重新追趕 leader 副本,一旦追上,又會被重新加入到 ISR 集合中。


3. 選舉與故障轉移
選舉:當 leader 副本出現故障時,kafka 會從 ISR 集合中選舉一個 follower 副本作為新的 leader。通常選擇 ISR 中日志偏移量最大的 follower 作為新 leader,因為它的數據與原 leader 最為接近,能夠最大程度地保證數據的一致性。新的 leader 選舉出來后,它會等待 ISR 中的其他副本將數據同步到自己的高水位,然后才會開始處理新的消息。這樣可以確保在故障轉移過程中,已經被 ISR 中的所有副本確認的消息不會丟失,從而保證了數據的一致性。

4. 涉及到的配置參數:?

???????replica.lag.time.max.ms:用于配置 follower 副本與 leader 副本之間允許的最大延遲時間。如果 follower 副本在這個時間內沒有向 leader 副本發送 fetch 請求或者沒有跟上 leader 副本的進度,那么它將被認為是滯后的,并可能會被移出 ISR 集合。默認值是 10000 毫秒。
????????replica.lag.max.messages:follower 副本與 leader 副本之間允許的最大消息滯后數量。如果 follower 副本落后 leader 副本的消息數量超過了這個閾值,它也可能會被移出 ISR 集合。

三. ?查看ISR信息:

?查看某個topic的分區,ISR信息:

bin/kafka-topics.sh --describe --bootstrap-server 10.139.3.100:9092 --topic xxxx

???????

??----------------------------------------------------------------------------------------------

深耕運維行業多年,擅長linux、容器云原生、運維自動化等方面。
歡迎溝通交流!

(V:?xiaoxiangbj2013?) !

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/896484.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/896484.shtml
英文地址,請注明出處:http://en.pswp.cn/news/896484.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

1_安裝JDK和Hadoop

一、解壓jdk和hadoop安裝包 下載 通過百度網盤分享的文件:jdk-8u172-linux-x64.tar.gz 鏈接:https://pan.baidu.com/s/1VjhdpfyqdC7ivEBIjTn8tA 提取碼:iz25 二、配置環境變量 vi /root/.bashrc添加 #set java environment export JAVA_H…

.Net 9下使用Tensorflow.net---DNN_Keras

.Net 9下使用Tensorflow.net---DNN_Keras 1、創建應用,導入依賴2、編寫代碼1)添加引用2)創建基礎對象3)初始化數據集4)重點步驟:創建 Keras下的DNN模型5)訓練模型得到評估值6)結果輸…

邊緣計算收益低的三大指標

邊緣計算收益低的三大指標主要包括以下方面: 1. 資源貢獻不足: 邊緣計算的收益通常基于所提供的帶寬、存儲和計算資源來計算。如果設備的網絡帶寬有限、在線時間短或提供的存儲容量較小,可能無法滿足平臺設定的最低貢獻標準,從而導…

重大更新!鋰電池剩余壽命預測新增 CALCE 數據集

往期精彩內容: 單步預測-風速預測模型代碼全家桶-CSDN博客 半天入門!鋰電池剩余壽命預測(Python)-CSDN博客 超強預測模型:二次分解-組合預測-CSDN博客 VMD CEEMDAN 二次分解,BiLSTM-Attention預測模型…

開發一個交易所需要哪些技術?

在當今數字化時代,交易所作為金融市場的重要組成部分,其技術架構和功能的復雜性日益增加。無論是傳統的股票、期貨交易所,還是新興的數字貨幣交易所,開發一個高效、安全、可靠的交易所系統都是一個復雜而系統的工程。本文將深入探…

Java語言Leetcode中常用的一些基礎語法

文章目錄 Java語言Leetcode中常用的一些基礎語法棧與隊列棧隊列 類型轉換字符串與字符數組的轉換數組與 List 的轉換 排序使用 Collections.sort()使用 List.sort()自定義對象排序 Java語言Leetcode中常用的一些基礎語法 棧與隊列 棧 在Java中,棧通常可以通過 ja…

C++ STL(三)list

目錄 list是什么 構造函數 元素訪問 容量操作 修改 迭代器 code實例 實現簡單的list forward_list是什么 構造函數 元素訪問 容量 修改 迭代器 code實例 實現一個簡單的forward_list list是什么 std::list 是 C 標準模板庫(STL)中的一個…

【Maui】系統找不到指定的文件Xamarin.Android.Aapt2.targets

文章目錄 前言一、問題描述二、解決方案三、軟件開發(源碼)四、項目展示 前言 .NET 多平臺應用 UI (.NET MAUI) 是一個跨平臺框架,用于使用 C# 和 XAML 創建本機移動和桌面應用。 使用 .NET MAUI,可從單個共享代碼庫開發可在 And…

sql server 復制從備份初始化數據

參考 : 從備份初始化訂閱(事務) - SQL Server | Microsoft Learn sql server 復制默認是用快照初始化數據的,也支持從備份初始化數據,參考如上

GDidees CMS v3.9.1本地文件泄露漏洞(CVE-2023-27179)

漏洞簡介: GDidees CMS v3.9.1及更低版本被發現存在本地文件泄露漏洞,漏洞通過位于 /_admin/imgdownload.php 的 filename 參數進行利用。 漏洞環境: 春秋云鏡中的漏洞靶標,CVE編號為CVE-2023-27179 漏洞復現: 進入靶場發現沒…

Redis面試題----MySQL 里有 2000w 數據,Redis 中只存 20w 的數據,如何保證 Redis 中的數據都是熱點數據?

要保證 Redis 中存儲的 20w 數據都是熱點數據,可以從數據篩選和數據淘汰兩個大的方面來考慮,以下是詳細的實現思路和方法: 數據篩選 1. 基于業務規則 分析業務場景:不同的業務場景有不同的熱點數據特征。例如,在電商…

【問題記錄】Go項目Docker中的consul訪問主機8080端口被拒絕

【問題記錄】Go項目Docker中的consul訪問主機8080端口被拒絕 問題展示解決辦法 問題展示 在使用docker中的consul服務的時候,通過命令行注冊相應的服務(比如cloudwego項目的demo_proto以及user服務)失敗。 解決辦法 經過分析,是…

【第十節】C++設計模式(結構型模式)-Flyweight( 享元)模式

目錄 一、問題背景 二、模式選擇 三、代碼實現 四、總結討論 一、問題背景 享元模式(Flyweight Pattern)在對象存儲優化中的應用 在面向對象系統的設計與實現中,創建對象是最常見的操作之一。然而,如果一個應用程序使用了過多…

spring boot 2.7 + seata +微服務 降級失敗問題修復

文章引流 一個簡單而使用的API管理工具 版本號 spring boot 2.7.17 spring-cloud-dependencies 2021.0.8 spring-cloud-circuitbreaker-resilience4j 2.1.7 spring-cloud-starter-alibaba-seata 2021.1 jdk 1.8原因分析 未配置屬性 feign.circuitbreaker.enabledtrue # 未…

實現實時數據倉庫開源項目

根據你的需求,以下是一些可以實現類似 ClickHouse 的實時數倉功能的項目,這些項目提供了高性能的數據處理和分析能力,適合實時數據倉庫的場景: 1. Apache Doris Apache Doris 是一個開源的實時數據倉庫,支持高吞吐量…

【字符串】最長公共前綴 最長回文子串

文章目錄 14. 最長公共前綴解題思路:模擬5. 最長回文子串解題思路一:動態規劃解題思路二:中心擴散法 14. 最長公共前綴 14. 最長公共前綴 ? 編寫一個函數來查找字符串數組中的最長公共前綴。 ? 如果不存在公共前綴,返回空字符…

Maven的傳遞性、排除依賴、生命周期、插件

一、Maven的傳遞性 藍色背景中的兩個jar包是projectA的直接依賴,其余的Jar包是projectA的間接依賴。 projectA可以使用直接依賴,也可以使用間接依賴。 maven-projectB項目引入了maven-projectC(整個項目打成了jar包)和junit兩個jar包。 ma…

API,URL,Token,XML,JSON是干嘛的

API,URL,Token,XML,JSON是干嘛的 API的作用 API(Application Programming Interface,應用程序編程接口)是一組定義和協議,用于構建和交互軟件應用程序。API允許不同的軟件系統之間…

Spring Boot操作MaxComputer(保姆級教程)

目錄 引言 一、引入依賴 二、配置文件 application.properties(信息用自己的奧) 三、實體類User.java 四、UserController 五、UserService 六、UserDao 七、UserDao.xml 八、postman 訪問,成功查詢數據 附件(修改和刪除數據) 引言…

Java【網絡原理】(2)初識網絡續與網絡編程

目錄 1.前言 2.正文 2.1TCP協議與UDP協議 2.2socket API進行網絡編程 2.2.1DatagramPacket類 2.2.1.1發送數據報 2.2.1.2接收數據報 2.2.1.3獲取數據報內容 2.2.1.4設置數據報內容 2.2.2DatagramSocket類 2.2.2.1構造方法 2.2.2.2常用方法 2.2.3具體代碼與解釋 3…