Kafka分级存储概念(一)

news2024/11/25 4:20:19

Kafka分级存储及实现原理

概述

Kafka社区在3.6版本引入了一个十分重要的特性: 分级存储,本系列文章主要旨在介绍Kafka分级存储的设计理念、设计细节以及具体的代码实现

在这里插入图片描述

背景:为什么要有分级存储?

场景
作为一款具有高吞吐及高性能的消息中间件,Kafka被广泛应用在大数据、日志采集及业务消息领域. 在日常Kafka的运维过程中,往往会遇到以下一些场景:
1、某些消息需要保留特定时间,以便业务需要以及意外恢复场景,这会带来额外的磁盘占用
2、大部分场景下,消息都可以进行及时消费;业务高峰时,会存在一定的消息积压
3、随着业务的拓展,磁盘的容量需要进行扩容;但在业务有变动时,可能又不需要这么大的磁盘空间,需要进行缩容
问题
以上业务场景暴露了当前Kafka设计上的一些缺陷:缺乏弹性能力.
1、对于业务消息来说,大部分消息其实属于“热”消息,也就是所谓的可以被及时消费的消息,而部分“冷”消息则需要等待一定老化时间之后才能够从磁盘上清除;
2、对于磁盘扩容场景,对于增加磁盘容量,运维人员可以通过操作系统LVM实现,对磁盘缩容而言则往往没有这么容易,可能需要额外的业务方案实现
3、对于Kafka的横向扩容来说,新增加的节点上并不会有原有节点上的分区,运维人员往往需要1)增加分区个数 2) 进行分区平衡(reassign)进行分区均衡;而分区平衡则会产生Broker之间的副本同步,抢占节点之间的带宽,往往建议在业务低峰时期进行

思考

所以有没有一种办法,可以将冷热数据分离开来,同时尽量减少在集群扩缩容过程中的数据迁移呢?答案就是分级存储

分级存储是什么

在这里插入图片描述
一句话来说,Kafka分级存储就是将“热”数据存储在访问速度快的本地磁盘(ESSD/SSD),将“冷”数据放在远端(如aws s3), 这样做带来的好处是:
1、对于大部分场景下,正常的生产、消费速率不受影响
2、数据存储在相对成本较低的远端存储上,节约了成本
3、不用关心磁盘大小,冷数据会被自动卸载到远端,本地磁盘使用量有固定上限
4、集群横向拓展时,只需要迁移少量热数据
5、磁盘使用可以弹性伸缩,因为往往远端存储是按量付费的,可以实现存储Serverless化

冷数据真的“冷”吗?

前面提到,我们希望将“冷”数据上传到远端,那么我们如何定义“冷”数据呢,又有什么必要存储这些数据呢,以下是几个场景:

  1. 新消费应用加入
  2. 应用重启
  3. 应用处理时出现异常,可能需要从头开始消费
  4. 全量数据处理
  5. 查询/分析
  6. 故障恢复

  7. 在这里插入图片描述
    TIPS:其实对于Kafka来说,大部分使用场景下都是实时的生产与消费,而且可以充分利用到操作系统页缓存来提高性能,在有大量消息积压场景下,存在的页缓存不命中而冷读磁盘的场景会导致Kafka的性能下降,同时容易产生磁盘IOPS等现象,不利于集群的性能,因此日常的使用中,在非业务高峰时,需要尽量避免产生大量消息积压

小结

本篇文章主要讲述了Kafka分级存储的背景及其解决的业务问题,后续将会继续围绕分级存储具体设计与实现分析其具体实现逻辑和细节供大家参考讨论

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

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

相关文章

28 - 算术运算指令

---- 整理自B站UP主 踌躇月光 的视频 文章目录 1. ALU改进2. CPU 整体电路3. 程序4. 实验结果 1. ALU改进 此前的 ALU: 改进后的 ALU: 2. CPU 整体电路 3. 程序 # pin.pyMSR 1 MAR 2 MDR 3 RAM 4 IR 5 DST 6 SRC 7 A 8 B 9 C 10 D 11 DI 1…

Unity 性能优化之图片优化(八)

提示:仅供参考,有误之处,麻烦大佬指出,不胜感激! 文章目录 前言一、可以提前和美术商量的事1.避免内存浪费(UI图片,不是贴图)2.提升图片性能 二、图片优化1.图片Max Size修改&#x…

OpenCampass评测实战 作业

按照如下教程文档操作即可:https://aicarrier.feishu.cn/wiki/NxUOwnLuvi0clykyzj7ccSHPndb

基于52单片机的AS608指纹密码锁电路原理图+源程序+PCB实物制作

目录 1、前言 2、实物图 3、PCB图 4、原理图 5、程序 资料下载地址:基于52单片机的AS608指纹密码锁电路原理图源程序PCB实物制作 1、前言 这是一个基于AS608STC89C52单片机的指纹识别和键盘密码锁。 里面包括程序,原理图,pcb图和实…

拉普拉斯丨独家冠名2024年度ATPV技术分论坛,助力产业科技持续创新

