国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

探究Kafka宕機引發的高可用問題

馬哥Linux運維 ? 來源:掘金 ? 作者:JanusWoo ? 2021-10-20 15:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、Kafka宕機引發的高可用問題

問題要從一次Kafka的宕機開始說起。

筆者所在的是一家金融科技公司,但公司內部并沒有采用在金融支付領域更為流行的RabbitMQ ,而是采用了設計之初就為日志處理而生的Kafka,所以我一直很好奇Kafka的高可用實現和保障。從Kafka部署后,系統內部使用的Kafka一直運行穩定,沒有出現不可用的情況。

但最近系統測試人員常反饋偶有Kafka消費者收不到消息的情況,登陸管理界面發現三個節點中有一個節點宕機掛掉了。但是按照高可用的理念,三個節點還有兩個節點可用怎么就引起了整個集群的消費者都接收不到消息呢?

要解決這個問題,就要從Kafka的高可用實現開始講起。

二、Kafka的多副本冗余設計

不管是傳統的基于關系型數據庫設計的系統,還是分布式的如ZooKeeper 、Redis 、Kafka 、HDFS等等,實現高可用的辦法通常是采用冗余設計,通過冗余來解決節點宕機不可用問題。

首先簡單了解Kafka的幾個概念:

物理模型

邏輯模型

Broker (節點):Kafka服務節點,簡單來說一個Broker就是一臺Kafka服務器,一個物理節點;

Topic (主題):在Kafka中消息以主題為單位進行歸類,每個主題都有一個 Topic Name,生產者根據Topic Name將消息發送到特定的Topic,消費者則同樣根據Topic Name從對應的Topic進行消費;

Partition (分區):Topic(主題)是消息歸類的一個單位,但每一個主題還能再細分為一個或多個 Partition(分區),一個分區只能屬于一個主題。主題和分區都是邏輯上的概念,舉個例子,消息1和消息2都發送到主題1,它們可能進入同一個分區也可能進入不同的分區(所以同一個主題下的不同分區包含的消息是不同的),之后便會發送到分區對應的Broker節點上;

Offset (偏移量):分區可以看作是一個只進不出的隊列(Kafka只保證一個分區內的消息是有序的),消息會往這個隊列的尾部追加,每個消息進入分區后都會有一個偏移量,標識該消息在該分區中的位置,消費者要消費該消息就是通過偏移量來識別。

其實,根據上述的幾個概念,是不是也多少猜到了Kafka的多副本冗余設計實現了?別急,咱繼續往下看。

在Kafka 0.8版本以前,是沒有多副本冗余機制的,一旦一個節點掛掉,那么這個節點上的所有 Partition的數據就無法再被消費。這就等于發送到Topic的有一部分數據丟失了。

在0.8版本后引入副本記者則很好地解決宕機后數據丟失的問題。副本是以 Topic 中每個 Partition的數據為單位,每個Partition的數據會同步到其他物理節點上,形成多個副本。

每個 Partition 的副本都包括一個 Leader 副本和多個 Follower副本,Leader由所有的副本共同選舉得出,其他副本則都為Follower副本。在生產者寫或者消費者讀的時候,都只會與Leader打交道,在寫入數據后Follower就會來拉取數據進行數據同步。

就這么簡單?是的,基于上面這張多副本架構圖就實現了Kafka的高可用。當某個 Broker 掛掉了,甭擔心,這個Broker上的Partition在其他Broker節點上還有副本。你說如果掛掉的是Leader怎么辦?那就在Follower中在選舉出一個Leader即可,生產者和消費者又可以和新的Leader愉快地玩耍了,這就是高可用。

你可能還有疑問,那要多少個副本才算夠用?Follower和Leader之間沒有完全同步怎么辦?一個節點宕機后Leader的選舉規則是什么?

直接拋結論:

多少個副本才算夠用?

副本肯定越多越能保證Kafka的高可用,但越多的副本意味著網絡、磁盤資源的消耗更多,性能會有所下降,通常來說副本數為3即可保證高可用,極端情況下將 Replication Factor參數調大即可。

Follower和Lead之間沒有完全同步怎么辦?

Follower和Leader之間并不是完全同步,但也不是完全異步,而是采用一種 ISR機制(In-Sync Replica)。每個Leader會動態維護一個ISR列表,該列表里存儲的是和Leader基本同步的Follower。如果有Follower由于網絡、GC等原因而沒有向Leader發起拉取數據請求,此時Follower相對于Leader是不同步的,則會被踢出ISR列表。所以說,ISR列表中的Follower都是跟得上Leader的副本。

一個節點宕機后Leader的選舉規則是什么?

分布式相關的選舉規則有很多,像ZooKeeper的Zab、Raft、Viewstamped Replication 、微軟的 PacificA 等。而Kafka的Leader選舉思路很簡單,基于我們上述提到的 ISR列表,當宕機后會從所有副本中順序查找,如果查找到的副本在ISR列表中,則當選為Leader。

另外還要保證前任Leader已經是退位狀態了,否則會出現腦裂情況(有兩個Leader)。怎么保證?Kafka通過設置了一個Controller來保證只有一個Leader。

