Kafka中的acks機制——一次由錯誤資料引發的源碼學習

前言

這次的學習過程來歷有點奇怪。我本來是學習kafka過程中正常的學到了這個acks機制,但是發現很多地方寫的都不太明白。因此決定還是自己來看一下源碼。

具體來說:請看搜索結果(Google引擎)
這個是搜索“Kafka的ack”所得到的結果。
在這里插入圖片描述

第一條:是直接轉載的其他地方。并且只是說了0 1 -1,至于這個是什么,看完還是懵逼。

在這里插入圖片描述

第二條:看起來清晰了許多,感覺總結的也很精辟…

在這里插入圖片描述

第三條是完全復制的第二條。

第四條是黑馬的網站,其中給到了一個舉例…

在這里插入圖片描述

問題出在了第五條,來自火山引擎的介紹頁:
本覺得是最權威的,結果是不確保真實性的ai答案…而且其中出現了與其他地方描述不一致的:這里說acks是出現在消費者那邊的。
在這里插入圖片描述

甚至于,如果搜“kafka的ack機制”,那么——

在這里插入圖片描述

acks機制源碼

其實這個源碼也沒多少,畢竟只是發送機制中的一個小的參數。在kafka、sender部分中。
https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/clients/producer/internals/Sender.java

其中,關于acks的定義如下:

    /* the number of acknowledgements to request from the server */private final short acks;

在代碼的644行部分,是acks == 0的情況。

    // this is the acks = 0 case, just complete all requestsfor (ProducerBatch batch : batches.values()) {completeBatch(batch, new ProduceResponse.PartitionResponse(Errors.NONE), correlationId, now, null);}

在918行部分,是acks != 0 的情況,表示期望獲取服務端響應。

   ClientRequest clientRequest = client.newClientRequest(nodeId, requestBuilder, now, acks != 0,requestTimeoutMs, callback);

acks機制功能

很顯然,就是網上那樣…
acks機制producer的消息發送確認機制,用于防止消息的丟失。

具體參考此文:https://blog.csdn.net/qq_32445015/article/details/123006365

后記

搜索kafka的ackkafka的ack機制,搜出來的結果都是垃圾。。。
但如果搜索kafka的ack機制源碼,還是能搜到不少寶貝。

在這里插入圖片描述

更加深入透徹的理解了——學習要以源碼為準,這句話。
還有就說,發現文章是ai生成的,那就可以直接潤了。看你的ai文,那我何不自己去問gpt呢。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/711649.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711649.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711649.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Excel中使用ROW函數自動更新行號或編號

操作步驟: 1、在編號“1”的單元格輸入公式“ROW()-1”; 2、在上一步填好公式的單元格基礎上下拉填充,即可批量得到編號,如果刪掉其中的一行或幾行,編號會自動進行更新。

數組與list的轉化分析

一、相互轉換的方法 1. 數組轉List ,使用JDK中java.util.Arrays工具類的asList方法。 2. List轉數組,使用List的toArray方法。無參toArray方法返回 Object數組,傳入初始化長度的數組對象,返回該對象數組。 二、分析修改內容的影響…

在 Rust 中實現 TCP : 1. 聯通內核與用戶空間的橋梁

內核-用戶空間鴻溝 構建自己的 TCP棧是一項極具挑戰的任務。通常,當用戶空間應用程序需要互聯網連接時,它們會調用操作系統內核提供的高級 API。這些 API 幫助應用程序 連接網絡創建、發送和接收數據,從而消除了直接處理原始數據包的復雜性。…

【教3妹學編程-算法題】標記所有下標的最早秒數 II

3妹:2哥2哥,你有沒有看到上海女老師出軌男學生的瓜啊。 2哥 : 看到 了,真的是太毀三觀了! 3妹:是啊, 老師本是教書育人的職業,明確規定不能和學生談戀愛啊,更何況是出軌。 2哥 : 是啊…

shell 免交互ecxept樣例

語法 expect [選項] [ -c cmds ] [ [ -[f|b] ] cmdfile ] [ args ] 選項 -c:從命令行執行expect腳本,默認expect是交互地執行的 示例:expect -c expect "\n" {send "pressed enter\n"} -d:輸出調試信息 …

【Qt學習】QTextEdit 與 QComboBox 的 屬性與實例(槽函數的使用、讀取本機內容到控件)

文章目錄 1. QTextEdit2.1 介紹2.2 實例使用 - 槽函數的使用 2. QComboBox2.1 介紹2.2 實例使用案例1:設置下拉框項目組件的方式案例2:讀取本機文件內容 到QComboBox 1. QTextEdit 2.1 介紹 我們可以查閱官方文檔,對QTextEdit 有更深的了解&…

源碼安裝nginx保姆級教程

一.目錄存放 1./usr/lib/syste,md/system/:每個服務最主要的啟動腳本設定 2. /run/systemd/system/:系統執行過程中所產生的服務腳本,這些腳本的優先序要比 /usr/lib/systemd/system/ 高! 3./etc/systemd/system/:管…

