国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

面試題:Kafka中Controller的作用是什么?選舉流程是怎樣的?以及如何避免腦裂問(wèn)題?

這篇具有很好參考價(jià)值的文章主要介紹了面試題:Kafka中Controller的作用是什么?選舉流程是怎樣的?以及如何避免腦裂問(wèn)題?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

題目來(lái)源

網(wǎng)上沖浪:還不懂分布系統(tǒng),速看深度剖析Kafka Controller選舉過(guò)程
在查找關(guān)于Kafka單機(jī)分區(qū)的上限以及分區(qū)多了會(huì)有怎樣的問(wèn)題的時(shí)候,發(fā)現(xiàn)了這個(gè)比較有趣的問(wèn)題,就記錄了下來(lái)。
一般所有的分布式系統(tǒng),都會(huì)涉及到這個(gè)問(wèn)題:腦裂、以及如何避免腦裂問(wèn)題。

題目描述

  • Kafka中Controller的作用是什么?
  • Kafka中Controller的選舉流程是什么?
  • Kafka腦裂是什么?
  • Kafka如何避免腦裂問(wèn)題?

題目答案

  • Kafka中Controller中的作用是什么?
    – 管理partition的ISR列表:當(dāng)Follower副本無(wú)法及時(shí)跟隨Leader副本時(shí),Controller會(huì)將其從ISR列表中移除。
    – 分區(qū)重平衡:當(dāng)添加或者刪除Broker節(jié)點(diǎn)時(shí),Controller負(fù)責(zé)對(duì)Partition的分布進(jìn)行重平衡,以確保數(shù)據(jù)的均勻分布。
    – 當(dāng)集群中有一個(gè)副本的leader掛掉了,controller需要在集群中選舉出一個(gè)新的leader,選舉的規(guī)則是從isr集合中最左邊獲得。
    – 當(dāng)集群中新增或者減少broker,controller將該信息同步給其他broker。
    – 當(dāng)集群中有分區(qū)新增或者減少,controller將該信息同步給其他broker。
    – 存儲(chǔ)集群元數(shù)據(jù)
    Controller保存了集群中最全的元數(shù)據(jù)信息,并通過(guò)發(fā)送請(qǐng)求同步到其他Broker上面
    – 從我參考文章中的信息來(lái)看,Controller節(jié)點(diǎn)不負(fù)責(zé)存儲(chǔ)數(shù)據(jù)。但是好像之前看bilibili視頻的時(shí)候,Controller節(jié)點(diǎn)又是存儲(chǔ)數(shù)據(jù)的。重新思考之后,Controller可能是一個(gè)子進(jìn)程,由Broker進(jìn)程在競(jìng)選Controller成功后創(chuàng)建,可以跟Broker處于同一個(gè)節(jié)點(diǎn)上面。

  • Kafka集群的Controller選舉過(guò)程是怎樣的?
    – 注冊(cè)Controller節(jié)點(diǎn)
    Kafka集群剛上線時(shí),每個(gè)Broker啟動(dòng)時(shí)會(huì)向zookeeper嘗試注冊(cè)一個(gè)/controller節(jié)點(diǎn),因?yàn)橥粫r(shí)刻只能存在一個(gè)/controller節(jié)點(diǎn),所以只有一個(gè)Broker可以成功創(chuàng)建節(jié)點(diǎn)并成為Controller,獲得的序號(hào)最小的那個(gè)broker將會(huì)作為集群中的controller。
    – 監(jiān)聽Controller節(jié)點(diǎn)
    所有非Controller的Broker都會(huì)在Zookeeper中對(duì)/controller路徑設(shè)置一個(gè)Watcher事件,這樣當(dāng)Controller節(jié)點(diǎn)發(fā)生變化時(shí)(例如Controller失效),所有非Controller就會(huì)收到一個(gè)Watcher事件。
    – 選舉新的Controller
    當(dāng)某個(gè)Broker接收到Controller節(jié)點(diǎn)變化的通知后,它會(huì)再次嘗試在Zookeeper中的/controller路徑下創(chuàng)建臨時(shí)節(jié)點(diǎn)。與Kafka集群剛上線時(shí)的“注冊(cè)Controller節(jié)點(diǎn)”類似,只有一個(gè)Broker能夠成功在Zookeeper中創(chuàng)建/controller臨時(shí)節(jié)點(diǎn),并成為新的Controller。新的Controller會(huì)在選舉成功后接管集群元數(shù)據(jù)的管理工作。
    – 更新集群元數(shù)據(jù)
    新Controller在選舉成功后,需要更新集群元數(shù)據(jù),包括分區(qū)狀態(tài)、副本狀態(tài)等。同時(shí),新控制器會(huì)通知所有相關(guān)的Broker更新他們的元數(shù)據(jù)信息。這樣,集群中所有的Broker都能夠知道新Controller的身份,并進(jìn)行協(xié)同工作。
    – 備注
    臨時(shí)節(jié)點(diǎn)的特點(diǎn)是在創(chuàng)建它的客戶端(即Broker節(jié)點(diǎn))斷開連接時(shí),它會(huì)自動(dòng)被Zookeeper節(jié)點(diǎn)刪除。這種機(jī)制保證了只有一個(gè)Broker節(jié)點(diǎn)能夠成為Controller,以避免多個(gè)控制器同時(shí)對(duì)集群元數(shù)據(jù)進(jìn)行操作引發(fā)問(wèn)題。

  • Kafka腦裂是什么?
    腦裂問(wèn)題是分布式系統(tǒng)中經(jīng)常出現(xiàn)的現(xiàn)象,Kafka腦裂問(wèn)題是由于網(wǎng)絡(luò)或其他原因(比如Full GC)導(dǎo)致多個(gè)Broker認(rèn)為自己是Controller,從而導(dǎo)致元數(shù)據(jù)不一致和分區(qū)狀態(tài)混亂的問(wèn)題。

  • Kafka腦裂是怎么產(chǎn)生的?Kafka和Zookeeper是如何避免腦裂問(wèn)題?
    – 假設(shè)有三個(gè)Broker,a、b、c,其中a是Controller。此時(shí)的epoch number是1(Kafka是通過(guò)epoch number(紀(jì)元編號(hào))解決腦裂問(wèn)題)。
    – 現(xiàn)在a因?yàn)閒ull gc時(shí)間過(guò)程,導(dǎo)致與zookeeper的會(huì)話超時(shí)了。zookeeper就會(huì)刪除/controller節(jié)點(diǎn),并通知b和c競(jìng)選Controller節(jié)點(diǎn)。
    – b和c 參加競(jìng)選,假設(shè)b成為了新的Controller,將epoch number的值設(shè)置為2。之后b就會(huì)向c同步新的元數(shù)據(jù)信息,通c更新元數(shù)據(jù)信息。
    – a結(jié)束Full GC后,繼續(xù)向b和c同步數(shù)據(jù),b和c發(fā)現(xiàn)epoch number小于自己當(dāng)前保存的epoch number的值,就會(huì)拒絕a的管理,并通知a當(dāng)前最新的epoch number是2了,a就會(huì)知道自己已經(jīng)不是Controller了,最后與b重新建立連接,并從b同步最新的元數(shù)據(jù)。這樣就解決了腦裂的問(wèn)題。

