三、swift大对象--动态大对象
系列导航
六、java操作swift对象存储(resultful方式实现)
一、什么是swift的大对象
简单的说就是单个文件大于5G,就属于大对象,单个文件大于5G按照普通方式上传swift就会报错(Your request is too large)。
注:除了报错以外单独上传一个比如4G的文件需要的时间比较长,那么怎么让上传的速度增加呢?这就需要用到swift的大对象功能。
例子:
--造一个不到4.9G的文件 /opt/4G.txt
dd if=/dev/zero of=/opt/4G.txt bs=1M count=5000
--上传一个4.9G的文件耗时95秒
swift -A http://127.0.0.1:8080/auth/v1.0 -U admin:admin -K admin upload bigContainer /opt/4G.txt --object-name 4G.txt
--查看物理位置
swift-get-nodes -a /etc/swift/object.ring.gz AUTH_admin bigContainer 4G.txt
-----------------------------------
--造一个5.1G的文件 /opt/5G.txt
dd if=/dev/zero of=/opt/5G.txt bs=1M count=5130
--上传一个5G的文件
swift -A http://127.0.0.1:8080/auth/v1.0 -U admin:admin -K admin upload bigContainer /opt/5G.txt --object-name 5G.txt
报错: Your request is too large.
注:上面的例子可以看出文件小于5G可以正常上传,但是大于5G就会报错。
二、如何向swift上传大于5G的文件?
使用swift的大对象功能,大对象功能又分为动态大对象和静态大对象两种,可以根据需求选择使用。
三、动态大对象
(1) 动态大对象 swift CLI 分段上传下载
--使用段的概念上传大文件
--官网说明:
swift upload test_container -S 1073741824 large_file
--例子:
swift -A http://127.0.0.1:8080/auth/v1.0 -U yc:mao -K yang upload -S 1073741824 ycContainer /opt/5G.txt --object-name 5G.txt
注:-S的意思是把文件切割成1073741824(1G)大小的分片上传文件。
--查看容器列表
swift -A http://127.0.0.1:8080/auth/v1.0 -U yc:mao -K yang list
ycContainer
ycContainer_segments
--查看ycContainer容器
swift -A http://127.0.0.1:8080/auth/v1.0 -U yc:mao -K yang list ycContainer
5G.txt
--查看ycContainer_segments容器
[root@node02 1]# swift -A http://127.0.0.1:8080/auth/v1.0 -U yc:mao -K yang list ycContainer_segments
5G.txt/1591261394.734867/5379194880/1073741824/00000000
5G.txt/1591261394.734867/5379194880/1073741824/00000001
5G.txt/1591261394.734867/5379194880/1073741824/00000002
5G.txt/1591261394.734867/5379194880/1073741824/00000003
5G.txt/1591261394.734867/5379194880/1073741824/00000004
5G.txt/1591261394.734867/5379194880/1073741824/00000005
--下载对象5G.txt到/opt/1路径下
swift -A http://127.0.0.1:8080/auth/v1.0 -U yc:mao -K yang download ycContainer 5G.txt --output /opt/1/5G.txt
(2)动态大对象 curl 进行分段上传、合并下载
所有对象段都必须位于同一容器中,并具有通用的对象名称前缀,并按应将其连接的顺序排序。对象名称按UTF-8字节字符串的字典顺序排序。它们不必与清单文件位于相同的容器中
curl http://127.0.0.1:8080/auth/v1.0 -v -H 'X-Storage-User: admin:admin' -H 'X-Storage-Pass: admin'
curl -X PUT -H "X-Auth_Token: AUTH_tk2cf9efe9efe64881ad058d047d907b67" -T /opt/1.txt http://127.0.0.1:8080/v1/AUTH_admin/containerCURL/myobject/c.txt --data-binary '1'
curl -X PUT -H "X-Auth_Token: AUTH_tk2cf9efe9efe64881ad058d047d907b67" -T /opt/2.txt http://127.0.0.1:8080/v1/AUTH_admin/containerCURL/myobject/a.txt --data-binary '1'
curl -X PUT -H "X-Auth_Token: AUTH_tk2cf9efe9efe64881ad058d047d907b67" -T /opt/3.txt http://127.0.0.1:8080/v1/AUTH_admin/containerCURL/myobject/b.txt --data-binary '1'
curl -X PUT -H "X-Auth_Token: AUTH_tk2cf9efe9efe64881ad058d047d907b67" -H 'X-Object-Manifest: containerCURL/myobject/' http://127.0.0.1:8080/v1/AUTH_admin/containerManifest/myobject --data-binary ''
curl -D- -H "X-Auth_Token: AUTH_tk2cf9efe9efe64881ad058d047d907b67" http://127.0.0.1:8080/v1/AUTH_admin/containerManifest/myobject
查看
curl http://127.0.0.1:8080/v1/AUTH_admin/containerCURL -X GET -H "X-Auth_Token: AUTH_tk2cf9efe9efe64881ad058d047d907b67"
curl http://127.0.0.1:8080/v1/AUTH_admin/containerManifest -X GET -H "X-Auth_Token: AUTH_tk2cf9efe9efe64881ad058d047d907b67"
删除
curl http://127.0.0.1:8080/v1/AUTH_admin/containerManifest/myobject -X DELETE -H "X-Auth_Token: AUTH_tk2cf9efe9efe64881ad058d047d907b67"
curl http://127.0.0.1:8080/v1/AUTH_admin/containerCURL/myobject/a.txt -X DELETE -H "X-Auth_Token: AUTH_tk2cf9efe9efe64881ad058d047d907b67"
curl http://127.0.0.1:8080/v1/AUTH_admin/containerCURL/myobject/b.txt -X DELETE -H "X-Auth_Token: AUTH_tk2cf9efe9efe64881ad058d047d907b67"
curl http://127.0.0.1:8080/v1/AUTH_admin/containerCURL/myobject/c.txt -X DELETE -H "X-Auth_Token: AUTH_tk2cf9efe9efe64881ad058d047d907b67"
三、swift大对象--动态大对象的更多相关文章
- JSP的学习(6)——九大隐式对象及其out对象
本篇将介绍JSP中的九大隐式对象,并重点介绍其中的out对象. 我们在之前的博客<JSP的学习(1)——基础知识与底层原理>一文中已经知道,JSP最终要被翻译和转换成Servlet,在转换 ...
- 一次对象过大引起的gc性能问题的分析与定位
现象:一个接口在4C的机器上跑最大只有7TPS,CPU使用率就已经90%多. 定位: 1. 使用top命令查看CPU使用情况,找到进程号 2. 使用top -H -pid命令,查看进程信息,看到有 ...
- Java 5大内存区域和对象的创建过程
1.Java运行时数据区 方法区,堆线程共享.虚拟机栈,本地方法栈和程序计数器线程私有. 2.程序计数器(PC计数器) 占用较小的一块内存空间,当执行Java方法时记录正在执行的虚拟机字节码指令地址, ...
- BLOB:大数据,大对象,在数据库中用来存储超长文本的数据,例如图片等
将一张图片存储在mysql中,并读取出来(BLOB数据:插入BLOB类型的数据必须使用PreparedStatement,因为插入BLOB类型的数据无法使用字符串拼写): -------------- ...
- [翻译] 编写高性能 .NET 代码--第二章 GC -- 将长生命周期对象和大对象池化
将长生命周期对象和大对象池化 请记住最开始说的原则:对象要么立即回收要么一直存在.它们要么在0代被回收,要么在2代里一直存在.有些对象本质是静态的,生命周期从它们被创建开始,到程序停止才会结束.其它对 ...
- Java的三种代理模式(Spring动态代理对象)
Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ...
- Qt 编程指南 8 显示静态小图片和动态大图片
显示控件概览 图片浏览示例 第一行是一个标签控件,objectName 为 labelShow,文本内容清空,因为是用来显示图片用的. 主界面第二行的控件是四个普通按钮 第一个按钮文本是 " ...
- python动态获取对象的属性和方法 (转载)
首先通过一个例子来看一下本文中可能用到的对象和相关概念. #coding:utf-8 import sys def foo():pass class Cat(object): def __init__ ...
- [C] 在 C 语言编程中实现动态数组对象
对于习惯使用高级语言编程的人来说,使用 C 语言编程最头痛的问题之一就是在使用数组需要事先确定数组长度. C 语言本身不提供动态数组这种数据结构,本文将演示如何在 C 语言编程中实现一种对象来作为动态 ...
- Mybatis 系列9-强大的动态sql 语句
[Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] ...
随机推荐
- 记一次 .NET 某零售管理系统 存储不足分析
一:背景 1. 讲故事 前几天有位朋友找到我,说他的程序会偶发性的报 存储空间不足,无法处理此命令 的错误,让我帮忙看下到底怎么回事,哈哈,人家是有备而来,dump都准备好了,话不多说,直接分析开干. ...
- HTML中的常用的特殊字符以及所有特殊字符
## HTML常用特殊字符以下是HTML中常用的特殊符号及其编码: | 特殊符号 | 编码 | 描述 || --- | --- | --- || `<` | `<` | 小于号 | ...
- Winform RichTextBox 控件文本内容自动滚动到最后一行
RichTextBox 控件文本内容始终显示追加的最新内容,也就是自动滚动到控件文本框的最后一行. 有两种方法: HideSelection设置为false: // RichTextBox1.Text ...
- IDEA配置自定义标签,实现高亮注释~
为什么要写这么一篇博客呢? 不知道大家有没有这样的一种苦恼,就是在写代码的时候遇到复杂的核心的代码,想加一个特殊的注释方便后期自己或者同事查看,但是这玩意IDEA好像只给我们提供了两个 FIXME : ...
- 被面试官PUA了:创建索引时一定会锁表?
索引主要是用于提高数据检索速度的一种机制,通过索引数据库可以快速定位到目标数据的位置,而不需要遍历整个数据集,它就像书籍的目录部分,有它的存在,可以大大加速查询的效率. 那么问题来了:在创建索引时一定 ...
- 华企盾DSC:wps个人模式无策略组新建的文件仍然加密
解决方法:右键wps安装目录手动解密即可(原因:wps模板被加密导致)
- 【C#】【IO】【实例】接上一个统计的新功能
先用Python来创建多层级文件夹: import os root_path = r"C:\Users\Desktop\文案整理\Practice" for item in ran ...
- C#与数据库访问技术之ExecuteNonQuery方法
ExecuteNonQuery方法主要用来更新数据. 通常使用它来执行Update.Insert和Delete语句. 该方法返回值意义如下: 对于Update.Insert和Delete语句,返回值为 ...
- 调试分析Linux 0.00引导程序
Bochs虚拟机的配置文件 简介 Bochs 虚拟机的配置文件 描述待启动的虚拟机的配置,例如内存大小.启动镜像.网络功能.存储配置. Bochs运行后,会先查找配置文件,解析模拟器要虚拟的系统相关信 ...
- Vue3中使用TypeScript封装axios遇到的问题(AxiosRequestConfig)
如果您有更好的解决方法,欢迎评论区评论. 版本 "dependencies": { "axios": "^1.4.0", "van ...