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

Kafka 如何保證消息不丟失

這篇具有很好參考價(jià)值的文章主要介紹了Kafka 如何保證消息不丟失。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1、生產(chǎn)者

1.1 丟失原因:

  • kafka生產(chǎn)端異步發(fā)送消息后,不管broker是否響應(yīng),立即返回,偽代碼producer.send(msg),由于網(wǎng)絡(luò)抖動,導(dǎo)致消息壓根就沒有發(fā)送到broker端;
  • kafka生產(chǎn)端發(fā)送消息超出大小限制,broker端接到以后沒法進(jìn)行存儲;

1.2 解決方案:

  • 1、生產(chǎn)者調(diào)用異步回調(diào)消息。偽代碼如下: producer.send(msg,callback);
  • 2、生產(chǎn)者增加消息確認(rèn)機(jī)制,設(shè)置生產(chǎn)者參數(shù):acks = all。partition的leader副本接收到消息,等待所有的follower副本都同步到了消息之后,才認(rèn)為本次生產(chǎn)者發(fā)送消息成功了;
  • 3、生產(chǎn)者設(shè)置重試次數(shù)。比如:retries>=3,增加重試次數(shù)以保證消息的不丟失;
  • 4、定義本地消息日志表,定時(shí)任務(wù)掃描這個(gè)表自動補(bǔ)償,做好監(jiān)控告警。
  • 5、后臺提供一個(gè)補(bǔ)償消息的工具,可以手工補(bǔ)償。

2、Broker

2.1 丟失原因:

kafka broker集群接收到數(shù)據(jù)后會將數(shù)據(jù)進(jìn)行持久化存儲到磁盤,消息都是先寫入到頁緩存,然后由操作系統(tǒng)負(fù)責(zé)具體的刷盤任務(wù)或者使用fsync強(qiáng)制刷盤,如果此時(shí)Broker宕機(jī),且選舉一個(gè)落后leader副本很多的follower副本成為新的leader副本,那么落后的消息數(shù)據(jù)就會丟失。

2.2 解決方案:

  • 1、同步刷盤(不太建議)。同步刷盤可以提高消息的可靠性,防止由于機(jī)器掉電等異常造成處于頁緩存而沒有及時(shí)寫入磁盤的消息丟失。但是會嚴(yán)重影響性能。

  • 2、利用partition的多副本機(jī)制(建議)

    unclean.leader.election.enable=false:數(shù)據(jù)丟失太多的副本不能選舉為leader副本,防止落后太多的消息數(shù)據(jù)而引起丟失;

    replication.factor >= 3:消息分區(qū)的副本個(gè)數(shù),這個(gè)值建議設(shè)為>=3;

    min.insync.replicas >1:消息寫入多少副本才算已提交,這個(gè)值必須大于1,這個(gè)是要求一個(gè)leader 至少感知到有至少一個(gè) follower還跟自己保持聯(lián)系;(replication.factor>min.insync.replicas 這樣消息才能保存成功)

3、消費(fèi)者

3.1 丟失原因:

  • 1、消費(fèi)者配置了offset自動提交參數(shù)。enable.auto.commit=true。
  • 2、消息者收到了消息,進(jìn)行了自動提交offset,kafka以為消費(fèi)者已經(jīng)消費(fèi)了這個(gè)消息,但其實(shí)剛準(zhǔn)備處理這個(gè)消息,還沒處理完成,消費(fèi)者自己掛了,此時(shí)這條消息就會丟失。
  • 3、多線程消費(fèi)消息,某個(gè)線程處理消息出現(xiàn)異常,還是會出現(xiàn)自動提交offset。

3.2 解決方案:

  • 1、消費(fèi)者關(guān)閉自動提交,采用手動提交offset。通過配置參數(shù):enable.auto.commit=false,關(guān)閉自動提交offset,在完成業(yè)務(wù)邏輯以后手動提交offset,這樣就不會丟失數(shù)據(jù)。
  • 2、消費(fèi)者多線程處理業(yè)務(wù)邏輯,等待所有線程處理完成以后,才手工提交offset。
  • 3、消費(fèi)者消費(fèi)消息需要進(jìn)行冪等處理,防止重復(fù)消費(fèi)。

4、假如kafka掛了,如何保證高可用?

