Kafka分级存储概念(一)

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.mzph.cn/news/834935.shtml

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

相关文章

pytorch中统计一个数在tensor中出现了几次

pytorch中统计一个数在tensor中出现了几次 在PyTorch中,可以使用torch.eq()函数配合torch.sum()来统计某个数值在Tensor中出现的次数。torch.eq()函数会返回一个新的Tensor,其中对于每个元素来说,如果和指定的数值相等,则该位置为…

本安防爆手机在电力行业中的应用

在电力行业这一充满挑战与风险的领域中,安全始终是最为首要的考量。电力巡检、维修等作业往往涉及易燃、易爆环境,这就要求工作人员配备能够在极端条件下保障通讯和作业安全的专业设备。防爆手机应运而生,以其独特的设计和卓越的性能&#xf…

百度AMIS前端低代码框架本地部署运行记录

1、下载使用 1.1 前置环境: 软件: 1、visual studio code 官网下载特别慢,本次使用的下载地址是:http://www.downcc.com/soft/230273.html 2、nodejs 下载教程参考:https://www.cnblogs.com/18sui/p/17162016.html …

PyTorch生成随机张量的函数

1、torch.rand() 该函数用于生成一个张量,其中的元素是在区间[0, 1)内均匀分布的随机数 import torchrandom_tensor torch.rand(2, 3) random_like_input torch.rand_like(random_tensor) 2、torch.randn() 该函数生成一个张量,其中的元素是从标准…

js 在一个字符串中查找 从某个字符开始到另一个字符的子字符串

1、在这个例子中,findSubstringBetween函数接收一个字符串str,以及要查找的起始字符startChar和终止字符endChar; 2、函数首先找到startChar的位置,并从该位置加上startChar的长度获取开始子字符串的起始索引; 3、然后从这个起始索引开始&…

Go 多模块工作区处理一个go项目下有多个module(即多个go.mod)的情况

背景 在现在微服务盛行的年代,一个人会维护多个代码仓库,很多的时候是多个仓库进行同时开发,也就是在当前项目下有多个目录,每个目录对应一个微服务,每个微服务都有一个go.mod文件。那么我在其中一个目录下要怎么导入…

L6201PSTR DMOS全桥驱动器

L6201PSTR是采用Multipower-BCD技术实现的电机控制应用的全桥式驱动器,该技术将隔离的DMOS功率晶体管与CMOS和双极电路结合在同一芯片上。通过使用混合技术,可以优化逻辑电路和功率级,以达到最佳性能。DMOS输出晶体管可以在高达42V的电源电压…

如何使用jmeter进行接口测试?jmeter接口测试流程是怎样的

前言 我们学习自动化测试都会用到不同的工具,那么今天笔者呢,想给大家聊聊Jmeter接口测试流程详解,废话不多说直接进入正题。 一、jmeter简介 Jmeter是由Apache公司开发的java开源项目,所以想要使用它必须基于java环境才可以&am…

小阳的戒S笔记

文章目录 写在前面2024年5月8日21:12:172024年5月9日21:48:242024年5月10日08:04:141、记录昨夜之身体变化2、自身制定之计划1.此亦乃要事,特定问了度娘与GPT,找时间还得咨询专业医师。2.通过跑步宣泄,同时锻炼身体3.我不会有压力&#xff0c…

【intro】Graph Isomorphism Network(GIN)

论文 https://arxiv.org/pdf/1810.00826 abstract 图神经网络(gnn)是一种有效的图表示学习框架。gnn采用邻域聚合方案,通过递归聚合和变换相邻节点的表示向量来计算节点的表示向量。已经提出了许多GNN变体,并在节点和图分类任务上取得了最先进的结果。…

【RPC】Dubbo接口测试

关于rpc,推荐看看这篇 : 既然有HTTP协议,为什么还要有RPC 一、Dubbo 是一款alibaba开源的高性能服务框架: 分布式服务框架高性能和透明化的RPC远程服务调用方案SOA服务治理方案 二、Dubbo基础架构 三、 Dubbo接口测试 1、jme…

升级WSL Ubuntu内核从5.10到5.15

【未成功】可以使用$ uname -r察看当前版本,如果不是最新的版本可以简单通过$ sudo apt update 和$ sudo apt upgrade来升级内核。但是,它可能不会立即更新到最新的内核版本。可以手动安装最新内核,通过$ sudo add-apt-repository ppa:cappelikan/ppa 添加Ubuntu内核仓库,然…

什么是弹性云服务器?

在当今云计算领域,弹性云服务器成为了一种备受关注的服务器架构。弹性云服务器是一种基于云计算技术的服务器架构,具有自动伸缩、高可用性、灵活性和高性能等特点。相比传统的物理服务器或虚拟服务器,弹性云服务器具有更多优势和特点。 1、弹…

等保测评技术方案(四)

(七)测评内容 1.三级测评项: 安全类 安全控制点 测评项数 安全通用要求 安全物理环境 物理位置选择 2 物理访问控制 1 防盗窃和防破坏 3 防雷击 2 防火 3 防水和防潮 3 防静电 2 温湿度控制 1 电力供应 3 电磁防护 …

Java转Kotlin

Kotlin 是一种静态编程语言 2011JetBrains开始开发Kotlin,用于多平台应用(能脱离虚拟机,直接编译成可以在win,mac,linux运行的二进制代码) 2017获得谷歌官方支持 语法简洁(减少了大量的样板代码,语法糖&…

Pytorch张量广播

Pytorch 中的主要的数据结构包括标量、向量、矩阵、张量,同时支持数据之间的运算。在 Pytorch 中有一个张量广播的概念,就是要把小的放大,最后在一起做计算,并不是所有的张量都可以计算,规则如下 首先比较维度&#x…

一、写给Android开发者之harmony入门

一、创建新项目 对比 android-studio:ability类似安卓activity ability分为两种类型(Stage模型) UIAbility和Extensionability(提供系统服务和后台任务) 启动模式 1、 singleton启动模式:单例 2、 multiton启动模式&#xff1…

25 | MySQL是怎么保证高可用的?

主备延迟 “同步延迟”。与数据同步有关的时间点主要包括以下三个: 主库 A 执行完成一个事务,写入 binlog,我们把这个时刻记为 T1;之后传给备库 B,我们把备库 B 接收完这个 binlog 的时刻记为 T2;备库 B 执行完成这个事务&#…

Pycharm 执行pytest时,会遇见某些case Empty suite

我这边的情况是有些case就是执行不了,百度了很多,有说设置选pytest的,有命名规范的,都没有成功。后面问了同事之后才发现,pytest 的框架,pytest.ini 执行的时候,加了个标签,主动把某…

在uniapp中如何安装axios并解决跨域问题

目录 1、安装axios 2、导入 3、使用(发请求) 2.解决跨域问题 1.为什么要解决跨域问题? 2.前端如何解决跨域问题? 1、安装axios npm install axios 2、导入 在main.js中导入使用 import axios from axios; // 创建一个名…