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

Kafka 入門到起飛 - Kafka是怎么保證可靠性的呢

這篇具有很好參考價值的文章主要介紹了Kafka 入門到起飛 - Kafka是怎么保證可靠性的呢。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

什么是消息的可靠性呢,就是Kafka作為消息中間件,可以保證生產(chǎn)者發(fā)送過來的消息,即使在Kafka集群有節(jié)點出現(xiàn)宕機的情況下,也不會丟失
Kafka 是通過消息確認機制副本復(fù)制機制 來保證消息可靠性的文章來源地址http://www.zghlxwxcb.cn/news/detail-650429.html

什么是副本因子?什么是副本復(fù)制機制呢?

  • 創(chuàng)建topic時,可以指定副本因子 repilication-factor = 3,默認是3
    • 表示分區(qū)的副本數(shù),包括Leader分區(qū)副本和follower分區(qū)副本
    • 副本因子不要超過broker的數(shù)量,盡量保證一個分區(qū)的副本均勻地分散在不同的broker上
    • 第一個副本通過輪詢的方式分配broker,從broker列表中隨機位置開始輪詢(生成一個隨機數(shù),選定第一個broker,然后開始逐個輪詢broker放副本)
    • 副本機制主要是為了實現(xiàn)高可用
  • Leader 副本只有一個,負責讀寫,其他節(jié)點都是Follower副本,
  • Producer 只把消息發(fā)送到Leader分區(qū),F(xiàn)ollower副本負責從Leader同步數(shù)據(jù)
  • 也就是說在Kafka集群內(nèi)會一直存在大量數(shù)據(jù)復(fù)制過程,這也會造成Kafka一個性能瓶頸

如何判斷副本是同步副本呢?

  • ISR 同步副本列表 (包含Leader)
    • 怎么樣算同步呢
    • replica.lag.max.messages 默認4000條,F(xiàn)ollower消息已經(jīng)滯后Leader4000條,即踢出ISR,新版本已經(jīng)取消該規(guī)則
    • replica.lag.max.ms 默認10000ms, 10s內(nèi)Follower 還沒有向Leader發(fā)送fetch請求,即踢出ISR
      • 新版本只通過該規(guī)則識別有效副本
      • 當Follower副本將Leader副本LEO之前的所有消息都同步時,認為該副本已經(jīng)追趕上Leader副本
      • 更新該副本的lastCaughtUpTimeMs 最后拉取數(shù)據(jù)的時間戳
      • ReplicaManager 副本管理器 會啟動一個定時任務(wù)
      • 定時任務(wù)定時監(jiān)測 當前時間lastCaughtUpTimeMs 的差值 是否大于replica.lag.max.ms
      • 大于即說明當前副本失效,踢出ISR
    • 每條消息都帶時間戳,生產(chǎn)者不帶的話broker也會給消息生成時間戳,當查找消息時就是根據(jù)偏移了+時間戳

什么情況會導致副本失效呢?

  • 卡副本(Stuck Replica) Follower副本進程卡住,一段時間內(nèi)沒有向Leader副本發(fā)起請求,比如Follower副本所在的broker內(nèi)存滿了,頻繁發(fā)起Full GC,我們知道Full GC時會STW(stop the world ),啥也干不了了
  • 慢副本(Slow Replica) Follower 副本進程同步過慢,網(wǎng)絡(luò)或者IO開銷過大或機器性能問題,導致Follower在一段時間內(nèi)無法趕上Leader
  • 剛啟動副本(BootStrapping Replica) 改變副本因子,比如增加一個副本,新增副本在同步Leader數(shù)據(jù)時,也會一直處于失效狀態(tài); Follower節(jié)點由于宕機下線了,后又上線,在追趕上Leader副本之前也處于失效狀態(tài)

如何保證消息的可靠性呢?

  • 為了保證可靠性,可以設(shè)置確認機制ack= all,
    • Producer將消息發(fā)送給Leader
    • Leader會等到ISR中所有Follower同步數(shù)據(jù)發(fā)送ack
    • Leader 再commit,Leader再向Producer發(fā)送ack
    • 保證生產(chǎn)者發(fā)送的消息實際寫入所有副本

