極簡單系列 kafka 生產 重複問題

2021-10-08 16:20:23 字數 1035 閱讀 2326

重複的原因 acks = -1 的情況下,資料傳送到 leader 後 ,部分 isr 的副本同步,leader 此時掛掉。比如 follower1 和 follower2 都有可能變成新的 leader, producer 端會得到返回異常,producer 端會重新傳送資料,資料可能會重複 另外, 在高階消費者中,offset 採用自動提交的方式, 自動提交時,假設 1s 提交一次 offset 的更新,設當前 offset = 10,當消費者消費了 0.5s 的資料,offset 移動了 15,由於提交間隔為 1s,因此這一offset 的更新並不會被提交,這時候我們寫的消費者掛掉,重啟後,消費者會去 zookeeper 上獲取讀取位置,獲取到的 offset 仍為10,它就會重複消費. 解決辦法使用低階消費者.低階api 重複解決方案 訊息用唯一id標示 生產者(ack=all 代表至少成功傳送一次)|消費者(offset手動提交) 落表 or 業務邏輯處理(redis/mango)判斷其是否已消費

但是它也有侷限性

在初始化期間,kafka會給生產者生成乙個唯一的id稱為producer id或pid。 pid和序列號與訊息**在一起,然後傳送給broker。由於序列號從零開始並且單調遞增,因此,僅當訊息的序列號比該pid / topicpartition對中最後提交的訊息正好大1時,broker才會接受該訊息。如果不是這種情況,則broker認定是生產者重新傳送該訊息。

綜上:

極簡單系列 kafka 基本原理

簡單來說 這就是今天的全部內容了。生產者 生產訊息到 集群,集群儲存訊息,消費者消費 具體要談裡邊的原理 需要先了解幾個概念 topic可以理解為乙個佇列,生產者和消費者面向的都是乙個 topic 分割槽。這是乙個物理概念。乙個 topic 可以分為多個 partition,每個 partition...

簡單系統許可權

對於不是很複雜,拓展性不是很強的系統。做許可權控制的思路是 讓使用者屬於不同的使用者組 角色 然後根據角色來制定那些選單可見或者不可見。當使用者登入後,載入主頁面的時候,根據使用者的角色來判斷選單和許可權的關係。所以需要定義乙個角色表role,選單表menu和乙個角色和選單許可權的關係表role r...

HTML表單系列總結

1什麼是表單元素?表單元素的工作原理?表單的作用是從客戶端收集的資料交給伺服器進行處理 表單元素 訪問乙個包含表單頁面的資料,輸入資料,提交表單,然後瀏覽器再將表單的資料進行打包傳遞給伺服器,伺服器接收資料php檔案處理 2都有哪些表單元素 form 表單元素 文字域 text 單選框 radio ...