为了进一步促进行业技术交流,推进光伏行业发展及标准建设的进程,针对高效电池,领跑组件,新产品认证及应用等技术专题及国内外光伏标准的最新进程,由中国绿色供应链联盟光伏专委会(ECOPV)指导的2…

Linux安装Python3.9环境

大家好,今天给大家分享一下在Linux系统中安装Python3环境,Linux系统中自带的Python2尽量不要删除,删除后可能会导致系统出现问题。 关于Linux常用命令,可以参考:作为测试人员的Linux常用命令 一、下载Python3安装包 …

笔试强训Day17 字符串 前缀和

BC45 小乐乐改数字 题目链接&#xff1a;小乐乐改数字_牛客题霸_牛客网 (nowcoder.com) 思路&#xff1a; 水题一道 注意前导0. AC code&#xff1a; #include <iostream> #include<string> using namespace std; string a,b; int main() {cin >> a;for…

【Linux系列】tail查询使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Springboot集成Mybatispuls操作mysql数据库-03

MyBatis-Plus&#xff08;简称MP&#xff09;是一个MyBatis的增强工具&#xff0c;在MyBatis的基础上只做增强而不做改变。它支持所有MyBatis原生的特性&#xff0c;因此引入MyBatis-Plus不会对现有的MyBatis构架产生任何影响。MyBatis-Plus旨在简化开发、提高效率&#xff0c;…

yum常用命令与lrzsz的在线安装

yum命令 yum&#xff08; Yellow dog Updater, Modified&#xff09;是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。 基于 RPM 包管理&#xff0c;能够从指定的服务器自动下载 RPM 包并且安装&#xff0c;可以自动处理依赖性关系&#xff0c;并且一次安装…

python数据分析所需要的语法基础

Python语言基础——语法基础 前言语法基础变量标识符数据类型输入与输出代码缩进与注释 总结 前言 对于学过C语言的人来说&#xff0c;python其实很简单。学过一种语言&#xff0c;学习另一种语言&#xff0c;很显然的能感觉到&#xff0c;语言大体上都是相通的。当然&#xf…

nacos开启登录开关启动报错“Unable to start embedded Tomcat”

nacos 版本&#xff1a;2.3.2 2.2.2版本之前的Nacos默认控制台&#xff0c;无论服务端是否开启鉴权&#xff0c;都会存在一个登录页&#xff1b;在之后的版本关闭了默认登录页面&#xff0c;无需登录直接进入控制台操作。在这里我们可以在官网可以看到相关介绍 而我现在所用的…

代码随想录-算法训练营day31【贪心算法01:理论基础、分发饼干、摆动序列、最大子序和】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第八章 贪心算法 part01● 理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和 贪心算法其实就是没有什么规律可言&#xff0c;所以大家了解贪心算法 就了解它没有规律的本质就够了。 不用花心思去研究其…

软件测试与管理-白盒测试-基本路径测试法

知识点&#xff1a; 1.原理 是在程序控制流图的基础上&#xff0c;通过分析控制构造的环路复杂性&#xff0c;导出基本可执行路径的集合&#xff0c;然后根据可执行路径进行测试用例设计的方法。此方法设计出的测试用例需保证被测程序的每个可执行语句至少执行一次。 2.步骤 &a…

Netty 实现dubbo rpc

一、RPC 的基本介绍 RPC (Remote Procedure Call) 远程过程调用&#xff0c;是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序&#xff0c;而程序员无需额外的为这个交互编程。也就是说可以达到两个或者多个应用程序部署在不同的服务器上&…

基于BP神经网络的QPSK解调算法matlab性能仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ........................................................................ for ij 1:leng…

神经网络中的归一化

我们今天介绍一下神经网络中的归一化方法~ 之前学到的机器学习中的归一化是将数据缩放到特定范围内&#xff0c;以消除不同特征之间的量纲和取值范围差异。通过将原始数据缩放到一个特定的范围内&#xff0c;比如[0,1]或者[-1,1]&#xff0c;来消除不同特征之间的量纲和取值范围…

弹性云服务器给用户带来了哪些便利

什么是弹性云服务器&#xff1f; 弹性云服务器&#xff08;ECS&#xff0c;Elastic Cloud Server&#xff09;简单地说&#xff0c;是指运行在云计算环境中的虚拟服务器。弹性云服务器可以说是虚拟专用服务器(VPS)&#xff0c;但VPS却不能说是云服务器。这是因为两者有着本质的…

软件游戏丢失XINPUT1_4.dll文件的多种解决方法分享

当玩家在尝试启动某款游戏时&#xff0c;遇到了系统提示“游戏找不到XINPUT1_4.dll”&#xff0c;这个错误通常发生在玩家尝试启动游戏时&#xff0c;游戏无法找到所需的XINPUT1_4.dll文件&#xff0c;呆滞无法正常启动运行。但是幸运的是&#xff0c;有一些简单的修复方法可以…

【typescript测试 - Jest 配置与使用】

安装 npm install --save-dev types/jestnpm install --save-dev ts-jest配置 tsconfig.json {"compilerOptions": {"types": ["jest"]} }jest.config.js module.exports {preset: ts-jest,testEnvironment: node, };使用 // add.js funct…