MinIO 批处理框架添加了对过期时间的支持

您现在可以使用 MinIO 批处理框架执行 S3 删除操作,以通过单个 API 请求删除大量对象。借助 MinIO 批处理框架,可以快速轻松地在 MinIO 部署中执行重复或批量操作,例如批量复制和批量密钥轮换。MinIO 批处理框架处理所有手动工作,包括管理重试和报告进度。

Batch Expiry 根据指定的条件提供高性能的过期和永久删除。这是一个分布式服务器端删除操作,用于并行执行批量删除。

MinIO 批处理框架无需用户干预,可以安排在非工作时间或系统利用率低时运行。Object Lambda 通知在批处理完成后发出。批处理作业是使用 YAML 定义的,然后定期运行。

添加批量删除功能的理由

信息生命周期管理 (ILM) 旨在管理对象,以便在其生命周期中有效地存储这些对象。这包括基于一组筛选器(条件)的过期对象和分层对象。对于到期,ILM 在与 3 个月到 1 年的到期计划一起使用时最有效。但是,当到期时间非常小时,就会发生反模式。

ILM 在作为后台进程运行的扫描程序上运行。扫描程序会根据负载自动上下限制,因此它不会干扰典型的 S3 API 调用,如 PUT 和 GET。扫描程序针对时间敏感的操作(如响应应用程序)进行了优化。

Batch Expiry 执行并行删除操作,保证快速高效地完成。使用条件格式选择对象,以筛选对象和元数据标记。

批量到期入门

下载并安装 MinIO。记录访问密钥和密钥。

下载并安装 MinIO 客户端。(可选)创建别名以简化对 MinIO Server 的访问。

创建存储桶并启用版本控制。

mc mb myminio/test
mc version enable myminio/test

将一些文件复制到您刚刚创建的存储桶中。文件的内容并不重要,我们只是在学习如何使用批量删除。

创建并定义批量删除(将“test”替换为存储桶的名称):

mc batch generate myminio/test expire

这将创建一个 expiry.yaml 文件,然后您可以编辑该文件以配置复制作业。

此文件(如下所示)包含存储桶名称、前缀名称、筛选条件/标志、通知和重试规则配置。您可以设置规则,按类型、名称(包括通配符)、期限、大小等使对象过期,请参阅下面的输出。

expire:apiVersion: v1bucket: mybucket # Bucket where this job will expire matching objects fromprefix: myprefix # (Optional) Prefix under which this job will expire objects matching the rules below.rules:- type: object  # objects with zero ore more older versionsname: NAME # match object names that satisfy the wildcard expression.olderThan: 70h # match objects older than this valuecreatedBefore: "2006-01-02T15:04:05.00Z" # match objects created before "date"tags:- key: namevalue: pick* # match objects with tag 'name', all values starting with 'pick'metadata:- key: content-typevalue: image/* # match objects with 'content-type', all values starting with 'image/'size:lessThan: 10MiB # match objects with size less than this value (e.g. 10MiB)greaterThan: 1MiB # match objects with size greater than this value (e.g. 1MiB)purge:# retainVersions: 0 # (default) delete all versions of the object. This option is the fastest.# retainVersions: 5 # keep the latest 5 versions of the object.- type: deleted # objects with delete marker as their latest versionname: NAME # match object names that satisfy the wildcard expression.olderThan: 10h # match objects older than this value (e.g. 7d10h31s)createdBefore: "2006-01-02T15:04:05.00Z" # match objects created before "date"purge:# retainVersions: 0 # (default) delete all versions of the object. This option is the fastest.# retainVersions: 5 # keep the latest 5 versions of the object including delete markers.notify:endpoint: https://notify.endpoint # notification endpoint to receive job completion statustoken: Bearer xxxxx # optional authentication token for the notification endpointretry:attempts: 10 # number of retries for the job before giving updelay: 500ms # least amount of delay between each retry

如您所见,文件中列出的参数支持各种用例。将 YAML 从终端复制到文本编辑器并对其进行自定义,然后在以下步骤中启动它。每个规则都定义过期条件和清除操作。注释使文件一目了然。

例如,要删除存储桶中超过一周的所有对象,请执行以下操作:

...
rules:- type: object  # objects with zero ore more older versionsname: NAME # match object names that satisfy the wildcard expression.olderThan: 7d # match objects older than this value
...       	

请注意,尚未为本教程配置通知终结点。配置后,当 Batch Expiry 完成时,通知将在该终结点上可用。

要使所有以字母 C 开头的对象过期,请执行以下操作:

...
rules:- type: object  # objects with zero ore more older versionsname: C*.* # match object names that satisfy the wildcard expression.olderThan: 7d # match objects older than this value
...       	

可以同时创建和运行多个 Batch 作业;没有预定义的限制。

使用以下命令启动 Batch Expiry:

mc batch start myminio/ ./expiry.yaml
Successfully started 'expire' job `TEu3LMDvdAhAFZKQ3QtSHr:-1` on '2023-12-28 22:50:05.540096697 +0000 UTC'

您将看到一条消息,指出过期作业已成功启动以及时间。

您还可以检查批处理作业的状态(我运行的作业快速完成):

mc batch status myminio/ TEu3LMDvdAhAFZKQ3QtSHr:-1
mc: Unable to find an active job, attempting to list from previously run jobs
✔ ✔ ✔
JobType:        expire
Objects:        0
FailedObjects:  0
CurrObjName:

Batch Expiry 完成后,您可以列出存储桶内容以验证它是否成功。

mc ls myminio/test

批处理到期

我们将继续构建具有 Batch Expiry 的 MinIO Batch Framework。批处理是自动化操作的强大方法。自动化是规模化的关键推动因素。客户对 Batch Expiry、Batch Replication 和 Batch Key-Rotate 的反馈告诉我们,每个人都喜欢自动化,并希望实现更多自动化。

立即下载 MinIO,了解 MinIO Batch Framework 的实际应用。 有问题吗?

请联系我们。

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

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

相关文章

【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 运行环境搭建

【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 概述-CSDN博客 【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 运行环境搭建-CSDN博客 【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 运行模式-CSDN博客 1、模板虚拟机环境准备 1.1、 hadoop100 虚拟机配置要求如下 &…

小兔鲜儿 uniapp - 项目打包

目录 微信小程序端​ 核心步骤​ 步骤图示​ 条件编译​ 条件编译语法​ 打包为 H5 端​ 核心步骤​ 路由基础路径​ 打包为 APP 端​ 微信小程序端​ 把当前 uni-app 项目打包成微信小程序端,并发布上线。 核心步骤​ 运行打包命令 pnpm build:mp-weix…

Day13- 二叉树part02

一、二叉树的层序遍历 题目一:102. 二叉树的层序遍历 102. 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 实现二叉树的层序遍历通常使用队列&#xf…

Java 如何实现微信支付功能代码示例

微信支付是由中国的腾讯公司推出的一种移动支付方式。它允许用户通过在微信应用中绑定银行卡或其他支付方式来进行交易,包括在线购物、转账、付款码支付等。微信支付的特点包括便捷、安全、快速和全面,使用户可以随时随地完成交易。用户可以通过扫描商家…

openGauss学习笔记-187 openGauss 数据库运维-常见故障定位手段

文章目录 openGauss学习笔记-187 openGauss 数据库运维-常见故障定位手段187.1 操作系统故障定位手段187.2 网络故障定位手段187.3 磁盘故障定位手段187.4 数据库故障定位手段 openGauss学习笔记-187 openGauss 数据库运维-常见故障定位手段 187.1 操作系统故障定位手段 查询…

Vue2/Vue3-插槽(全)

一、插槽的定义 vue实现了一套内容分发的Api&#xff0c;将<slot>元素作为承载内容分发 二、插槽的注意事项 父组件模板的内容只能访问父组件的作用域&#xff0c;子组件的模板只能访问子组件的作用域。 也就是说插槽的内容可以访问父组件的数据作用域&#xff0c;因为插…

【Element】el-form和el-table嵌套实现表格编辑并提交表单校验

一、背景 页面需要用到表格采集用户数据&#xff0c;提交时进行表单校验&#xff1b;即表格中嵌套着表单&#xff0c;保存时进行表单校验 二、功能实现 2.1、el-form和el-table嵌套说明 ① :model"formData" 给表单绑定数据&#xff0c;formData是表单的数据对象 …

springboot、spring-kafka、kafka-client的版本对应关系

在使用springboot集成kafka的时候需要注意springboot版本、引用的依赖spring-kafka版本和kafka中间件版本的对应关系&#xff0c;否则可能会因为版本不兼容导致出现错误。 1、含义说明&#xff08;摘自官网&#xff09; Spring Boot&#xff1a;是springboot的版本。Spring fo…

设计模式——最全梳理,最好理解