消息生產(chǎn)服務(wù)A 所有消息入庫,然后通過 定時(shí)任務(wù)job 直接調(diào)用 消息消費(fèi)服務(wù)B。文章來源地址http://www.zghlxwxcb.cn/news/detail-636663.html

到了這里,關(guān)于Kafka 如何保證消息不丟失的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 一文徹底搞懂Kafka如何保證消息不丟失

    一文徹底搞懂Kafka如何保證消息不丟失

    Producer:生產(chǎn)者,發(fā)送消息的一方。生產(chǎn)者負(fù)責(zé)創(chuàng)建消息,然后將其發(fā)送到 Kafka。 Consumer:消費(fèi)者,接受消息的一方。消費(fèi)者連接到 Kafka 上并接收消息,進(jìn)而進(jìn)行相應(yīng)的業(yè)務(wù)邏輯處理。 Consumer Group:將多個(gè)消費(fèi)者組成一個(gè)消費(fèi)者組,一個(gè)消費(fèi)者組可以包含一個(gè)或多個(gè)消費(fèi)者。

    2024年04月22日
    瀏覽(30)
  • 分布式消息服務(wù)kafka

    分布式消息服務(wù)kafka

    什么是消息中間件? 消息中間件是分布式系統(tǒng)中重要的組件,本質(zhì)就是一個(gè)具有接收消息、存儲消息、分發(fā)消息的隊(duì)列,應(yīng)用程序通過讀寫隊(duì)列消息來通信。 例如:在淘寶購物時(shí),訂單系統(tǒng)處理完訂單后,把訂單消息發(fā)送到消息中間件中,由消息中間件將訂單消息分發(fā)到下

    2024年02月01日
    瀏覽(23)
  • 分布式 - 消息隊(duì)列Kafka:Kafka生產(chǎn)者發(fā)送消息的方式

    分布式 - 消息隊(duì)列Kafka:Kafka生產(chǎn)者發(fā)送消息的方式

    不管是把Kafka作為消息隊(duì)列、消息總線還是數(shù)據(jù)存儲平臺,總是需要一個(gè)可以往Kafka寫入數(shù)據(jù)的生產(chǎn)者、一個(gè)可以從Kafka讀取數(shù)據(jù)的消費(fèi)者,或者一個(gè)兼具兩種角色的應(yīng)用程序。 Kafka 生產(chǎn)者是指使用 Apache Kafka 消息系統(tǒng)的應(yīng)用程序,它們負(fù)責(zé)將消息發(fā)送到 Kafka 集群中的一個(gè)或多

    2024年02月13日
    瀏覽(29)
  • 【分布式技術(shù)】消息隊(duì)列Kafka

    【分布式技術(shù)】消息隊(duì)列Kafka

    目錄 一、Kafka概述 二、消息隊(duì)列Kafka的好處 三、消息隊(duì)列Kafka的兩種模式 四、Kafka 1、Kafka 定義 2、Kafka 簡介 3、Kafka 的特性 五、Kafka的系統(tǒng)架構(gòu) 六、實(shí)操部署Kafka集群 ?步驟一:在每一個(gè)zookeeper節(jié)點(diǎn)上完成kafka部署 ?編輯 步驟二:傳給其他節(jié)點(diǎn) 步驟三:啟動3個(gè)節(jié)點(diǎn) kafka管理

    2024年01月23日
    瀏覽(27)
  • 分布式 - 消息隊(duì)列Kafka:Kafka 消費(fèi)者消息消費(fèi)與參數(shù)配置

    分布式 - 消息隊(duì)列Kafka:Kafka 消費(fèi)者消息消費(fèi)與參數(shù)配置

    01. 創(chuàng)建消費(fèi)者 在讀取消息之前,需要先創(chuàng)建一個(gè)KafkaConsumer對象。創(chuàng)建KafkaConsumer對象與創(chuàng)建KafkaProducer對象非常相似——把想要傳給消費(fèi)者的屬性放在Properties對象里。 為簡單起見,這里只提供4個(gè)必要的屬性:bootstrap.servers、key.deserializer 和 value.deserializer。 ① bootstrap.servers 指

    2024年02月12日
    瀏覽(27)
  • 分布式 - 消息隊(duì)列Kafka:Kafka生產(chǎn)者發(fā)送消息的分區(qū)策略

    分布式 - 消息隊(duì)列Kafka:Kafka生產(chǎn)者發(fā)送消息的分區(qū)策略

    01. Kafka 分區(qū)的作用 分區(qū)的作用就是提供負(fù)載均衡的能力,或者說對數(shù)據(jù)進(jìn)行分區(qū)的主要原因,就是為了實(shí)現(xiàn)系統(tǒng)的高伸縮性。不同的分區(qū)能夠被放置到不同節(jié)點(diǎn)的機(jī)器上,而數(shù)據(jù)的讀寫操作也都是針對分區(qū)這個(gè)粒度而進(jìn)行的,這樣每個(gè)節(jié)點(diǎn)的機(jī)器都能獨(dú)立地執(zhí)行各自分區(qū)的

    2024年02月13日
    瀏覽(32)
  • 分布式 - 消息隊(duì)列Kafka:Kafka生產(chǎn)者發(fā)送消息的3種方式

    分布式 - 消息隊(duì)列Kafka:Kafka生產(chǎn)者發(fā)送消息的3種方式

    不管是把Kafka作為消息隊(duì)列、消息總線還是數(shù)據(jù)存儲平臺,總是需要一個(gè)可以往Kafka寫入數(shù)據(jù)的生產(chǎn)者、一個(gè)可以從Kafka讀取數(shù)據(jù)的消費(fèi)者,或者一個(gè)兼具兩種角色的應(yīng)用程序。 Kafka 生產(chǎn)者是指使用 Apache Kafka 消息系統(tǒng)的應(yīng)用程序,它們負(fù)責(zé)將消息發(fā)送到 Kafka 集群中的一個(gè)或多

    2024年02月13日
    瀏覽(29)
  • 分布式 - 消息隊(duì)列Kafka:Kafka 消費(fèi)者的消費(fèi)位移

    分布式 - 消息隊(duì)列Kafka:Kafka 消費(fèi)者的消費(fèi)位移

    01. Kafka 分區(qū)位移 對于Kafka中的分區(qū)而言,它的每條消息都有唯一的offset,用來表示消息在分區(qū)中對應(yīng)的位置。偏移量從0開始,每個(gè)新消息的偏移量比前一個(gè)消息的偏移量大1。 每條消息在分區(qū)中的位置信息由一個(gè)叫位移(Offset)的數(shù)據(jù)來表征。分區(qū)位移總是從 0 開始,假設(shè)一

    2024年02月12日
    瀏覽(27)
  • 分布式 - 消息隊(duì)列Kafka:Kafka消費(fèi)者的分區(qū)分配策略

    分布式 - 消息隊(duì)列Kafka:Kafka消費(fèi)者的分區(qū)分配策略

    Kafka 消費(fèi)者負(fù)載均衡策略? Kafka 消費(fèi)者分區(qū)分配策略? 1. 環(huán)境準(zhǔn)備 創(chuàng)建主題 test 有5個(gè)分區(qū),準(zhǔn)備 3 個(gè)消費(fèi)者并進(jìn)行消費(fèi),觀察消費(fèi)分配情況。然后再停止其中一個(gè)消費(fèi)者,再次觀察消費(fèi)分配情況。 ① 創(chuàng)建主題 test,該主題有5個(gè)分區(qū),2個(gè)副本: ② 創(chuàng)建3個(gè)消費(fèi)者CustomConsu

    2024年02月13日
    瀏覽(31)
  • 分布式 - 消息隊(duì)列Kafka:Kafka生產(chǎn)者架構(gòu)和配置參數(shù)

    分布式 - 消息隊(duì)列Kafka:Kafka生產(chǎn)者架構(gòu)和配置參數(shù)

    生產(chǎn)者發(fā)送消息流程參考圖1: 先從創(chuàng)建一個(gè)ProducerRecord對象開始,其中需要包含目標(biāo)主題和要發(fā)送的內(nèi)容。另外,還可以指定鍵、分區(qū)、時(shí)間戳或標(biāo)頭。在發(fā)送ProducerRecord對象時(shí),生產(chǎn)者需要先把鍵和值對象序列化成字節(jié)數(shù)組,這樣才能在網(wǎng)絡(luò)上傳輸。 接下來,如果沒有顯式

    2024年02月13日
    瀏覽(28)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包