Kafka 的日志清理策略:delete 和 compact

Kafka delete 日志清理策略(日志刪除)

  • 原理:按照一定保留策略,直接刪除不符合條件的日志分段。Kafka 把 topic 的一個 partition 大文件分成多個小文件段,通過這種方式,能方便地定期清除或刪除已消費完的文件,以減少磁盤占用 。
  • 保留策略
    • 按時間刪除:設定一個時間閾值,刪除修改時間在該時間之前的日志。比如設置log.retention.hours = 1?,就表示只保存 1 小時內的日志,超出 1 小時的日志分段會被刪除。
    • 按大小刪除:指定一個數據大小閾值,當日志數據超過這個大小時,執行刪除操作,保留最后的指定大小數據。例如log.retention.bytes = 1073741824?(即 1GB ),表示日志數據超過 1GB 時,會刪除舊的消息。
  • 相關參數
    • log.cleanup.policy = delete?:啟用刪除策略。
    • log.retention.check.interval.ms?:專門的日志刪除任務周期性檢測的時間間隔,默認 300000ms(5 分鐘 ),即每隔 5 分鐘檢查一次是否有符合刪除條件的日志分段 。
    • log.retention.hours?:按時間清理時,指定日志保留的小時數 。
    • log.retention.bytes?:按大小清理時,指定日志保留的字節數 。需注意log.retention.byteslog.retention.hours任意一個達到要求,都會執行刪除操作,且會被 topic 創建時的指定參數覆蓋 。

Kafka compact 日志清理策略(日志壓縮)

  • 原理:針對每個消息的 key 進行整合,對于有相同 key 的不同 value 值,只保留最后一個版本 。就像在一個記錄集合里,相同標識(key )的記錄,只留下最新的那條 。比如一個 key 對應的值先后為 “值 1”“值 2”“值 3” ,經過日志壓縮后,只會保留 “值 3” 。清理重復 key 后,一些 segment 文件大小會變小,Kafka 會將小文件再合并成大的 segment 文件 。
  • 特殊處理:當某個 key 的最新版本消息沒有內容(value 為 null )時,這個 key 將被刪除,這類消息被稱為 “墓碑消息(tombstone )” 。墓碑消息的存放時間和 broker 的配置log.cleaner.delete.retention.ms有關,默認值是 24 小時 。在執行日志清理時,會刪除到期的墓碑消息 。
  • 清理流程
    • 對于每個 Kafka partition 的日志,以 segment 為單位,分為已清理和未清理部分,未清理部分又細分為可清理和不可清理的。
    • 每個日志目錄下有cleaner - offset - checkpoint文件記錄清理進度。
    • 找出可清理的 segment(active segment 不能清理,根據min.compaction.lag.ms配置判斷其他 segment 是否能清理 ,即判斷 segment 最后一條記錄的插入時間是否超過最小保留時間 )。
    • 構建 SkimpyOffsetMap 對象(key 與 offset 的映射哈希表 ),遍歷可清理 segment 的每條日志,將 key 和 offset 存入其中。
    • 再遍歷已清理和可清理部分的 segment 日志,根據 SkimpyOffsetMap 判斷是否保留日志 。
    • 執行清理操作,將可清理部分的 segment 變為已清理的,同時更新 cleaner checkpoint 記錄的 offset 。
  • 相關參數
    • log.cleaner.enable = true?:開啟日志壓縮功能。
    • log.cleanup.policy = compact?:啟用日志壓縮策略 。
    • min.compaction.lag.ms?:設置日志段中消息可被壓縮的最小時間間隔 ,確保消息存留一定時間后才可能被清理 。
    • log.cleaner.delete.retention.ms?:墓碑消息的保留時長 。

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

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

相關文章

Go語言中常量的命名規則詳解

1. 常量的基本命名規則 1.1. 命名格式 1. 使用const關鍵字聲明; 2. 命名格式:const 常量名 [類型] 值; 3. 類型可以省略,由編譯器推斷; 1.2. 命名風格 大小寫規則: 1. 首字母大寫:導出常…

22、web場景-web開發簡介

22、web場景-web開發簡介 Web開發是指創建和維護在互聯網上運行的網站和應用程序的過程。它涉及多個技術領域,包括前端開發、后端開發和數據庫管理,共同實現網站的功能和用戶體驗。 ### 一、Web開發的基本概念 #### 1. **Web應用程序** - **狹義上**&am…

Structured Query Language(SQL)它到底是什么?

Structured Query Language(SQL) 的中文意思是 “結構化查詢語言”,它是一種專門用于管理和操作關系型數據庫的標準化編程語言。以下是其核心含義和用途的總結: 1. 核心功能 定義數據:創建、修改數據庫結構&#xff08…

ubuntu22.04上運行opentcs6.4版本

