系列导航

一、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. [cnn]FashionMINST训练+保存模型+调用模型判断给定图片

    import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim impor ...

  2. [THUPC 2023 初赛] 背包

    题目描述 本题中,你需要解决完全背包问题. 有 \(n\) 种物品,第 \(i\) 种物品单个体积为 \(v_i\).价值为 \(c_i\). \(q\) 次询问,每次给出背包的容积 \(V\),你需 ...

  3. vivo 容器平台资源运营实践

    作者:vivo 互联网服务器团队 - Chen Han 容器平台针对业务资源申请值偏大的运营问题,通过静态超卖和动态超卖两种技术方案,使业务资源申请值趋于合理化,提高平台资源装箱率和资源利用率. 一. ...

  4. 【Python】【OpenCV】轮廓检测

    Code: 1 import cv2 2 import numpy as np 3 4 img = np.zeros((200, 200), dtype=np.uint8) 5 img[50:150, ...

  5. 记一次 .NET某股票交易软件 灵异崩溃分析

    一:背景 1. 讲故事 在dump分析的旅程中也会碰到一些让我无法解释的灵异现象,追过这个系列的朋友应该知道,上一篇我聊过 宇宙射线 导致的程序崩溃,后来我又发现了一例,而这一例恰恰是高铁的 列控连锁 ...

  6. Python——第五章:处理异常try、except、else、finally

    处理异常try 和 except 在 Python 中,try 和 except 语句用于处理异常(错误).通过使用这两个关键字,你可以编写代码来捕获和处理可能发生的异常,以保持程序的稳定性. try ...

  7. CentOS 7 安装 Python 3.X版本

    由于Centos7默认安装了python2.7.5版本,因此想安装python 3.X版本就需要特殊处理. 详情可以参考南宫羽香的技术博客原文:https://www.cnblogs.com/lclq ...

  8. P9344 去年天气旧亭台 代码

    不带滚动数组代码: #include <iostream> #include <cstdio> #include <cstring> #define int lon ...

  9. Kubernetes Service 中的 external-traffic-policy 是什么?

    [摘要] external-traffic-policy,顾名思义"外部流量策略",那这个配置有什么作用呢?以及external是指什么东西的外部呢,集群.节点.Pod?今天我们就 ...

  10. 如何在IIS上部署docsify以及404问题

    操作步骤 创建一个文件夹,在文件夹中新建2个文件 index.html:入口文件,整个网站只需要这个html文件,其他文件都是md文件 README.md:主页内容,如果没有这个文件,访问时提示404 ...