三、Ack參數決定了可靠程度

另外,這里補充一個面試考Kafka高可用必備知識點:request.required.asks 參數。

Asks這個參數是生產者客戶端的重要配置,發送消息的時候就可設置這個參數。該參數有三個值可配置:0、1、All 。

第一種是設為0

意思是生產者把消息發送出去之后,之后這消息是死是活咱就不管了,有那么點發后即忘的意思,說出去的話就不負責了。不負責自然這消息就有可能丟失,那就把可用性也丟失了。

第二種是設為1

意思是生產者把消息發送出去之后,這消息只要順利傳達給了Leader,其他Follower有沒有同步就無所謂了。存在一種情況,Leader剛收到了消息,Follower還沒來得及同步Broker就宕機了,但生產者已經認為消息發送成功了,那么此時消息就丟失了。注意,設為1是Kafka的默認配置,可見Kafka的默認配置也不是那么高可用,而是對高可用和高吞吐量做了權衡折中。

第三種是設為All(或者-1)

意思是生產者把消息發送出去之后,不僅Leader要接收到,ISR列表中的Follower也要同步到,生產者才會任務消息發送成功。

進一步思考, Asks=All 就不會出現丟失消息的情況嗎?答案是否。當ISR列表只剩Leader的情況下, Asks=All 相當于 Asks=1 ,這種情況下如果節點宕機了,還能保證數據不丟失嗎?因此只有在 Asks=All并且有ISR中有兩個副本的情況下才能保證數據不丟失。

四、解決問題

繞了一大圈,了解了Kafka的高可用機制,終于回到我們一開始的問題本身,Kafka 的一個節點宕機后為什么不可用?

我在開發測試環境配置的 Broker 節點數是3,Topic 是副本數為3,Partition數為6,Asks參數為1。

當三個節點中某個節點宕機后,集群首先會怎么做?沒錯,正如我們上面所說的,集群發現有Partition的Leader失效了,這個時候就要從ISR列表中重新選舉Leader。如果ISR列表為空是不是就不可用了?并不會,而是從Partition存活的副本中選擇一個作為Leader,不過這就有潛在的數據丟失的隱患了。

所以,只要將Topic副本個數設置為和Broker個數一樣,Kafka的多副本冗余設計是可以保證高可用的,不會出現一宕機就不可用的情況(不過需要注意的是Kafka有一個保護策略,當一半以上的節點不可用時Kafka就會停止)。那仔細一想,Kafka上是不是有副本個數為1的Topic?

問題出在了 consumer_offset 上, consumer_offset 是一個Kafka自動創建的 Topic,用來存儲消費者消費的 offset (偏移量)信息,默認 Partition數為50。而就是這個Topic,它的默認副本數為1。如果所有的 Partition 都存在于同一臺機器上,那就是很明顯的單點故障了!當將存儲 __consumer_offset 的Partition的Broker給Kill后,會發現所有的消費者都停止消費了。

這個問題怎么解決?

需要將 __consumer_offset 刪除,注意這個Topic時Kafka內置的Topic,無法用命令刪除,我是通過將 logs 刪了來實現刪除。

需要通過設置 offsets.topic.replication.factor 為3來將 __consumer_offset 的副本數改為3。

通過將 __consumer_offset 也做副本冗余后來解決某個節點宕機后消費者的消費問題。

最后,關于為什么 __consumer_offset的Partition會出現只存儲在一個Broker上而不是分布在各個Broker上感到困惑,如果有朋友了解的煩請指教~

作者:JanusWoo

來源:https://juejin.im/post/6874957625998606344

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • HDFS
    +關注

    關注

    1

    文章

    32

    瀏覽量

    10115
  • kafka
    +關注

    關注

    0

    文章

    55

    瀏覽量

    5569