到了這里,關(guān)于Kafka 入門到起飛 - Kafka是怎么保證可靠性的呢的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • RabbitMQ-保證消息可靠性

    RabbitMQ-保證消息可靠性

    消息從發(fā)送,到消費者接收,會經(jīng)理多個過程: 其中的每一步都可能導致消息丟失,常見的丟失原因包括: 發(fā)送時丟失: 生產(chǎn)者發(fā)送的消息未送達exchange 消息到達exchange后未到達queue MQ宕機,queue將消息丟失 consumer接收到消息后未消費就宕機 針對這些問題,RabbitMQ分別給出了

    2024年02月07日
    瀏覽(31)
  • RabbitMQ如何保證消息可靠性

    RabbitMQ如何保證消息可靠性

    目錄 1、RabbitMQ消息丟失的可能性 1.1 生產(chǎn)者消息丟失場景 1.2 MQ導致消息丟失 1.3 消費者丟失 2、如何保證生產(chǎn)者消息的可靠性 2.1 生產(chǎn)者重試機制 2.2 生產(chǎn)者確認機制 2.3 實現(xiàn)生產(chǎn)者確認 2.3.1 配置yml開啟生產(chǎn)者確認 2.3.2 定義ReturnCallback 2.3.3 定義ConfirmCallback 3、MQ消息可靠性 3.1

    2024年02月20日
    瀏覽(25)
  • TCP如何保證傳輸可靠性?

    TCP如何保證傳輸可靠性?

    文章參考: 《網(wǎng)絡(luò)是怎樣連接的》:https://book.douban.com/subject/26941639/ 《圖解網(wǎng)絡(luò)》:https://www.xiaolincoding.com/network/ 在開始閱讀該博客之前,先要好好了解一下 TCP報文頭部 到底有那些信息,閱讀后續(xù)內(nèi)容時有任何模糊的地方都可以回來這里 查看梳理 ,接下來我來解釋一下:

    2024年02月20日
    瀏覽(17)
  • RabbitMQ保證消息的可靠性

    RabbitMQ保證消息的可靠性

    消息從發(fā)送,到消費者接收,會經(jīng)理多個過程: 其中的每一步都可能導致消息丟失,常見的丟失原因包括: 發(fā)送時丟失: 生產(chǎn)者發(fā)送的消息未送達exchange 消息到達exchange后未到達queue MQ宕機,queue將消息丟失 consumer接收到消息后未消費就宕機 針對這些問題,RabbitMQ分別給出了

    2024年02月19日
    瀏覽(23)
  • TCP消息傳輸可靠性保證

    TCP消息傳輸可靠性保證

    三次握手 TCP 提供面向有連接的通信傳輸。面向有連接是指在數(shù)據(jù)通信開始之前先做好兩端之間的準備工作。 所謂三次握手是指建立一個 TCP 連接時需要客戶端和服務(wù)器端總共發(fā)送三個包以確認連接的建立。在socket編程中,這一過程由客戶端執(zhí)行connect來觸發(fā)。 第一次握手:客

    2024年02月12日
    瀏覽(21)
  • [rocketmq] 如何保證消息可靠性

    1、生產(chǎn)者發(fā)送消息到Broker時; 2、Broker內(nèi)部存儲消息到磁盤以及主從復(fù)制同步時; 3、Broker把消息推送給消費者或者消費者主動拉取消息時; 1.重試策略,發(fā)送消息失敗后會進行一定的重試策略 重試機制:固定重試次數(shù),同步刷盤會切換 broker 重試,異步刷盤會在同一 broker

    2024年02月11日
    瀏覽(30)
  • 如何保證 RabbitMQ 的消息可靠性?

    如何保證 RabbitMQ 的消息可靠性?

    項目開發(fā)中經(jīng)常會使用消息隊列來 完成異步處理、應(yīng)用解耦、流量控制等功能 。雖然消息隊列的出現(xiàn)解決了一些場景下的問題,但是同時也引出了一些問題,其中使用消息隊列時如何保證消息的可靠性就是一個常見的問題。 如果在項目中遇到需要保證消息一定被消費的場景

    2024年02月07日
    瀏覽(27)
  • 如何保證消息的可靠性(面試題)

    如何保證消息的可靠性(面試題)

    面試題 :Rebbitmq怎么保證消息的可靠性 消費者在接收到消息后,默認情況下RabbitMQ會自動確認消息(autoAck=true)。為保證消息可靠性,可以設(shè)置autoAck=false,使得消費者在處理完消息后手動發(fā)送確認(basicAck)。如果消費者在處理過程中發(fā)生異?;蛘呶赐瓿商幚砭徒K止運行,那

    2024年04月14日
    瀏覽(27)
  • rabbitmq如何保證消息的可靠性

    RabbitMQ可以通過以下方式來保證消息的可靠性: 在發(fā)布消息時,可以設(shè)置消息的delivery mode為2,這樣消息會被持久化存儲在磁盤上,即使RabbitMQ服務(wù)器重啟,消息也不會丟失。 可以創(chuàng)建持久化的隊列,這樣即使RabbitMQ服務(wù)器重啟,隊列也不會丟失。 在消費者端,可以 設(shè)置手動

    2024年01月23日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包