中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

KAFKA中的ISR是什么

發布時間:2021-11-22 10:01:58 來源:億速云 閱讀:1812 作者:iii 欄目:云計算

這篇文章主要介紹“KAFKA中的ISR是什么”,在日常操作中,相信很多人在KAFKA中的ISR是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”KAFKA中的ISR是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

【ISR是什么】

首先,ISR的全稱叫做: In-Sync Replicas (同步副本集),我們可以理解為和leader保持同步的所有副本的集合。

一個分區的所有副本集合叫做AR( Assigned Repllicas )

與leader-replica未能保持同步的副本集叫做OSR( Out-Sync Relipcas )

因此我們就能得到這么一個表示:AR = ISR + OSR,翻譯一下就是一個分區的副本集分為同步集合非同步集合兩部分。

那么我們可以假設一個場景,一個分區的AR集合為【0,1,2,3,4,5】,其中leader-replica是0

其中【1,2,3】作為follower和leader的數據保持同步,而【4,5】未能和leader保持同步,

那么此時,ISR=【0,1,2,3】,OSR=【4,5】

如果此時副本4追上了leader-replica,也就是和leader保持到了同步

那么此時,ISR=【0,1,2,3,4】,OSR=【5】

從上面的場景我們就可以明白,ISR動態維護了一個和leader副本保持同步副本集合,ISR中的副本全部都和leader的數據保持同步。

【ISR的作用是什么】

我們思考一下,我們知道了與leader保持同步的副本集后,可以做到哪些事情?

1、當我們生產消息的時候,到底要寫入多少副本才能算成功呢?

2、當leader掛了之后,我們應該選擇哪個follower來成為新的leader呢?

那么對應的,通過ISR,我們知曉了哪些follower與leader保持著同步,

那么我們就可以在寫入消息的時候,設置寫入處于ISR中所有的副本才算成功,

那么我們在進行leader切換的時候,就可以從ISR中選擇對應的follower成為新的leader。

這就是ISR的作用:是通過副本機制實現消息高可靠,服務高可用時,不可缺少的一環;這也是為什么講到副本不得不提到ISR的原因。

【為什么要設計ISR機制】

在一些中間件中,都有副本的概念,在不同的場景下寫入數據時,要求寫入副本的個數也不盡相同。

例如zk中要求寫入的節點個數大于一半才算成功,或者有些要求高可靠性的場景,規定寫入所有副本才能算成功。

而kafka的ISR可以允許生產消息時,根據自己的業務場景自行配置想要達到的效果:

acks=0:fire and forget,也就是我發了就算完了,后續成不成功我都不管,這種設置下消息的高可靠性幾乎沒有保障,但是有極大的吞吐量。

acks=1:寫入主節點就算成功,這種設置,可以保障一定的高可靠性,也具有不錯的吞吐量。

acks=all:也就是寫入ISR中所有的副本才算成功,這種設置下,就能提供較高的高可靠性,但是吞吐量就相對較低。

我們在考慮生產消息時,ISR機制可以友好的讓使用者根據自己的業務需求去設置參數,去選擇自己想要達到什么程度的可靠性,而不是只提供一種可靠性選擇。

補充:我們的ISR是動態伸縮的,可能出現follower全部都掛了,ISR中只剩下leader,那么此時設置acks=all就等價于acks=1了

這樣就會對高可靠性要求的場景產生危險,那么kafka提供了參數:min.insync.replicas

這個參數可以配置最少ISR中需要多少個副本,才能繼續提供寫服務。如果設置為2,一旦ISR中的個數小于2,那么就不再提供寫服務,犧牲一定的可用性,來保障這種高可靠的場景需求。

最后,我們回答這個小節的問題:ISR機制的存在是kafka為了平衡可靠性和可用性,不指定提供高可靠或者高可用的服務,而是將決定權交給了使用者,讓使用者通過參數來控制,到底要實現什么程度的高可靠與高可用。

到此,關于“KAFKA中的ISR是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

工布江达县| 衡东县| 墨脱县| 东乌珠穆沁旗| 新龙县| 龙海市| 江华| 乳山市| 盐城市| 自治县| 微山县| 绵竹市| 镇原县| 九龙城区| 太仓市| 安仁县| 绥阳县| 景洪市| 汉源县| 汝南县| 罗源县| 辽阳市| 沿河| 中西区| 甘孜县| 克东县| 澎湖县| 康马县| 永修县| 若羌县| 资兴市| 开化县| 张家川| 页游| 柘城县| 武川县| 上饶县| 东乡族自治县| 工布江达县| 莆田市| 丁青县|