中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

Kafka無法消費?!我的分布式消息服務Kafka卻穩如泰山!-創新互聯

  在一個月黑風高的夜晚,突然收到現網生產環境 Kafka 消息積壓的告警,夢中驚醒啊,馬上起來排查日志。

站在用戶的角度思考問題,與客戶深入溝通,找到雞冠網站設計與雞冠網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:成都網站制作、成都網站建設、企業官網、英文網站、手機端網站、網站推廣、域名與空間、虛擬空間、企業郵箱。業務覆蓋雞冠地區。

問題現象:消費請求卡死在查找 Coordinator

Coordinator 為何物? Coordinator 用于管理 Consumer Group 中各個成員,負責消費 offset 位移管理和 Consumer Rebalance 。 Consumer 在消費時必須先確認 Consumer Group 對應的 Coordinator ,隨后才能 join Group ,獲取對應的 topic partition 進行消費。

那如何確定 Consumer Group 的 Coordinator 呢?分兩步走:

1 、一個 Consumer Group 對應一個 __consumers_offsets 的分區,首先先計算 Consumer Group 對應的 __consumers_offsets 的分區,計算公式如下:

__consumers_offsets partition# = Math.abs(groupId.hashCode() % groupMetadataTopicPartitionCount ,其中 groupMetadataTopicPartitionCount 由 offsets.topic.num.partitions 指定。

2 、 1 中計算的該 partition 的 leader 所在的 broker 就是被選定的 Coordinator 。

定位過程

Coordinator 節點找到了,現在看看 Coordinator 是否有問題:

Kafka無法消費?!我的分布式消息服務Kafka卻穩如泰山!

不出所料, Coordinator 對應分區 Leader 為 -1 ,消費端程序會一直等待,直到 Leader 選出來為止,這就直接導致了消費卡死。

為啥 Leader 無法選舉? Leader 選舉是由 Controller 負責的。 Controller 節點負責管理整個集群中分區和副本的狀態,比如 partition 的 Leader 選舉, topic 創建,副本分配, partition 和 replica 擴容等。現在我們看看 Controller 的日志:

1.          6 月 10 日 15:48:30,006 秒 Broker 1 成為 controller

Kafka無法消費?!我的分布式消息服務Kafka卻穩如泰山!

此時感知的節點為 1 和 2 ,節點 3 在 zk 讀不出來:

Kafka無法消費?!我的分布式消息服務Kafka卻穩如泰山!

31 秒 847 的時候把 __consumer_offsets 的分區 3 的 Leader 選為 1 , ISR 為 [1,2] , leader_epoch 為 14 :

Kafka無法消費?!我的分布式消息服務Kafka卻穩如泰山!

再過 1 秒后才感知到 Controller 發生變化,自身清退

Kafka無法消費?!我的分布式消息服務Kafka卻穩如泰山!

2.          Broker 2 在其后幾百毫秒后 (15:48:30,936) 也成為 Controller

Kafka無法消費?!我的分布式消息服務Kafka卻穩如泰山!

但是 Broker2  是感知到 Broker 3 節點是活的,日志如下 :

Kafka無法消費?!我的分布式消息服務Kafka卻穩如泰山!

注意這個時間點, Broker1 還沒在 zk 把 __consumer_offsets 的分區 3 的 Leader 從節點 3 改為 1 ,這樣 Broker 2 還認為 Broker 3 是 Leader ,并且 Broker 3 在它認為是活的,所以不需要重新選舉 Leader 。這樣一直保持了相當長的時間,即使 Broker 1 已經把這個分區的 Leader 切換了,它也不感知。

3.          Broker 2 在 12 號的 21:43:19 又感知 Broker 1 網絡中斷,并處理節點失敗事件:

Kafka無法消費?!我的分布式消息服務Kafka卻穩如泰山!

因為 Broker 2 內存中認為 __consumer_offsets 分區 3 的 Leader 是 broker 3 ,所以不會觸發分區 3 的 Leader 切換。

Broker 2 但是在處理失敗的節點 Broker 1 時,會把副本從 ISR 列表中去掉,去掉前會讀一次 zk ,代碼如下:

Kafka無法消費?!我的分布式消息服務Kafka卻穩如泰山!

但是發現 zk 中分區 3 的 Leader 已經變為 1 , ISR 列表為 [1,2] ,當要去掉的節點 1 就是 Leader 的時候, Leader 就會變為 -1 ,  ISR 只有 [2] ,從日志也可以看到:

Kafka無法消費?!我的分布式消息服務Kafka卻穩如泰山!

這樣分區 3  的 Leader 一直為 -1 ,直到有新的事件觸發節點 2 重新選舉才能恢復(例如重啟某個節點)。

根因總結

出現網絡異常后,由于新老 controller 之間感知的可用節點不同,導致新 controller 對某個分區的 Leader 在內存中的信息與 zk 記錄元數據的信息不一致,導致 controller 選舉流程出現錯誤,選不出 Leader 。   需要有新的選舉事件才能觸發 Leader 選出來,例如重啟。

問題總結

這是一個典型的由于網絡異常導致腦裂,進而出現了多個 Controller ,菊廠分布式消息服務 Kafka( https://www.huaweicloud.com/product/dmskafka.html ) 經過電信級的可靠性驗證,已經完美解決了這些問題 。

 

網站題目:Kafka無法消費?!我的分布式消息服務Kafka卻穩如泰山!-創新互聯
標題路徑:http://www.2m8n56k.cn/article8/dppgip.html

成都網站建設公司_創新互聯,為您提供外貿建站App設計動態網站網站改版靜態網站全網營銷推廣

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站建設
主站蜘蛛池模板: 国产美女作爱全过程免费视频 | 欧美视频在线观看网站 | 久久亚洲精品中文字幕 | 成人手机视频在线观看 | 一级视频在线免费观看 | 飘花国产午夜精品不卡 | 亚洲国产高清视频 | 伊大人香蕉久久网 | 性xxxx奶大欧美高清 | 国产精品自拍在线 | 日韩视频在线观看 | 精品国产免费观看一区 | 精品国产一区在线观看 | 亚洲精品美女 | 日韩亚洲欧美综合一区二区三区 | 国产网红自拍 | 99久久免费午夜国产精品 | 亚洲国产成人超福利久久精品 | 成年人午夜网站 | 欧美性猛交xxxxbbb | 色久网站| 国产精品1区2区3区 国产精品1区2区3区在线播放 | 伊人久爱| 久99re视频9在线观看 | 国产精品1区2区3区在线播放 | 91久久亚洲精品国产一区二区 | 日韩国产成人精品视频人 | 成人小视频在线播放 | 免费一级特黄欧美大片久久网 | 欧美日韩精品免费一区二区三区 | 国产一区二区免费播放 | 日本一在线中文字幕天堂 | 99久久免费精品视频 | 亚洲国产成a人v在线 | 乱系列中文字幕在线视频 | 久久99精品热在线观看15 | 俄罗斯一级成人毛片 | 欧美午夜性春猛交 | 国产大尺度福利视频在线观看 | 手机看片日韩国产 | 日韩综合网站 |