那曲檬骨新材料有限公司

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

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

3天內不再提示

kafka支持哪些消息交付語義?

馬哥Linux運維 ? 來源:稀土掘金技術社區 ? 2023-12-22 11:27 ? 次閱讀

1 背景

在讀完kafka官方文檔,kafka設計里的消息交付語義一章后,給我的第一印象是內容很抽象,于是草擬和總結了給個副標題,并把相關內容進行了歸類;有些生澀的句子,盡量用大白話和舉例進行說明,并加入了總結。

消息交付語義的級別有哪些?

消息交付,即消息在生產端,broker端,消費者端的傳遞保證。

最多一次——消息可能會丟失,但永遠不會重新傳送。
至少一次——消息永遠不會丟失,但可以重新傳送。
恰好一次——這就是人們真正想要的,每條消息都傳遞一次且僅一次。

kafka 支持哪些消息交付語義?

根據英文文檔,進行了總結

fd77e27a-9ff2-11ee-8b88-92fbcf53809c.jpg

###################以下為個人觀點###################

kafka 真的支持了 最少一次 的交付語義嗎?

我的回答是:不同的條件下,可能支持了,也可能沒支持。

kafka支持最少一次交付的前提條件

生產端:
kafka生產端在發送消息時,如果遇到底層網絡問題,可能會導致消息發送給了broker端,也有可能網絡閃斷或者丟包,發送的消息可能丟了;但最后的結果是,生產端會根據指定的參數retries,進行一定次數的重試。以此來保證生產端,做到消息至少傳遞一次。即發送失敗了,就重試吧。

所以生產端 支持"最少一次"的前提條件 有如下:

生產端的應用在重試的時候,沒有重啟,或者宕機

網絡,或者broker端,需要在生產端重試次數用完之前恢復

消費者端:
消費者端保證消息至少被消費一次的建議是:在消費者端消費完消息后,在手工提交offset;偽代碼如下:


while(true){ 
consumer.poll(); 
XXX 
consumer.commit();
}

具體原因和說明見:juejin.cn/post/729328…

broker端:
broker端,要實現此交付,主要是保證消息不丟。kafka 數據是具備高可靠的,但不代表你的kafka集群就具備了此功能。需要有如下配置:

第一:生產端參數ack 設置為all

第二:在broker端 配置min.insync.replicas參數設置至少為2

第三:在broker端配置replicator.factor參數至少3

第四:在broker端配置 unclean.leader.election.enable 參數建議設置為false

具體原因和說明見:juejin.cn/post/729328…

不支持的情況下,如何去保證消息交付最少一次的保證

消費者端和broker端,可以根據配置和對應代碼編寫順序進行解決;但生產端在進行重試時,還需依賴生產端應用的穩定性,底層網絡和broker端的可用性;

生產端之所以需要這三個條件的支持,還是生產端沒有把待發送消息進行持久化,畢竟待發送的消息是保存在jvm內存中的,jvm重啟或者OOM或者宕機了,內存中的消息也就丟了;
如果把待發送的消息進行了持久化,即使應用宕機,網絡失敗,broker不可用,但在經過應用重啟,網絡和broker恢復,也可以保證待發送消息不丟失,做到消息的至少一次交付。

審核編輯:湯梓紅

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

    關注

    8

    文章

    3055

    瀏覽量

    74325
  • 網絡
    +關注

    關注

    14

    文章

    7599

    瀏覽量

    89242
  • kafka
    +關注

    關注

    0

    文章

    52

    瀏覽量

    5243

原文標題:kafka的消息交付語義 真的支持了最少一次嗎?

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