【java 基礎】閑話 ClassLoader 和 SPI (一)

文章目錄 引子雙親委派模型你真的明白了嗎? 雙親委派“不夠用了”SPI機制 其他瑣碎 引子 有別于 java 提供的 IO 模塊,java 中的classloader主要是用來加載類的,當然除了加載類,也可以加載資源文件。 那么首先我們會問一個問題&…

java基礎 - 14 Java的Deque之Deque、BlockingDeque、LinkedBlockingDeque、ArrayDeque

Java 中的 Deque(雙端隊列)是一種具有隊列和棧特性的數據結構,它允許在兩端進行插入和刪除操作。Deque 接口是 Java 集合框架中的一部分,它定義了雙端隊列的基本操作。 BlockingDeque 接口: BlockingDeque 接口是 Deq…

docker搭建git服務器

1、docker搭建git服務器 總體思路:服務端通過docker搭建git服務器,客戶端創建git的賬戶及公鑰密鑰; 1)服務端# 創建容器 # --privileged 獲得完整的root權限 # /usr/sbin/init 啟動容器執行的第一個命令 以便可以使用systemctl命…

2024年FPGA可以進嗎

2024年,IC設計FPGA行業仍有可能是一個極具吸引力和活力的行業,主要原因包括: 1. 技術發展趨勢:隨著5G、人工智能、物聯網、自動駕駛、云計算等高新技術的快速發展和廣泛應用,對集成電路尤其是高性能、低功耗、定制化芯…

【UE 材質】制作加載圖案(2)

在上一篇(【UE 材質】制作加載圖案)基礎上繼續實現如下效果的加載圖案 效果 步驟 1. 復制一份上一篇制作的材質并打開 2. 添加“Floor”節點向下取整 除相同的平鋪數 此時的效果如下 刪除如下節點 通過“Ceil”向上取整,參數“Tiling”默認…

教師招聘和事業編d類有什么區別嗎

每年都有大批懷揣教育夢想的年輕人,站在職業的十字路口,對未來充滿期許與疑惑。他們中的許多人都會面臨這樣一個問題:教師招聘和事業編D類,到底有什么區別?今天,就讓我來為你揭開這兩者的神秘面紗。 別被這…

【大數據】Flink SQL 語法篇(五):Regular Join、Interval Join

《Flink SQL 語法篇》系列,共包含以下 10 篇文章: Flink SQL 語法篇(一):CREATEFlink SQL 語法篇(二):WITH、SELECT & WHERE、SELECT DISTINCTFlink SQL 語法篇(三&…

ubuntu系統下大數據服務器磁盤調優測試記錄

一、背景 在kvm虛擬機ubuntu操作系統大數據平臺測試的過程中,遭遇了磁盤I/O性能的瓶頸,因有cpu綁核操作,故有做隔核操作驗證是否是綁核影響的磁盤I/O,后又對磁盤進行透傳以及掛內存盤等操作; 二、磁盤介紹 2.1 磁盤…

『NLP學習筆記』圖解 BERT、ELMo和GPT(NLP如何破解遷移學習)

圖解 BERT、ELMo和GPT(NLP如何破解遷移學習) 文章目錄 一. 前言二. 示例-句子分類三. 模型架構3.1. 模型輸入3.2. 模型輸出四. BERT VS卷積神經網絡五. 詞嵌入新時代5.1. 簡要回顧詞嵌入Word Embedding5.2. ELMo: 上下文語境很重要5.2.1. ELMo的秘密是什么?5.3. ULM-FiT:將遷…

藍橋杯Python B組練習——斐波那契數列

一、題目 定義 斐波那契數列(Fibonacci sequence),又稱黃金分割數列,因數學家萊昂納多斐波那契(Leonardo Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數…

Linux x86平臺獲取sys_call_table

文章目錄 前言一、根據call *sys_call_table來獲取二、使用dump_stack三、根據MSR_LSTAR寄存器四、使用sys_close參考資料 前言 Linux 3.10.0 – x86_64 最簡單獲取sys_call_table符號的方法: # cat /proc/kallsyms | grep sys_call_table ffffffff816beee0 R sy…

隨想錄算法訓練營第四十七天|198.打家劫舍、213.打家劫舍II、337.打家劫舍III

198.打家劫舍 public class Solution {public int Rob(int[] nums) {if(nums.Length0){return 0;}if(nums.Length1){return nums[0];}int[] dpnew int[nums.Length1];dp[0]nums[0];dp[1]Math.Max(nums[0],nums[1]);for(int i2;i<nums.Length;i){dp[i]Math.Max(dp[i-2]nums[…

什么是 HTTPS 證書?作用是什么?

HTTPS 證書&#xff0c;即超文本傳輸安全協議證書&#xff08;Hypertext Transfer Protocol Secure&#xff09;&#xff0c;是網站安全的關鍵組成部分。它通過 SSL/TLS 加密協議&#xff0c;確保用戶與網站之間的數據傳輸是加密和安全的。 什么是 HTTPS 證書&#xff1f; HT…