1、下載github上的源碼: openTCS - Downloads 2、安裝java21 我的版本是:java --version java 21.0.6 2025-01-21 LTS Java(TM) SE Runtime Environment (build 21.0.68-LTS-188) Java HotSpot(TM) 64-Bit Server VM (build 21.0.68-LTS-188, mixed mo…

游戲引擎學習第307天:排序組可視化

簡短談談直播編程的一些好處。 上次結束后,很多人都指出代碼中存在一個拼寫錯誤,因此這次我們一開始就知道有一個 bug 等待修復,省去了調試尋找錯誤的時間。 今天的任務就是修復這個已知 bug,然后繼續排查其他潛在的問題。如果短…

基于PyTorch的殘差網絡圖像分類實現指南

以下是一份超過6000字的詳細技術文檔,介紹如何在Python環境下使用PyTorch框架實現ResNet進行圖像分類任務,并部署在服務器環境運行。內容包含完整代碼實現、原理分析和工程實踐細節。 基于PyTorch的殘差網絡圖像分類實現指南 目錄 殘差網絡理論基礎服務…

(27)運動目標檢測 之 分類(如YOLO) 數據集自動劃分

(27)運動目標檢測 之 分類(如YOLO) 數據集自動劃分 目標檢測場景下有時也會遇到分類需求,比如車牌識別、顏色識別等等本文以手寫數字數據集為例,講述如何將 0~9 10個類別的數據集自動劃分,支持調整劃分比例手寫數字數據集及Python實現代碼可在此直接下載:https://downloa…

Ubuntu安裝1Panel可視化管理服務器及青龍面板及其依賴安裝教程

Ubuntu安裝1Panel可視化管理服務器及青龍面板及其依賴安裝教程 前言一、準備工作二、操作步驟1、1Panel安裝2、青龍面板安裝3、青龍面板依賴安裝 前言 1Panel 是一款現代化的開源 Linux 服務器管理面板,專注于簡化服務器運維操作,提供可視化界面管理 Web…

DataGridView中拖放帶有圖片的Excel,實現數據批量導入

1、帶有DataGridView的窗體,界面如下 2、編寫DataGridView支持拖放的代碼 Private Sub DataGridView1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles DataGridView1.DragEnterIf e.Data.GetDataPresent(DataFormats.FileDrop) ThenDim file…

創新點!貝葉斯優化、CNN與LSTM結合,實現更準預測、更快效率、更高性能!

能源與環境領域的時空數據預測面臨特征解析與參數調優雙重挑戰。CNN-LSTM成為突破口:CNN提取空間特征,LSTM捕捉時序依賴,實現時空數據的深度建模。但混合模型超參數(如卷積核數、LSTM層數)調優復雜,傳統方法…

獲取點擊點所在區域所能容納最大連續空白矩形面積及頂點坐標需求分析及相關解決方案

近日拿到一個需求,通過分析思考以及查詢資料得以解決,趁著不忙記錄一下: 需求: 頁面上放一個圖片控件,載入圖片之后,點擊圖片任何一個白色空間,找出點擊點所在區域所能容納的最大連續空白矩形…

vue-cli 構建打包優化(JeecgBoot-Vue2 配置優化篇)

項目:jeecgboot-Vue2 在項目二次開發后,在本人電腦打包時間為3分35秒左右 webpack5默認優化: Tree Shaking(搖樹優化):刪除未使用的代碼base64 內聯: 小于 8KB 的資源(圖片等&…

科學養生:解鎖現代健康生活新方式

在現代社會,熬夜加班、外賣快餐、久坐不動成了很多人的生活常態,由此引發的亞健康問題日益凸顯。其實,遵循科學的養生方式,無需復雜操作,從日常細節調整,就能顯著提升健康水平。? 飲食上,把控…

PostGIS使用小結

文章目錄 PostGIS使用小結簡介安裝配合postgres使用的操作1.python安裝gdal PostGIS使用小結 簡介 PostGIS 是 PostgreSQL 數據庫的地理空間數據擴展,通過為 PostgreSQL數據庫增加地理空間數據類型、索引、函數和操作符,使其成為功能強大的空間數據庫&…

NNG和DDS

NNG (Nanomsg Next Generation) 和 DDS (Data Distribution Service) 是兩種不同的通信協議,各自在不同場景下具有其優勢。下面我將對這兩種技術進行詳細解釋,并通過具體的例子來說明它們如何應用在實際場景中。 1. NNG (Nanomsg Next Generation) NNG簡…

自制操作系統day7(獲取按鍵編碼、FIFO緩沖區、鼠標、鍵盤控制器(Keyboard Controller, KBC)、PS/2協議)

day7 獲取按鍵編碼(hiarib04a) void inthandler21(int *esp) {struct BOOTINFO *binfo (struct BOOTINFO *) ADR_BOOTINFO; // 獲取系統啟動信息結構體指針unsigned char data, s[4]; // data: 鍵盤數據緩存&#x…

Javase 基礎加強 —— 09 IO流第二彈

本系列為筆者學習Javase的課堂筆記,視頻資源為B站黑馬程序員出品的《黑馬程序員JavaAI智能輔助編程全套視頻教程,java零基礎入門到大牛一套通關》,章節分布參考視頻教程,為同樣學習Javase系列課程的同學們提供參考。 01 緩沖字節…

服務器操作系統調優內核參數(方便查詢)

fs.aio-max-nr1048576 #此參數限制并發未完成的異步請求數目,應該設置避免I/O子系統故障 fs.file-max1048575 #該參數決定了系統中所允許的文件句柄最大數目,文件句柄設置代表linux系統中可以打開的文件的數量 fs.inotify.max_user_watches8192000 #表…

[Windows] 格式工廠 FormatFactory v5.20.便攜版 ——多功能媒體文件轉換工具

想要輕松搞定各類媒體文件格式轉換?這款 Windows 平臺的格式工廠 FormatFactory v5.20 便攜版 正是你的不二之選!無需安裝,即開即用,為你帶來高效便捷的文件處理體驗。 全能格式轉換,滿足多元需求 軟件功能覆蓋視頻、…

[AI]主流大模型、ChatGPTDeepseek、國內免費大模型API服務推薦(支持LangChain.js集成)

主流大模型特色對比表 模型核心優勢適用場景局限性DeepSeek- 數學/代碼能力卓越(GSM8K準確率82.3%)1- 開源生態完善(支持醫療/金融領域)7- 成本極低(API價格僅為ChatGPT的2%-3%)5科研輔助、代碼開發、數據…