【車聯網kafka】Kafka核心架構與實戰經驗(第四篇)

一、社團扛把子不為人知的秘密

????????香港社團里,Kafka 是整個組織的名號,ZooKeeper 就是說一不二的長老團,各個片區的 “話事人” 就是 broker,而能統領所有片區的 “扛把子”,就是 Kafka 里的控制器。?

1.1 選舉的秘密

????????每天社團開工,各個片區的話事人都要先去長老團報備。這時候,大家都會偷偷瞄一眼長老團手里的 “花名冊”—— 也就是 ZooKeeper 里的 /controller 節點。

????????要是花名冊上已經寫了某個片區話事人的名字(brokerid),其他人就只能乖乖退回,承認對方是扛把子;

????????可要是花名冊是空的,或者上面的名字糊了,所有人就得立刻搶著去長老團登記,誰先把自己名字寫上,誰就是新扛把子。不過這登記有講究,花名冊是 “臨時的”,要是扛把子出了意外(節點宕機),名字會自動從花名冊上消失,這時候就得重新選扛把子。?

????????每個新扛把子上任,長老團還會給一個 “任期編號”—— 也就是 controller_epoch。

頭一任扛把子是 1 號,要是扛把子換了人,編號就自動加 1。為啥要有這編號?比如前扛把子的小弟拿著命令來找現任扛把子,現任一看編號不對(比自己的小),就知道這是過期命令,直接不認。這規矩能避免前任的舊指令擾亂社團。?

1.2 日常工作的職責之謎

????????當了扛把子,就得比普通話事人多扛不少活兒(這些事都得扛把子親自拍板,還得讓長老團盯著相關的節點,隨時匯報動靜)。

  • 片區地盤調整(分區重分配):

    • 為ZooKeeper中的/admin/reassign_partitions 節點注冊 PartitionReassignmentHandler

  • 手下兄弟變動(ISR 集合變更):

    • 為 ZooKeeper 中的/isr_change_notification節點注冊IsrChangeNotificetionHandler

  • 換片區負責人(優先副本選舉):

    • 為ZooKeeper中的/admin/preferred-replica-election節點添加PreferredReplicaElectionHandler

  • 社團里新來重大任務(新增主題):

    • 為 ZooKeeper 中的/brokers/topics 節點添加TopicChangeHandler

  • 社團某些重大任務不干了(刪除主題):

    • 為 ZooKeeper 中的/admin/delete_topics節點點添加TopicDeletionHandler。?

  • 有新話事人加入(broker 上線)或者老話事人跑路(broker 下線),扛把子得盯著花名冊(/brokers/ids),及時調整人手。

    • 為ZooKeeper中的/brokers/ids節點添加BrokerChangeHandler,用來處理broker增減的變化。
  • 每天開工,扛把子得先從長老團那里把所有地盤、兄弟的信息抄一遍,整理成總表,再下發給所有片區,保證大家信息一致。?

    • 為ZooKeeper中的/brokers/topics/<topic>節點添加PartitionModificationsHandler。?

????????對了,社團里還有個規矩:要不要定期調整各個地盤的負責人(優先副本均衡),得看扛把子手里的 “自動調整開關”(auto.leader.rebalance.enable)。這開關要是打開,扛把子會每 5 分鐘查一次,要是發現 10% 以上的地盤負責人不合適,就會自動換人。但老江湖都知道,這自動調整容易出亂子,萬一正忙著做事呢,突然換負責人會耽誤事,所以社團里一般都把這開關關了,換成手動調整 —— 就像用腳本 kafka-perferred-replica-election.sh 指定換人,穩妥得多。?

????????說到底,扛把子的存在就是為了讓整個社團不亂套:誰的地盤誰負責,兄弟變動有記錄,地盤調整有章法,就算扛把子換了人,有任期編號頂著,新老大照樣能順利接盤。這一套規矩下來,社團才能在香港的復雜環境里穩穩當當運行。

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

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

相關文章

Scala重點(基礎、面向對象、高階函數、集合、模式匹配)