收藏 人收藏

    評論

    相關推薦

    kafka設計原理的深度探討

    在非常廉價的商用機器上也能做到單機支持每秒100K條消息的傳輸 支持Kafka Server間的消息分區,及分布式消費,同時保證每個partition內的消息順序傳輸 同時支持離線數據
    的頭像 發表于 10-08 07:50 ?2062次閱讀
    <b class='flag-5'>kafka</b>設計原理的深度探討

    Kafka特性和應用場景

    Kafka簡介及部署
    發表于 06-17 09:31

    淺析kafka

    kafka常見問題
    發表于 09-29 10:09

    基于發布與訂閱的消息系統Kafka

    Kafka權威指南》——初識 Kafka
    發表于 03-05 13:46

    Kafka基礎入門文檔

    kafka系統入門教程(原理、配置、集群搭建、Java應用、Kafka-manager)
    發表于 03-12 07:22

    Kafka集群環境的搭建

    1、環境版本版本:kafka2.11,zookeeper3.4注意:這里zookeeper3.4也是基于集群模式部署。2、解壓重命名tar -zxvf
    發表于 01-05 17:55

    阿里云消息隊列Kafka商業化:支持消息無縫遷移到云上

    Kafka徹底解決了開源產品穩定性不足的痛點,可用性達99.9%,數據可靠性99.999999%,并且支持消息無縫遷移到云上。7月25日,阿里云宣布正式推出消息隊列Kafka,全面融合開源生態。在
    發表于 07-27 10:49 ?317次閱讀
    阿里云消息隊列<b class='flag-5'>Kafka</b>商業化:<b class='flag-5'>支持</b>消息無縫遷移到云上

    如何將物聯網數據從設備連接到Kafka集群?

    在與HiveMQ客戶的對話中,一些操作集群具有數百萬臺設備和非常高的消息吞吐量,我們看到需要為Kafka創建MQTT代理擴展。我們的客戶希望從MQTT和Kafka協議的本地實現中受益,因為這兩個協議都有所有的交付保證。因此,我們
    發表于 07-28 11:53 ?1452次閱讀

    Kafka的概念及Kafka的宕機

    問題要從一次Kafka的宕機開始說起。 筆者所在的是一家金融科技公司,但公司內部并沒有采用在金融支付領域更為流行的 RabbitMQ ,而是采用了設計之初就為日志處理而生的 Kafka ,所以我一直
    的頭像 發表于 08-27 11:21 ?2152次閱讀
    <b class='flag-5'>Kafka</b>的概念及<b class='flag-5'>Kafka</b>的宕機

    Kafka 的簡介

    ,即使對TB級以上數據也能保證常數時間的訪問性能 高吞吐率。即使在非常廉價的機器上也能做到單機支持每秒100K條消息的傳輸 支持Kafka Server間的消息分區,及分布式消費,同時保證每個
    的頭像 發表于 07-03 11:10 ?669次閱讀
    <b class='flag-5'>Kafka</b> 的簡介

    物通博聯5G-kafka工業網關實現kafka協議對接到云平臺

    Kafka協議是一種基于TCP層的網絡協議,用于在分布式消息傳遞系統Apache Kafka中發送和接收消息。Kafka協議定義了客戶端和服務器之間的通信方式和數據格式,允許客戶端發送消息到K
    的頭像 發表于 07-11 10:44 ?546次閱讀

    Spring Kafka的各種用法

    Kafka 是不支持消息重試的。但是 Spring Kafka 2.7+ 封裝了 Retry Topic 這個功能。 1. @RetryableTopic 使用注解的方式啟用 Retry Topic,在
    的頭像 發表于 09-25 17:04 ?1070次閱讀

    Kafka架構技術:Kafka的架構和客戶端API設計

    Kafka 給自己的定位是事件流平臺(event stream platform)。因此在消息隊列中經常使用的 "消息"一詞,在 Kafka 中被稱為 "事件"。
    的頭像 發表于 10-10 15:41 ?2444次閱讀
    <b class='flag-5'>Kafka</b>架構技術:<b class='flag-5'>Kafka</b>的架構和客戶端API設計

    kafka相關命令詳解

    kafka常用命令詳解
    的頭像 發表于 10-20 11:34 ?999次閱讀

    kafka基本原理詳解

    今天浩道跟大家分享一篇關于kafka相關原理的硬核干貨,可以說即使你沒有接觸過kafka,也可以秒懂,一起看看!
    的頭像 發表于 01-03 09:57 ?946次閱讀
    <b class='flag-5'>kafka</b>基本原理詳解
    皇冠投注网址| 百家乐gamble| 伟易博百家乐官网娱乐城 | 南京百家乐在哪| 百家乐投注方向| 养狗对做生意风水好吗| 乐九百家乐现金网| 百家乐全自动分析软件| 网上百家乐骗钱| 威尼斯人娱乐城在线赌博网站| 大发888合营商| bet365体育在线15| 皇冠平台| 百家乐官网推锅| 百家乐官网纸牌赌博| 新澳门百家乐官网的玩法技巧和规则 | 百家乐官网赌博娱乐城大全| 百家乐官网大赌城| 莫斯科百家乐官网的玩法技巧和规则| 24山可以正针吗| 尊龙百家乐娱乐平台| 大发888提款怎么提| 赌场里的美少年| 安阳百家乐官网赌博| 牌九百家乐官网的玩法技巧和规则 | 威尼斯人娱乐城不打烊| 德州扑克 技巧| 尚义县| 百家乐官网软件稳赚| 太阳城百家乐群| 乐享百家乐的玩法技巧和规则| 德州扑克策略| 百家乐官网如何看面| 百家乐官网套路| 百家乐云顶| 德州扑克比赛| 赌场百家乐官网规则| 为什么百家乐官网玩家越来越多选择网上百家乐官网 | 在线百家乐| 合肥太阳城莱迪广场| 邯郸百家乐官网园真钱区|