Kafka-文件存储机制

Kafka概述

在这里插入图片描述

Kafka-文件存储机制

1. 分区:

  • Kafka中的每个主题(topic)都可以分成一个或多个分区。

  • Topic是逻辑上的概念,而Partition是物理上的概念。

  • 分区是消息的基本单元,每个分区都是一个有序的log日志文件
    在这里插入图片描述

  • Producer生产的数据会被不断追加到该log文件末端,消息按顺序追加到分区的末尾,这使得Kafka能够保证在单个分区内的消息是有序的。

  • 分区的数量通常与集群中的消费者数量相匹配,这样可以更好地实现负载均衡和并行处理

2. Segment文件和日志压缩:

  • 为了减少磁盘使用和提高性能,Kafka支持日志的压缩。

  • 当一个日志段达到一定的大小或时间阈值时,Kafka会将其进行压缩。压缩后的日志段被称为段文件(Segment file)。

  • 压缩可以通过不同的算法进行,比如Gzip或Snappy。压缩后的段文件将占用更少的磁盘空间,并且在传输时能够更有效地利用网络带宽。

3. 日志段:

  • 每个分区由一个或多个日志段组成。
  • 日志段是Kafka的基本存储单元,它们是不可变的,一旦创建就不能被修改。
  • 当一个日志段被填满后,Kafka会创建一个新的日志段来接收新的消息。
  • 旧的日志段将被保留一段时间(根据配置),然后根据策略进行删除。这种分段的方式使得磁盘的使用更加高效,并且简化了日志的管理和维护。

4. 索引文件:

  • 每个日志段都有一个对应的索引文件。

  • 索引文件存储了消息偏移量(offset)和物理位置之间的映射关系,这样Kafka可以快速地定位到消息的位置。
    在这里插入图片描述

  • 索引文件通常以稀疏索引的形式存在,这意味着它只包含一些关键位置的索引条目,而不是每个消息都有一个索引条目。

在这里插入图片描述在这里插入图片描述

  • 这种设计在保证了快速查找的同时,也减少了索引文件的大小。

5. 日志清理和分段剔除:

Kafka中默认的日志保存时间为7天,可以通过调整如下参数修改保存时间。
	log.retention.hours,最低优先级小时,默认7天。
	log.retention.minutes,分钟。
	log.retention.ms,最高优先级毫秒。
	log.retention.check.interval.ms,负责设置检查周期,默认5分钟。

那么日志一旦超过了设置的时间,怎么处理呢?
Kafka中提供的日志清理策略有delete和compact两种。

1)delete日志删除:将过期数据删除
在这里插入图片描述

  • Kafka支持通过日志清理(Log Compaction)来保留最近的消息,并删除旧的消息。这样可以确保只保留最新的状态,而过时的消息可以被删除。

在这里插入图片描述

  • Kafka支持分段剔除,即当一个日志段不再需要时,可以被删除或归档到其他存储介质中,以释放磁盘空间。

2)compact日志压缩

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/13653.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络配置全攻略:解读/etc/network/interfaces文件的精髓

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Linux网络配置全攻略:解读/etc/network/interfaces文件的精髓 前言文件结构与基本概念配置网络接口的常用参数高级网络配置技巧实用工具与调试技巧实战案例与最佳实践 前言 在我们的日常生…

【数据库基础】基本认识数据库--入门引导

文章目录 什么是数据库?主流数据库基本使用安装MySQL连接服务器服务器、数据库、表关系使用案例数据逻辑存储 MySQL架构SQL语句分类什么叫存储引擎 什么是数据库? 数据库是指在磁盘和内存中存储特定结构组织的数据。数据库通常用于存储于某个系统、组织或…

整理好了!2024年最常见 20 道 Redis面试题(三)

上一篇地址:整理好了!2024年最常见 20 道 Redis面试题(二)-CSDN博客 五、Redis 的持久化机制有哪些? Redis 是一个内存中的数据结构存储系统,它支持多种类型的数据结构,如字符串、哈希、列表、…

Kylin系列

Kylin是一个开源的分布式分析引擎,主要用于在Hadoop/Spark等大数据平台上提供高性能的SQL查询接口和OLAP(联机分析处理)能力,以支持超大规模数据的查询和分析。以下是关于Kylin系列的详细解释: 基本概念与原理&#x…

基于springboot实现的校园博客系统

开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven…

Mac SourceTree配置ssh git仓库

一、准备条件 1、Mac系统电脑 2、安装好SourceTree 3、获取ssh git仓库地址 二、配置步骤 1、打开终端命令行 ssh -t rsa -C "xxx""xxx"代表注册git仓库时,使用的用户名,可以是字符串也可以是邮箱地址。 如果遇到输入密码&#xf…

c语言如何向文件读取字符串

如何在c语言中,读取文件,不用一个字符一个字符的读取,而是整个读取字符串 这里就用到fgets语句 fgets(str,n,fp) 它的功能是从fp指向的文件里读取一个长度为n-1的字符串,并一次性存入到str字符数组里,如果成功就返回…

Java Memorandum

