系列导航

一、swift对象存储环境搭建

二、swift添加存储策略

三、swift大对象--动态大对象

四、swift大对象--静态态大对象

五、java操作swift对象存储(官网样例)

六、java操作swift对象存储(resultful方式实现)

七、java操作swift对象存储(动态大对象)

八、java操作swift对象存储(静态大对象)

 一、什么是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大对象--动态大对象的更多相关文章

  1. JSP的学习(6)——九大隐式对象及其out对象

    本篇将介绍JSP中的九大隐式对象,并重点介绍其中的out对象. 我们在之前的博客<JSP的学习(1)——基础知识与底层原理>一文中已经知道,JSP最终要被翻译和转换成Servlet,在转换 ...

  2. 一次对象过大引起的gc性能问题的分析与定位

    现象:一个接口在4C的机器上跑最大只有7TPS,CPU使用率就已经90%多. 定位: 1.  使用top命令查看CPU使用情况,找到进程号 2.  使用top -H -pid命令,查看进程信息,看到有 ...

  3. Java 5大内存区域和对象的创建过程

    1.Java运行时数据区 方法区,堆线程共享.虚拟机栈,本地方法栈和程序计数器线程私有. 2.程序计数器(PC计数器) 占用较小的一块内存空间,当执行Java方法时记录正在执行的虚拟机字节码指令地址, ...

  4. BLOB:大数据,大对象,在数据库中用来存储超长文本的数据,例如图片等

    将一张图片存储在mysql中,并读取出来(BLOB数据:插入BLOB类型的数据必须使用PreparedStatement,因为插入BLOB类型的数据无法使用字符串拼写): -------------- ...

  5. [翻译] 编写高性能 .NET 代码--第二章 GC -- 将长生命周期对象和大对象池化

    将长生命周期对象和大对象池化 请记住最开始说的原则:对象要么立即回收要么一直存在.它们要么在0代被回收,要么在2代里一直存在.有些对象本质是静态的,生命周期从它们被创建开始,到程序停止才会结束.其它对 ...

  6. Java的三种代理模式(Spring动态代理对象)

    Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ...

  7. Qt 编程指南 8 显示静态小图片和动态大图片

    显示控件概览 图片浏览示例 第一行是一个标签控件,objectName 为 labelShow,文本内容清空,因为是用来显示图片用的. 主界面第二行的控件是四个普通按钮 第一个按钮文本是 " ...

  8. python动态获取对象的属性和方法 (转载)

    首先通过一个例子来看一下本文中可能用到的对象和相关概念. #coding:utf-8 import sys def foo():pass class Cat(object): def __init__ ...

  9. [C] 在 C 语言编程中实现动态数组对象

    对于习惯使用高级语言编程的人来说,使用 C 语言编程最头痛的问题之一就是在使用数组需要事先确定数组长度. C 语言本身不提供动态数组这种数据结构,本文将演示如何在 C 语言编程中实现一种对象来作为动态 ...

  10. Mybatis 系列9-强大的动态sql 语句

    [Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] ...

随机推荐

  1. SQLBI_精通DAX课程笔记_03_计算列

    计算列是由DAX在表中生成的列,逐行计算并储存在模式之中. 以下链接是采悟老师关于度量值和计算列的区别的文章,可以同步查看. https://zhuanlan.zhihu.com/p/75462046 ...

  2. Vue项目的创建、运行与端口号修改

    前言:Vue-cli是Vue官方提供的一个脚手架,用于快速生成一个Vue的项目模板,依赖于NodeJS环境 NodeJS下载:NodeJS安装下载 Vue-cli下载:Vue-cli下载 一.Vue图 ...

  3. [CF403E]Two Rooted Trees

    Two Rooted Trees 题面翻译 题目描述 你有两棵有根树,每棵树都有 \(n\) 个结点.不妨将这两棵树上的点都用 \(1\) 到 \(n\) 之间的整数编号.每棵树的根结点都是 \(1\ ...

  4. [ABC233G] Strongest Takahashi

    Problem Statement There is a $N \times N$ grid, with blocks on some squares. The grid is described b ...

  5. 理解Mysql索引原理及特性

    作为开发人员,碰到了执行时间较长的sql时,基本上大家都会说"加个索引吧".但是索引是什么东西,索引有哪些特性,下面和大家简单讨论一下. 1 索引如何工作,是如何加快查询速度 索引 ...

  6. MybatisPlus条件查询方法全解

    1.是什么? MybatisPlus通过条件构造器可以组装复杂的查询条件,写一些复杂的SQL语句,从而简化我们的开发提升我们的开发效率 # 可以简单的理解为就是我们写SQL语句时where后面的条件 ...

  7. Python代码中的偏函数

    技术背景 在数学中我们都学过偏导数\(\frac{\partial f(x,y)}{\partial x}\),而这里我们提到的偏函数,指的是\(f(y)(x)\).也就是说,在代码实现的过程中,虽然 ...

  8. 华企盾DSC导入离线客户端没有获取到信息

    安装客户端的时候禁用了网卡,导致导入离线客户端获取不到信息. 解决方法: 1.启用网卡,重启电脑 2.启用网卡,重装客户端

  9. dtd的三种引入方式

  10. 华为云GaussDB支撑华为MetaERP系统全面替换

    摘要:目前MetaERP已经覆盖了华为公司100%的业务场景和80%的业务量. 本文分享自华为云社区<强渡大渡河!华为云GaussDB支撑华为MetaERP系统全面替换>,作者: 华为云头 ...