原文標題:從一次 Kafka 節點宕機探究 Kafka 的高可用實現

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Cloudflare宕機!全球網絡崩了

    錯誤提示。而這一切的原因在于互聯網基礎設施服務商Cloudflare又宕機了。 ? 盡管Cloudflare隨后表示,目前已修復問題。但對此已經造成的數十億美元的損失,這次事件持續超三小時,影響范圍極廣,甚至波及用于監測網站狀態的平臺Downdetector本身,因其也依賴C
    的頭像 發表于 11-21 08:57 ?9343次閱讀

    工程師之夜系列分享第三十九篇:Kafka、RocketMQ、JMQ 存儲架構深度對比

    開源,金融級特性突出)、JMQ(京東開源,側重可用與靈活性),從存儲模型、數據組織、索引設計等維度展開深度對比,為技術選型與架構優化提供參考。? 本文將從概念辨析出發,系統拆解主流存儲模型與存儲引擎的設計邏輯,對比 JMQ、Kafka
    的頭像 發表于 01-13 16:19 ?180次閱讀
    工程師之夜系列分享第三十九篇:<b class='flag-5'>Kafka</b>、RocketMQ、JMQ 存儲架構深度對比

    探究PCB樣板貼片技術特點

    PCB樣板貼片技術是現代電子制造過程中不可或缺的一環,它可以為量產前的電路板測試提供參考,發現不足之處,從而避免一些不必要的錯誤和損失。本文將從技術特點、優缺點和售賣市場等方面深入探究PCB樣板貼片
    的頭像 發表于 01-08 12:46 ?169次閱讀
    <b class='flag-5'>探究</b>PCB樣板貼片技術特點

    探究TDA8035:集成低功耗智能卡接口的實用之選

    探究TDA8035:集成低功耗智能卡接口的實用之選 在智能卡技術廣泛應用的今天,一款性能卓越的智能卡接口芯片顯得尤為重要,NXP的TDA8035就是這樣一款值得關注的產品。它是集成式接觸式智能卡
    的頭像 發表于 12-28 15:05 ?925次閱讀

    模塊電源使用指南:核心注意點與最佳實踐

    模塊電源以其小體積、集成度、高可靠性等優點,在電子設備中得到了廣泛應用。然而,要充分發揮其性能并確保系統長期穩定運行,正確的使用至關重要。忽視細節可能導致電源損壞、系統宕機,甚至引發安全隱患。
    的頭像 發表于 10-28 18:33 ?725次閱讀
    模塊電源使用指南:核心注意點與最佳實踐

    企業級HDFS可用與YARN資源調度方案

    作為一名在大數據運維領域摸爬滾打8年的老兵,我見過太多因為基礎架構不夠健壯而導致的生產事故。今天,我想和大家分享一套經過實戰檢驗的 HDFS 可用與 YARN 資源調度方案,這套方案幫助我們團隊將平臺可用性從 99.5% 提升
    的頭像 發表于 09-08 17:15 ?732次閱讀

    華納云:海外服務器負載均衡與可用架構設計

    在現代互聯網應用中,海外服務器承擔著跨境業務、并發請求和實時數據傳輸的關鍵角色。單臺服務器難以支撐大量并發請求,一旦發生故障,可能導致服務中斷和業務損失。因此,合理設計負載均衡與可用架構,能夠
    的頭像 發表于 08-28 18:32 ?655次閱讀

    深入剖析RabbitMQ可用架構設計

    在微服務架構中,消息隊列故障導致的系統不可用率高達27%!如何構建一個真正可靠的消息中間件架構?本文將深入剖析RabbitMQ可用設計的核心要點。
    的頭像 發表于 08-18 11:19 ?954次閱讀

    QNAP 正式推出 NAS 雙機架構的可用性解決方案,打造不中斷的儲存環境

    臺北2025年7月28日 /美通社/ -- 運算、網通與儲存解決方案領導品牌威聯通?科技 (QNAP? Systems, Inc.) 今日正式發布可用性 (High Availability
    的頭像 發表于 07-28 09:26 ?605次閱讀

    Kafka生產環境應用方案

    Apache Kafka作為分布式流處理平臺,在現代大數據架構中扮演著消息中間件的核心角色。本文將從運維工程師的角度,詳細介紹Kafka在生產環境中的部署方案、配置優化、監控運維等關鍵技術。通過實戰案例和代碼示例,幫助運維團隊構建穩定、高效的
    的頭像 發表于 07-09 09:56 ?583次閱讀

    工控一體機散熱不良導致宕機?聚徽揭秘3 步優化散熱方案 + 選型避坑指南

    在工業自動化進程加速的當下,工控一體機憑借高度集成化和強大的運算能力,成為生產線上不可或缺的核心設備。然而,散熱不良引發宕機問題,卻如同隱藏在設備中的 “定時炸彈”,不僅中斷生產流程,還可能造成
    的頭像 發表于 07-02 10:23 ?854次閱讀

    介紹三種常見的MySQL可用方案

    在生產環境中,為了確保數據庫系統的連續可用性、降低故障恢復時間以及實現業務的無縫切換,可用(High Availability, HA)方案至關重要。本文將詳細介紹三種常見的 MySQL
    的頭像 發表于 05-28 17:16 ?1236次閱讀

    MYSQL集群可用和數據監控平臺實現方案

    該項目共分為2個子項目,由MYSQL集群可用和數據監控平臺兩部分組成。
    的頭像 發表于 05-28 10:10 ?1308次閱讀
    MYSQL集群<b class='flag-5'>高</b><b class='flag-5'>可用</b>和數據監控平臺實現方案

    Kafka工作流程及文件存儲機制

    Kafka 中消息是以 topic 進行分類的,生產者生產消息,消費者消費消息,都是面向 topic 的。
    的頭像 發表于 05-19 10:14 ?925次閱讀
    <b class='flag-5'>Kafka</b>工作流程及文件存儲機制

    華納云如何為電商大促場景扛住Tb級攻擊不宕機

    在電商大促場景中,面對Tb級攻擊的挑戰,為確保SCDN(邊緣安全加速)全站防護能夠扛住攻擊而不宕機,可以從以下幾個方面著手: 一、采用高性能與防護能力的SCDN服務 選擇具備Tb級帶寬
    的頭像 發表于 03-25 15:14 ?822次閱讀