Java Memorandum 1 定义安全的集合2 collection集合用迭代器删除元素时避免并发修改异常3 异常捕获4 RequestBody和RequestParam和Parameter区别4.1 RequestBody4.2 RequestParam4.3 Parameter 1 定义安全的集合 void old() {ArrayList<Apple> apples new ArrayList<…

无线网络安全技术基础

无线网络安全技术基础 无线网络安全风险和隐患 随着无线网络技术广泛应用,其安全性越来越引起关注.无线网络的安全主要有访问控制和数据加密,访问控制保证机密数据只能由授权用户访问,而数据加密则要求发送的数据只能被授权用户所接受和使用。 无线网络在数据传输时以微波进…

解决:git每次push or pull都要输入用户名和密码

到git工作目录执行以下命令 git config --global credential.helper store 然后再重新执行一次git pull,这次它还是提示你输入账号和密码&#xff0c;这次之后&#xff0c;它就会记录下账号和密码。以后再pull 或者push的时候&#xff0c;再也不用输入账户和密码了&#xff0…

数据访问层设计_6.连接对象管理设计

1.数据库连接管理 在基于JDBC的数据库应用开发中&#xff0c;数据库连接的管理是一个难点&#xff0c;因为它是决定该应用性能的一个重要因素。 对于共享资源&#xff0c;有一个很著名的设计模式——资源池。该模式正是为了解决资源频繁分配、释放所造成的问题。把该模式应用到…

Centos7.9安装卸载Docker

文章目录 1、官网安装1.1、卸载旧版本Docker1.2、通过rpm仓库安装1.2.1、设置仓库1.2.2、安装Docker Engine1.2.3、启动Docker1.2.4、验证安装 1.3、通过rpm软件包安装1.4、通过便捷脚本安装 2、yum安装2.1、安装docker-ce以及客户端2.2、启动docker2.3、配置镜像加速 3、卸载D…

Dubbo的发展历程与项目背景

项目背景 Dubbo起源于阿里巴巴内部&#xff0c;最初是为了解决日益增长的分布式服务调用需求而诞生的。在2011年前后&#xff0c;随着阿里巴巴集团业务的快速扩张&#xff0c;系统规模不断增大&#xff0c;传统的单体架构难以满足高并发、高可用的服务需求。因此&#xff0c;阿…

Linux安装刻录软件

在工作场景经常使用光盘和刻录机&#xff0c;在windows系统下有nero软件&#xff0c;在linux下有k3b,但是原始的k3b只能一次刻录&#xff0c;十分浪费光盘&#xff0c;这里我们使用经优麒麟优化过的刻录软件&#xff0c;实现多次追加刻录。 进入优麒麟软件仓库&#xff0c;需要…

vue3 watch里面可以await 么

在 Vue 3 中&#xff0c;watch 选项中的 handler 函数不支持 await 关键字。watch 用于监听数据的变化&#xff0c;并在变化时执行相应的回调函数。await 关键字只能在异步函数中使用&#xff0c;而 watch 中的 handler 函数默认不是异步函数。 如果你需要在 watch 中处理异步…

WorkManager使用技巧及各Android版本适配

WorkManager使用技巧及各Android版本适配 WorkManager是Android Jetpack中用于处理异步任务的库&#xff0c;它能够保证任务即使在应用关闭或设备重启后也能被执行。以下是WorkManager的使用技巧和代码示例&#xff0c;以及不同Android版本的适配方法。 1. 初始化WorkManager…

js前端---超级简单的版本号排序

问题&#xff1a; 封装一个函数进行版本号排序处理 思路&#xff1a; 1.使用数组自带sort方法&#xff1b; 2.需要将sort里面的只以点分割成数组&#xff1b; 3.判断数组长度&#xff0c;进行排序&#xff1b; 4.如果数组长度相同&#xff0c;在进行循环&#xff0c;两个数组…

项目管理—需求管理规程(软件研发过程标准,管理标准,标书技术编写,资质评审,安全管理体系,项目交付,实施运维,各类建设方案)

软件资料清单列表部分文档清单&#xff1a;工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产品需求规格说明书&#xff0c;需求调研计划&#xff0c;用户需求调查单&#xff0c;用户需求说明书&#xff0c;概要设计说明书&#xff0c;技术解…

30.包名的修改和新建后端模块

权限和第三方登录确实令人头疼,我们来学一点简单一点的。 另外,如果各位有属于自己的域名和ICP/IP备案,布置一个作业,自行实现第三方QQ登录。 我们所说的包名修改,是一次性修改ruoyi的全部包名,因为发现很多人有这样的需求,下载别人的代码,想要改成自己公司的包名,结…

C++ 时间处理-从字符串中解析日期时间

1. 关键词2. 问题3. 解决思路4. 代码实现5. 测试代码6. 运行结果7. 源码地址 1. 关键词 C 时间处理 从字符串中解析日期时间 跨平台 2. 问题 C如何将字符串的日期时间解析成对应的时间戳&#xff1f; 3. 解决思路 可以用正则表达式将字符串解析成 struct tm 类型的对象。…