日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kafka无消息丢失配置

發(fā)布時間:2025/4/16 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kafka无消息丢失配置 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Kafka到底會不會丟數(shù)據(jù)(data loss)? 通常不會,但有些情況下的確有可能會發(fā)生。下面的參數(shù)配置及Best practice列表可以較好地保證數(shù)據(jù)的持久性(當(dāng)然是trade-off,犧牲了吞吐量)。筆者會在該列表之后對列表中的每一項進(jìn)行討論,有興趣的同學(xué)可以看下后面的分析。

  • block.on.buffer.full = true
  • acks = all
  • retries = MAX_VALUE
  • max.in.flight.requests.per.connection = 1
  • 使用KafkaProducer.send(record, callback)
  • callback邏輯中顯式關(guān)閉producer:close(0)?
  • unclean.leader.election.enable=false
  • replication.factor = 3?
  • min.insync.replicas = 2
  • replication.factor >?min.insync.replicas
  • enable.auto.commit=false
  • 消息處理完成之后再提交位移
  • 給出列表之后,我們從兩個方面來探討一下數(shù)據(jù)為什么會丟失:

    1. Producer端

      目前比較新版本的Kafka正式替換了Scala版本的old producer,使用了由Java重寫的producer。新版本的producer采用異步發(fā)送機制。KafkaProducer.send(ProducerRecord)方法僅僅是把這條消息放入一個緩存中(即RecordAccumulator,本質(zhì)上使用了隊列來緩存記錄),同時后臺的IO線程會不斷掃描該緩存區(qū),將滿足條件的消息封裝到某個batch中然后發(fā)送出去。顯然,這個過程中就有一個數(shù)據(jù)丟失的窗口:若IO線程發(fā)送之前client端掛掉了,累積在accumulator中的數(shù)據(jù)的確有可能會丟失。

      Producer的另一個問題是消息的亂序問題。假設(shè)客戶端代碼依次執(zhí)行下面的語句將兩條消息發(fā)到相同的分區(qū)

    producer.send(record1); producer.send(record2);

    如果此時由于某些原因(比如瞬時的網(wǎng)絡(luò)抖動)導(dǎo)致record1沒有成功發(fā)送,同時Kafka又配置了重試機制和max.in.flight.requests.per.connection大于1(默認(rèn)值是5,本來就是大于1的),那么重試record1成功后,record1在分區(qū)中就在record2之后,從而造成消息的亂序。很多某些要求強順序保證的場景是不允許出現(xiàn)這種情況的。

      鑒于producer的這兩個問題,我們應(yīng)該如何規(guī)避呢??對于消息丟失的問題,很容易想到的一個方案就是:既然異步發(fā)送有可能丟失數(shù)據(jù), 我改成同步發(fā)送總可以吧?比如這樣:

    producer.send(record).get();

    這樣當(dāng)然是可以的,但是性能會很差,不建議這樣使用。因此特意總結(jié)了一份配置列表。個人認(rèn)為該配置清單應(yīng)該能夠比較好地規(guī)避producer端數(shù)據(jù)丟失情況的發(fā)生:(特此說明一下,軟件配置的很多決策都是trade-off,下面的配置也不例外:應(yīng)用了這些配置,你可能會發(fā)現(xiàn)你的producer/consumer 吞吐量會下降,這是正常的,因為你換取了更高的數(shù)據(jù)安全性)

    • block.on.buffer.full = true ?盡管該參數(shù)在0.9.0.0已經(jīng)被標(biāo)記為“deprecated”,但鑒于它的含義非常直觀,所以這里還是顯式設(shè)置它為true,使得producer將一直等待緩沖區(qū)直至其變?yōu)榭捎?。否則如果producer生產(chǎn)速度過快耗盡了緩沖區(qū),producer將拋出異常
    • acks=all ?很好理解,所有follower都響應(yīng)了才認(rèn)為消息提交成功,即"committed"
    • retries = MAX 無限重試,直到你意識到出現(xiàn)了問題:)
    • max.in.flight.requests.per.connection = 1 限制客戶端在單個連接上能夠發(fā)送的未響應(yīng)請求的個數(shù)。設(shè)置此值是1表示kafka broker在響應(yīng)請求之前client不能再向同一個broker發(fā)送請求。注意:設(shè)置此參數(shù)是為了避免消息亂序
    • 使用KafkaProducer.send(record, callback)而不是send(record)方法 ? 自定義回調(diào)邏輯處理消息發(fā)送失敗
    • callback邏輯中最好顯式關(guān)閉producer:close(0)?注意:設(shè)置此參數(shù)是為了避免消息亂序
    • unclean.leader.election.enable=false ? 關(guān)閉unclean leader選舉,即不允許非ISR中的副本被選舉為leader,以避免數(shù)據(jù)丟失
    • replication.factor >= 3 ? 這個完全是個人建議了,參考了Hadoop及業(yè)界通用的三備份原則
    • min.insync.replicas > 1 消息至少要被寫入到這么多副本才算成功,也是提升數(shù)據(jù)持久性的一個參數(shù)。與acks配合使用
    • 保證replication.factor >?min.insync.replicas ?如果兩者相等,當(dāng)一個副本掛掉了分區(qū)也就沒法正常工作了。通常設(shè)置replication.factor =?min.insync.replicas + 1即可

    2. Consumer端

      consumer端丟失消息的情形比較簡單:如果在消息處理完成前就提交了offset,那么就有可能造成數(shù)據(jù)的丟失。由于Kafka consumer默認(rèn)是自動提交位移的,所以在后臺提交位移前一定要保證消息被正常處理了,因此不建議采用很重的處理邏輯,如果處理耗時很長,則建議把邏輯放到另一個線程中去做。為了避免數(shù)據(jù)丟失,現(xiàn)給出兩點建議:

    • enable.auto.commit=false ?關(guān)閉自動提交位移
    • 在消息被完整處理之后再手動提交位移

    轉(zhuǎn)載于:https://www.cnblogs.com/huxi2b/p/6056364.html

    總結(jié)

    以上是生活随笔為你收集整理的Kafka无消息丢失配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 麻豆av一区二区三区在线观看 | 日本不卡视频在线播放 | 亚洲欧美日本国产 | 草久在线 | 超污视频在线观看 | 午夜免费一级片 | 91视频你懂的| 色老头在线一区二区三区 | 久久久久久98 | 天天天天躁天天爱天天碰2018 | 亚洲欧美日韩精品永久在线 | 另类一区二区三区 | 日本激情影院 | 免费网站在线高清观看 | 欧美第五页 | 成人拍拍拍| 毛片av在线 | 91在线一区 | 奇米四色在线观看 | 久久精品男人的天堂 | 91精品视频免费 | 久久免费在线观看视频 | 欧美在线视频免费 | 日韩二区在线观看 | 黄色一级视频网站 | jizz18国产 | 91精品久久久久久久久中文字幕 | 亚洲色图丝袜 | 黄色一及毛片 | 成人久久久精品国产乱码一区二区 | 亚洲大尺度av | 精品国产传媒 | 激情福利在线 | 久草电影在线 | 中国黄色片视频 | h片大全 | 免费大片黄在线观看 | 98视频在线 | 怡红院一区二区三区 | 乱短篇艳辣500篇h文最新章节 | 日本久久99 | 亚洲区一区二 | 永久免费av无码网站性色av | 男人天堂中文字幕 | 波多野结衣视频在线观看 | 强行侵犯视频在线观看 | 国产成人免费看一级大黄 | 长腿校花无力呻吟娇喘的视频 | 免费国产小视频 | 亚洲一区二区自拍偷拍 | 国产美女又黄又爽又色视频免费 | 姐姐你真棒插曲快来救救我电影 | 日韩欧美在线看 | 91在线视频精品 | 欧美极品在线观看 | 国产亚洲色婷婷久久99精品 | 亚洲女人的天堂 | av有码在线观看 | 天堂中文字幕在线 | 日本无翼乌邪恶大全彩h | 国产又粗又猛又爽又黄的视频小说 | 国产夫妇交换聚会群4p | 97在线观看免费高清 | 午夜视频欧美 | 亚洲1页 | 玖玖精品在线视频 | 精品视频一区二区三区四区五区 | 日韩xxxxxxxxx | 日韩午夜视频在线 | 先锋影音在线 | 夜夜嗨一区 | 欧美一级特黄视频 | 九九热视频在线免费观看 | 欧美老肥婆性猛交视频 | 亚洲AV无码片久久精品 | www.香蕉视频 | 久久久久久中文字幕 | 999精品在线观看 | 色综合九九 | 国产波霸爆乳一区二区 | 狠狠爱欧美| 色播五月婷婷 | 免费无码不卡视频在线观看 | 久久成人a毛片免费观看网站 | 久久综合九九 | 免费的性爱视频 | 粉嫩在线 | 色老久久 | 美女扒开腿男人爽桶 | 在线观看日韩av电影 | 欧美在线观看视频一区二区 | 国产精品一区二区久久毛片 | 精品视频91| 亚洲成人网av | 中文字幕乱轮 | 一本色道久久加勒比精品 | 在线观看自拍 | 免费看av网 | 亚洲精品免费网站 |