1. 基礎語法1.1. 注釋和java一樣我是單行注釋 /* 我是多行注釋 我是多行注釋 */ /** * 我是文檔注釋 * 我是文檔注釋 */1.2. 語句語句可以不以分號結尾一條語句獨占一行 println("Hello World!")多條語句在一行 println("Hello World!"); println("He…

明遠智睿T113-i核心板:工業設備制造領域的革新利器

在工業設備制造這片充滿挑戰與機遇的領域,技術革新如同一股洶涌浪潮,不斷重塑著市場競爭的格局。隨著技術持續進步,市場競爭愈發激烈,制造商們面臨著如何在保證產品卓越性能的同時,有效控制成本這一關鍵難題。在此背景…

122-基于Flask的校園霸凌數據可視化分析系統

校園霸凌數據可視化分析系統 - 基于Flask的全棧數據分析平臺 本文詳細介紹了一個基于Flask框架開發的校園霸凌數據可視化分析系統,從技術架構到功能實現,為數據分析項目開發提供參考。 📋 目錄 項目概述技術架構核心功能代碼結構技術棧詳解核…

Docker 網絡設置方式詳解

Docker 網絡是容器通信的核心基礎,它允許容器之間、容器與主機之間以及容器與外部網絡之間進行數據交互。Docker 提供了多種網絡驅動類型,適用于不同場景,下面詳細介紹 Docker 網絡的設置方式。一、Docker 網絡的基本概念 Docker 網絡通過驅動…

export default和export function的作用及export的含義

在 JavaScript 中,export 是一個關鍵字,用于將模塊中的變量、函數、類等導出,以便其他模塊可以導入和使用。export default 和 export(非默認導出)是兩種不同的導出方式,它們在使用場景和語義上有明顯的區別…

免費 ollama 可用地址共享 內含免費 deepseek,gpt,bge,llama,Qwen,embed 大模型等

ollama 共享 介紹 集ollama地址的批量添加,批量校驗,批量獲取 ,api接口調用于一體 演示地址:ollama格式化工具 開源地址:https://gitee.com/web/ollama-share 使用說明 index.php 通過提交table 批量提交ollama地…

Android Audio實戰——獲取活躍音頻類型(十五)

在 Android Audio 開發中,很多場景需要獲取當前正在播放的音頻類型,而在音頻管理器 AudioManager 中并沒有發現類似的接口,這一篇文章就來看一下實現獲取活躍音頻類型的方式。 一、音頻類型獲取 對于獲取當前活躍音頻流類型,在《硬按鍵調節音量》中是通過 getActiveStream…

Verilog功能模塊--SPI主機和從機(02)--SPI主機設計思路與代碼解析

前言 上一篇文章介紹了SPI的四種工作模式及其時序特性,相信各位同學已經掌握了SPI通信的核心原理。 本文用純Verilog設計了功能完整的4線SPI主機,并詳細說明了模塊編碼思路和使用注意事項,最后分享了源碼。 一、模塊功能 本Verilog功能模塊—…

Decoder模型 向量模長表示什么

Decoder模型 向量模長表示什么 詞和其他詞的關系的強弱和關聯程度;生僻詞模長小 從實驗結果來看,Qwen2-7B-Instruct的向量模長規律與之前的預期(“模長與語義豐富度、確定性正相關”)完全相反,這反映了Decoder-only模型(尤其是指令微調模型)的表征特性與Encoder-only模…

STL容器及其算法

C 標準庫容器詳解:特性、用法與場景選型容器是 C 標準庫(STL)的核心組件,用于存儲和管理數據。不同容器因底層實現不同,在性能、功能和適用場景上差異顯著。本文系統梳理vector、list、set、map等常用容器,…

MySQL ZIP安裝教程:從解壓到啟動

金金金上線! 話不多,只講你能聽懂的前端知識 前言 我這里不能下載安裝程序的mysql,由于電腦安全限制,安裝時會彈出需要管理員賬號密碼權限,此路行不通,所以琢磨著免安裝版本怎么個流程,好&#…

p2p打洞

p2p網絡穿透庫,它的C++版本目前只支持linux,不支持win,它最新版本的穿透用的tcp,老版本支持tcp/udp: https://libp2p.io/ P2P-udp的穿透教程: https://edu.51cto.com/lesson/731596.html 目前打洞機制最好的庫是webrtc,其次是libnice,它是輕量級的專門打洞的庫。 libni…

『“無恙心寬”,梗痛不常』——愛上古中醫(12)(健康生活是coder抒寫優質代碼的前提條件——《黃帝內經》伴讀學習紀要)

養心護心氣血通,無痛無梗全身松。 筆記模板由python腳本于2025-08-10 15:54:46創建,本篇筆記適合至少通曉一門語言,熟悉基本編程范式的coder翻閱。 學習的細節是歡悅的歷程 博客的核心價值:在于輸出思考與經驗,而不僅僅…

Spark 運行流程核心組件(一)作業提交

1、Job啟動流程1、Client觸發 SparkContext 初始化 2、SparkContext 向 Master 注冊應用 3、Master 調度 Worker 啟動 Executor 4、Worker 進程啟動 Executor 5、DAGScheduler 將作業分解為 Stage: 6、TaskScheduler 分配 Task 到 Executor 2、核心組件組件職責Spar…

MySQL 臨時表與復制表

一、MySQL 臨時表臨時表是會話級別的臨時數據載體,其設計初衷是為了滿足短期數據處理需求,以下從技術細節展開說明。(一)核心特性拓展1.生命周期與會話綁定會話結束的判定:包括正常斷開連接(exit/quit&…

從配置到調試:WinCC與S7-1200/200SMT無線Modbus TCP通訊方案

測試設備與參數l 西門子PLC型號:S7-1200 1臺l 西門子PLC型號:S7-200Smart 1臺l 上位機:WinCC7.4 1臺l 無線通訊終端——DTD418MB 3塊l 主從關系:1主2從l 通訊接口:RJ45接口l 供電:12-24VDCl 通訊協議&a…

Android沉浸式全屏顯示與隱藏導航欄的實現

1. 總體流程以下是實現沉浸式全屏顯示和隱藏導航欄的流程:步驟描述步驟1創建一個新的Android項目步驟2在布局文件中定義需要展示的界面步驟3在Activity中設置沉浸式全屏顯示步驟4處理系統UI的顯示與隱藏步驟5運行應用并測試效果2. 詳細步驟步驟1:創建一個…

EN 62368消費電子、信息技術設備和辦公設備安全要求標準

EN 62368認證標準是一項全球性的電子產品安全標準,用于評估和認證消費電子、信息技術設備和辦公設備的安全性。該標準由國際電工委員會(IEC)制定,取代了傳統的EN60065和EN 60950兩個標準,成為國際電子產品安全領域的新指導。IEC /EN 62368-1是…

【unity實戰】使用Splines+DOTween制作彎曲手牌和抽牌動畫效果

最終效果 文章目錄最終效果前言實戰1、Splines的使用2、繪制樣條線3、DOTween安裝和使用4、基于樣條曲線(Spline)的手牌管理系統4.1 代碼實現4.2 解釋:(1)計算第一張卡牌的位置(居中排列)&#…

Flask模板注入梳理

從模板開始介紹:Flask中有許多不同功能的模板,他們之間是相互隔離的地帶,可供引入和使用。Flask中的模塊:flask 主模塊:包含框架的核心類和函數,如 Flask(應用實例)、request&#x…