參考

題目來(lái)源:還不懂分布系統(tǒng),速看深度剖析Kafka Controller選舉過(guò)程文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-856871.html

到了這里,關(guān)于面試題:Kafka中Controller的作用是什么?選舉流程是怎樣的?以及如何避免腦裂問(wèn)題?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【面試題06】Trait是什么,有什么作用

    本文已收錄于PHP全棧系列專欄:PHP面試專區(qū)。 計(jì)劃將全覆蓋PHP開發(fā)領(lǐng)域所有的面試題, 對(duì)標(biāo)資深工程師/架構(gòu)師序列 ,歡迎大家提前關(guān)注鎖定。 記得多年前面試的時(shí)候被面試官問(wèn)到Trait,當(dāng)時(shí)一臉懵,其實(shí)現(xiàn)在它在各個(gè)項(xiàng)目或者框架中已經(jīng)被廣泛使用,主要也是為了對(duì)現(xiàn)有的

    2024年02月10日
    瀏覽(12)
  • springcloud的組件及其作用以及面試相關(guān)問(wèn)題

    Spring Cloud 是一個(gè)用于構(gòu)建分布式系統(tǒng)和微服務(wù)架構(gòu)的開發(fā)工具包,它基于Spring框架,提供了一系列組件和模塊來(lái)簡(jiǎn)化分布式系統(tǒng)的開發(fā)和管理。以下是一些常見的Spring Cloud組件及其作用的介紹: Eureka(服務(wù)注冊(cè)與發(fā)現(xiàn)):Eureka是一個(gè)基于REST的服務(wù)注冊(cè)和發(fā)現(xiàn)組件,用于管理

    2024年02月11日
    瀏覽(27)
  • JS面試題:說(shuō)一下什么是作用域、作用域鏈?

    說(shuō)一下執(zhí)行上下文的理解? ? ? 在 代碼執(zhí)行前 產(chǎn)生 ? ? 產(chǎn)生變量提升、函數(shù)提升的原因 ? ? 定義: ? ? ? ? 全局執(zhí)行上下文對(duì)象:在執(zhí)行全局代碼前,創(chuàng)建對(duì)應(yīng)的全局執(zhí)行上下文對(duì)象,即window對(duì)象,進(jìn)行預(yù)處理 ? ? ? ? 函數(shù)執(zhí)行上下文對(duì)象:在調(diào)用函數(shù)后、準(zhǔn)備執(zhí)行函數(shù)

    2024年01月25日
    瀏覽(21)
  • 軟件測(cè)試面試怎樣介紹自己的測(cè)試項(xiàng)目?會(huì)問(wèn)到什么程度?

    想知道面試時(shí)該怎樣介紹測(cè)試項(xiàng)目?會(huì)問(wèn)到什么程度? 那就需要換位思考, 思考HR在這個(gè)環(huán)節(jié)想知道什么。 HR在該環(huán)節(jié)普遍想獲得的情報(bào)主要是下面這2個(gè)方面: 1)應(yīng)聘者的具體經(jīng)驗(yàn)和技術(shù)能力, 2)應(yīng)聘者的團(tuán)隊(duì)的溝通能力、合作能力和問(wèn)題解決能力。 了解到HR目的后,我

    2024年02月05日
    瀏覽(25)
  • 【面試】什么是霍桑效應(yīng),在項(xiàng)目中具體要怎樣使用霍桑效應(yīng)呢?

    其實(shí)霍桑效應(yīng)(Hawthorne Effect)是一種很經(jīng)典的組織行為學(xué)現(xiàn)象,它闡述了被觀察者會(huì)因知曉自己被觀察而改變自己的行為。在項(xiàng)目管理中,我們可以通過(guò)霍桑效應(yīng)來(lái)激勵(lì)團(tuán)隊(duì)提高工作效率。具體運(yùn)用可以從以下幾個(gè)方面: 告知被觀察 - 明確地讓團(tuán)隊(duì)成員知道自己的工作將被

    2024年02月06日
    瀏覽(13)
  • Git基本操作:版本打Tag的作用以及基本操作流程

    Git基本操作:版本打Tag的作用以及基本操作流程

    作用介紹 在git代碼管理時(shí),有時(shí)候我們想對(duì)某個(gè)特定的commit 添加標(biāo)記,比如要標(biāo)識(shí)版本信息,這時(shí)候就可以用的git中的打標(biāo)簽功能。 打tag就類似于我們看書放書簽一樣,以后可以直接用tag找到提交的位置,不然的話,就只有看commit的哈希值返回指定位置,比較繁瑣。 特別強(qiáng)

    2024年02月13日
    瀏覽(19)
  • 面試題-TS(三):TypeScript 中的接口是什么?它們有什么作用?

    面試題-TS(3):TypeScript 中的接口是什么?它們有什么作用? 在TypeScript中,接口是一種用于定義對(duì)象屬性和行為的工具。它們充當(dāng)了代碼之間的契約,描述了對(duì)象應(yīng)該具有的屬性和方法。通過(guò)使用接口,我們可以提供更好的類型檢查、模塊化和代碼復(fù)用。 一、接口的定義和使

    2024年02月15日
    瀏覽(32)
  • zookeeper選舉流程源碼分析

    zookeeper選舉流程源碼分析 選舉的代碼主要是在 QuorumPeer.java 這個(gè)類中。 它有一個(gè)內(nèi)部枚舉類,用來(lái)表示當(dāng)前節(jié)點(diǎn)的狀態(tài)。 LOOKING: 當(dāng)前節(jié)點(diǎn)在選舉過(guò)程中 FOLLOWING:當(dāng)前節(jié)點(diǎn)是從節(jié)點(diǎn) LEADING: 當(dāng)前節(jié)點(diǎn)是主節(jié)點(diǎn) OBSERVING: 當(dāng)前節(jié)點(diǎn)是觀察者狀態(tài),這種狀態(tài)的節(jié)點(diǎn)不參與選舉的投

    2024年02月11日
    瀏覽(21)
  • 【JavaSE】什么是抽象類?什么是內(nèi)部類?以及它們的作用是什么?

    【JavaSE】什么是抽象類?什么是內(nèi)部類?以及它們的作用是什么?

    ?這篇文章我們主要學(xué)習(xí)的是兩個(gè)知識(shí)點(diǎn),可以來(lái)解決文章標(biāo)題所提出來(lái)的三個(gè)問(wèn)題。 ? 目錄 1.抽象類 1.1 抽象類概念 1.2 抽象類語(yǔ)法 1.3 抽象類特性 1.4 抽象類的作用 2.內(nèi)部類 2.1 內(nèi)部類的分類 2.2 實(shí)例內(nèi)部類 2.3 靜態(tài)內(nèi)部類 2.4 匿名內(nèi)部類 2.5 局部?jī)?nèi)部類 在多態(tài)的學(xué)習(xí)中,我們

    2024年02月14日
    瀏覽(28)
  • JavaScript中的作用域(scope)是什么?以及有哪些類型的作用域?

    JavaScript中的作用域(scope)是什么?以及有哪些類型的作用域?

    前端入門之旅:探索Web開發(fā)的奇妙世界 歡迎來(lái)到前端入門之旅!感興趣的可以訂閱本專欄哦!這個(gè)專欄是為那些對(duì)Web開發(fā)感興趣、剛剛踏入前端領(lǐng)域的朋友們量身打造的。無(wú)論你是完全的新手還是有一些基礎(chǔ)的開發(fā)者,這里都將為你提供一個(gè)系統(tǒng)而又親切的學(xué)習(xí)平臺(tái)。在這個(gè)

    2024年02月12日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包