新年献礼&#xff01; 设计模式呕心梳理 创建型模式 单例模式&#xff08;Singleton Pattern&#xff09;https://blog.csdn.net/qq_34869143/article/details/134874044 整理中... 结构型模式 代理模式&#xff08;Proxy Pattern&#xff09;https://blog.csdn.net/qq_34…

任务调度实现

一、定时任务概述 在项目中开发定时任务应该一种比较常见的需求&#xff0c;在 Java 中开发定时任务主要有三种解决方案&#xff1a;一是使用JDK 自带的 Timer&#xff0c;二是使用 Spring Task&#xff0c;三是使用第三方组件 Quartz Timer 是 JDK 自带的定时任务工具,其简单易…

解决:Microsoft Visual C++ 14.0 is required.

Microsoft Visual C 14.0 is required. Get it with “Microsoft Visual C Build Tools 当我们安装绝大部分python包的时候可以通过pip install 或者 conda install解决&#xff0c;但是任然有些包是安装不了的&#xff0c;比如我的就是在安装pyqt5的时候报Building wheel for…

nlp中的transformer中的mask

由于在实现多头注意力时需要考虑到各种情况下的掩码&#xff0c;因此在这里需要先对这部分内容进行介绍。在Transformer中&#xff0c;主要有两个地方会用到掩码这一机制。第1个地方就是在上一篇文章用介绍到的Attention Mask&#xff0c;用于在训练过程中解码的时候掩盖掉当前…

AIGC(生成式AI)试用 16 -- 续1,调优和提示词

本欲结束AIGC的试用&#xff0c;后来的一场AIGC的专业培训讲解&#xff0c;觉得还是有必要再记录些什么。 个人揣摩是一回事&#xff0c;毕竟与专业还是有着差距。 揣摩是实践&#xff0c;专业是理论&#xff0c;无论从实践到理论&#xff0c;还是理论到实践&#xff0…

Leetcode 超难题目 Hard

动态规划 2945. 找到最大非递减数组的长度 (难度分2943,“超难”) 这道题很有可能是LC主站(LCP除外)新的天花板,之所以难度分没有超过1719题,是因为双周赛样本量本身不多,而这题有一定的“猜结论”。某个LC积分2900+的大佬认为,即使数据范围只有1000,这也是一道相当…

基于MyCat2.0实现MySQL分库分表方案

目录 一、MyCat概述 二、MyCat作用 2.1 数据分片 2.1.1 垂直拆分 2.1.1.1 垂直分库 2.1.1.2 垂直分表 2.1.1.3 总结 2.1.2 水平拆分 2.1.2.1 水平分库 2.1.2.2 水平分表 2.1.2.3 总结 2.2 读写分离 2.3 多数据源整合 三、MyCat 与ShardingJDBC的区别 3.1 MyCat …

某大型电商APP sign头部签名逆向分析

APP版本 唯品会 7.45Java层抓包分析 打开抓包工具 charles进行分析&#xff0c;可以发现对于API采集需要突破当前这个参数&#xff0c;否则不返回信息 jadx静态分析 jadx静态分析&#xff0c;打开app搜索关键词api_sign&#xff0c;可以发现有参数位置 跟进去上边str赋值方…

phpstudy_pro 关于多版本php的问题

我在phpstudy中安装了多个PHP版本 我希望不同的网站可以对应不同的PHP版本&#xff0c;则在nginx配置文件中需要知道不同的PHP版本的监听端口是多少&#xff0c;如下图所示 然而找遍了php.ini配置&#xff0c;并未对listen进行设置&#xff0c;好奇是怎么实现不同的PHP监听不同…

时代变了,Spring 官方抛弃了 Java 8!

先容许我吐槽一句&#xff1a;Spring 官方&#xff0c;窝草尼玛&#xff01; 原谅我很愤怒&#xff01;最近编程导航星球和群友们反复问一个问题&#xff1a;为啥用 IDEA 创建 Spring Boot 项目时&#xff0c;不能选择 Java 8 了&#xff1f; 我本来以为是 IDEA 版本更新导致的…

html+css 有关于less的使用和全面解释

目录 less 注释 运算 嵌套 变量 导入 导出 禁止导出 less Less是一个CSS预处理器, Less文件后缀是.less。扩充了 CSS 语言, 使 CSS 具备一定的逻辑性、计算能力 注意&#xff1a;浏览器不识别 Less 代码&#xff0c;目前阶段&#xff0c;网页要引入对应的 CSS 文件 V…

Flink与Kafka集成:跨版本兼容性与性能优化实战

目录 问题背景 一、统一转发Kafka消息 二、回退到基本API 添加 Kafka 客户端库依赖