91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Kafka中Controller的作用是什么

發布時間:2021-07-19 09:47:01 來源:億速云 閱讀:711 作者:chen 欄目:大數據

本篇內容介紹了“Kafka中Controller的作用是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

Kafka除了狀態管理以外,還主要有以下功能職責:

  • 更新集群元數據信息

  • 創建Topic

  • 刪除Topic

  • 分區重分配

  • preferred leader副本選舉

  • Topic分區擴展

  • Broker加入集群

  • Broker崩潰

  • 受控關閉

  • controller leader選舉

職責功能
更新集群元數據信息

Client可以從任何一臺broker上獲取集群完整的元數據信息,這就需要controller在集群元數據信息發生變更后通知每一個broker。當有分區信息變更時,controller會將變更后的信息封裝進UpdateMetadataRequest請求中,然后發送給集群中的每個Broker。

創建Topic

Controller啟動時會創建一個Zookeeper監聽器,該監聽器的作用是監聽/brokers/topics下子節點的變化情況。

Topic在創建時首先會在/brokers/topics節點下面創建一個子節點(znode),并且將該Topic的分區和副本情況寫入這個znode中。當監聽器發現/brokers/topics有新增znode時,就會立即觸發controller創建Topic(為新的Topic每個分區確定Leader和ISR),然后更新集群元數據信息。

當創建完成以后,controller會創建一個新的監聽器/brokers/topics/{topic_name},監聽新的Topic內容的變更。這樣當Topic分區發生變化時,controller能夠及時收到通知。Kafka中Controller的作用是什么

刪除Topic

Kafka集群刪除Topic都是向Zookeeper下的/admin/deletetopics下新增一個子節點(znode)。controller在啟動時會在/admin/deletetopics創建一個監聽器監聽該節點的子節點是否發生變更。當有新的子節點被創建時,controller立即開啟刪除Topic刪除邏輯。主要執行兩步:

  1. 停止該Topic的所有副本

  2. 刪除副本日志數據

  3. controller移除/admin/delete_topics/{待刪除topic節點},topic刪除完成

分區重分配

分區重分配主要為了對Topic下面的所有分區重新分配副本所在的broker機器,以期望實現更均勻的分配。該操作需要管理員手動定制分配方案,并按照指定格式寫入Zookeeper的/admin/reassign_partitions下。

分區重分配的過程是先擴展再收縮的過程。controller首先將分區副本進行擴展,等他們全部與Leader副本同步以后將Leader設置為新分配方案中的副本,最后執行收縮,將分區副本減少為分配方案中的副本集合。

preferred leader選舉

為了避免分區副本分配不均勻,引入preferred副本的概念,假設一個分區副本的列表是[1,2,3],那么broker1就是該分區的preferred leader。但是隨著時間的推進,分區leader發生變化,最后preferred leader不一定就是分區leader。

  1. broker段參數auto.leader.reblance.enable設置true,controller會定時自動調整preferred leader

  2. 通過kafka-preferred-replica-election腳本觸發

上面兩種方法都會往Zookeeper的/admin/preferredreplicaelection節點寫入數據。controller也會注冊該節點的目錄監聽器。一旦接收到改變通知,controller會將對應分區的leader調整回副本列表中的第一個,并且廣播出去。

Topic分區擴展

當前增加分區通常通過kafka-topics.sh的--alert選項,它會向Zookeeper下的/brokers/topics/{待修改的Topic}中寫入新的分區目錄。

由于在創建Topic以后,會注冊一個監聽該目錄變化監聽器,因此當目錄發生變化時,controller會收到通知,執行分區創建任務,之后更新集群元數據信息。

broker加入集群

每個broker創建成功后,都會在Zookeeper的/brokers/ids節點下創建一個子節點,并寫入broker的信息。controller會在/brokers/ids創建一個監聽該節點的子節點是否發生變化的監聽器,一旦收到通知,然后就會更新集群元數據信息。

broker崩潰

broker在加入集群時注冊的節點是個臨時節點,伴隨broker的崩潰,臨時節點消失,然后controller會收到通知,開啟關閉broker邏輯,并更新集群元數據信息。

受控關閉

受控關閉是指的以kafka-server-stop.sh或者kill -15的方式關閉kafka broker。

受控關閉是由即將關閉的broker向controller發送ControlledShutdownRequest。當發送完請求后,broker處于阻塞狀態,controller會進行leader重選舉和ISR收縮調整后,會給broker發送ControlledShutdownResoponse,表示broker可以關閉。

controller leader選舉

當所有broker一起啟動時,會爭先在Zookeeper上創建/controller臨時節點,并寫入controller broker的信息,Zookeeper可以保證只有一個broker可以創建成功,創建成功的broker節點還會更新/controller_epoch的值。沒有創建成功的broker監聽/controller,加入controller宕機,其他broker將會收到通知,然后去競選controller。Kafka中Controller的作用是什么Kafka中Controller的作用是什么

controller與broker通信

controller啟動時會與集群中的所有broker(包括controller在的broker)建立TCP連接,并且會為每個TCP連接建立一個RequestSendThread,也就是說controller會和每個broker建立一個TCP連接,并且開啟一個I/O線程。

controller目前主要有以下三種請求:

  • UpdateMetaRequest:更新集群元數據請求,包含了集群的元數據信息。broker接收到該請求后,會更新本地的緩存信息

  • LeaderAndIsrRequest:用于創建分區和副本

  • StopReplicaRequest:停止指定副本的數據請求操作,另外還負責刪除副本數據功能。

“Kafka中Controller的作用是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

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

AI

达孜县| 永济市| 洛浦县| 萝北县| 修武县| 南昌市| 金华市| 新宾| 溆浦县| 措勤县| 临高县| 涪陵区| 普兰店市| 宜良县| 鄂托克旗| 德保县| 玛曲县| 海伦市| 孟州市| 东平县| 宣恩县| 新津县| 碌曲县| 商南县| 丁青县| 边坝县| 阿坝县| 乡城县| 佛冈县| 天门市| 长宁区| 临漳县| 五家渠市| 普安县| 宜城市| 双城市| 东港市| 舟曲县| 永春县| 柯坪县| 靖远县|