OSS文件储存系统

本文详细介绍了阿里云OSS的收费结构,特别是外网流量费用和使用CDN进行流量节省的方法。文章还概述了OSS作为对象存储服务的优势,以及与传统文件系统的对比,强调了OSS适合大规模非结构化数据存储的应用场景。
摘要由CSDN通过智能技术生成

0 OSS怎么收费

一.是服务器费

二.是外网流量访问费

如果在外网访问,是要加流量费的,价格是0.25元/GB(闲)和0.5元/GB(忙)

三.有两项是免费的

OSS 的所有内网传输都是免费的;从本地上传到 OSS 服务器的流量也是免费的。

四.可以用CDN 回源流量

阿里云CDN简介和使用流程-阿里云开发者社区 (aliyun.com)

  • OSS 的其中一项费用来自于[流量费用],而[流量费用]又主要来自于[外网流出流量],CDN 能降低 OSS 的外网流量费用。CDN 会将 OSS 的源文件分发到全国的服务器节点上,用户访问时,会直接访问离用户最近的节点数据,并不会读取 OSS 的源文件,所以也不会消耗 OSS [外网流出流量]费用,从而达到节约[外网流出流量]费用的目的。

  • CDN 相对于 OSS 访问,有 2 个明显的优势。

    • 提高速度和体验。CDN 在全国大部分地区都部署了节点,能够明显提升 OSS 的访问速度。

    • CDN 的外网流量费用相对 OSS 外网流量较低,仅为 OSS 外网流量的 50%

  • 使用 CDN 加速 OSS,阿里云实行了优化的回源策略,CDN 回源 OSS 请求产生的 OSS 流量费用单价为 0.15元/GB,即使 OSS 的源文件没有在 CDN 节点存储,产生的总费用也还是低于 OSS 的[外网流出费用]。

0 OSS最大储存多少G, 最大单次上传多少G

OSS总存储容量不限制,单个Bucket容量也不限制。oss没有最大储存限制,就是你买多少储存空间,它就能存多少G

通过OSS控制台仅可以上传小于5 GB的文件。对于大于5 GB的文件,需要使用分片上传和断点续传功能,或者使用图形化工具ossbrowser、命令行工具ossutil直接上传。

1 OSS是什么

说到OSS产品,大家都要知道OSS是什么?OSS是阿里云对象存储服务(Object Storage Service)的一个简称,它是阿里云提供的海量、安全、低成本、高可靠的云存储服务。

OSS可以被理解成一个即开即用、无限大空间的存储集群。相较传统建服务器存储而言,OSS在可靠性、安全性、成本和数据处理能力方面都有着突出的优势。使用OSS,您可以通过网络随时存储和调用包括文本、图片和视频等在内的各种非结构化数据文件。

OSS将数据文件以对象/文件(Object)的形式上传到存储空间(Bucket)中。OSS提供的是一个Key-Value键值对形式的对象存储服务。用户可以根据Object的名称(Key)唯一地址获取该Object的内容。

您可以进行以下OSS相关的操作:

  • 创建存储空间,并向存储空间中上传文件。
  • 获取已上传文件的地址,进行文件的分享和下载。
  • 修改存储空间或文件的属性或元信息,为其设置相应的权限。
  • 在对象存储OSS控制台进行基础和高级OSS操作。
  • 通过开发者工具包SDK或直接在应用程序中调用RESTful API,进行基础和高级OSS操作。

2 OSS的优势

OSS产品相对于自建存储,有哪些优势呢?从下表中即可看出:

OSS还具备的其他各项优势:

  • 方便、快捷的使用方式
    a提供标准的RESTful API接口(部分接口与Amazon S3 API兼容)、丰富的SDK包、客户端工具、控制台。您可以像使用文件一样方便地

上传、下载、检索、管理用于Web网站或者移动应用的海量数据。
b不限文件数量和大小。您可以根据所需存储量无限扩展存储空间,解决了传统硬件存储扩容问题。
c支持流式写入和读出。特别适合视频等大文件的边写边读业务场景。
d支持数据生命周期管理。您可以自定义将到期数据批量删除。

  • 强大、灵活的安全机制
    灵活的鉴权、授权机制。提供STS和URL鉴权和授权机制,以及白名单、防盗链、主子账号功能。
  • 丰富的图片处理服务
    支持jpg、png、bmp、gif、webp、tiff等多种图片格式的转换,以及缩略图、剪裁、水印、缩放等多种操作。

3 OSS产品架构图

  • WS&PM(协议接入层):负责接收用户使用RESTful协议发来的请求,进行安全认证。如果认证通过,用户的请求将被转发到Key-Value引擎继续处理。如果认证失败,直接返回错误信息给用户。
  • KV集群:负责数据结构化处理,即按照Key(对象名称)来查找或存储数据,并支持大规模并发的请求。当协调服务集群变更导致服务被迫改变运行物理位置时,可以快速协调找到接入点。
  • 存储集群:元数据存储在Master上,Master之间采用分布式消息一致性协议(Paxos)保证元数据的一致性,从而实现高效的文件分布式存储和访问。

4 OSS基本概念

本部分将向您介绍OSS中涉及的几个基本概念,以便于您更好地理解OSS产品。

4.1 对象/文件(Object)

对象是OSS存储数据的基本单元,也被称为OSS的文件。对象由元信息(Object Meta)、用户数据(Data)和文件名(Key)组成。对象由存储空间内部唯一的Key来标识。对象元信息是一个键值对,表示了对象的一些属性,比如最后修改时间、大小等信息,同时用户也可以在元信息中存储一些自定义的信息。

对象的生命周期是从上传成功到被删除为止。在整个生命周期内,对象信息不可变更,重复上传同名的对象会覆盖之前的对象。因此,OSS不支持修改文件的部分内容等操作。

4.2 存储空间(Bucket)

存储空间是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。您可以设置和修改存储空间属性用来控制访问权限、生命周期等,这些属性设置直接作用于该存储空间内所有对象,因此您可以通过灵活创建不同的存储空间来完成不同的管理功能。

  • 同一个存储空间的内部是扁平的,没有文件系统的目录等概念,所有对象都直接隶属于其对应的存储空间。
  • 每个用户可以拥有多个存储空间。
  • 存储空间的名称在OSS范围内必须是全局唯一的,一旦创建之后无法修改名称。
  • 存储空间内部的对象数目没有限制。

4.3 强一致性

Object操作在OSS上具有原子性,操作要么成功要么失败,不会存在有中间状态的Object。

OSS保证用户一旦上传完成之后读到的Object是完整的,OSS不会返回给用户一个部分上传成功的Object。Object操作在OSS上同样具有强一致性,用户一旦收到了一个上传(PUT)成功的响应,该上传的Object就已经立即可读,并且数据的三份副本已经写成功。不存在一种上传的中间状态,即read-after-write却无法读取到数据。对于删除操作也是一样的,用户删除指定的Object成功之后,该Object立即变为不存在。

强一致性方便了用户架构设计,可以使用跟传统存储设备同样的逻辑来使用OSS,修改立即可见,无需考虑最终一致性带来的各种问题。

4.4 OSS与文件系统的对比

OSS是一个分布式的对象存储服务,提供的是一个Key-Value对形式的对象存储服务。用户可以根据Object的名称(Key)唯一地获取该Object的内容。虽然用户可以使用类似test1/test.jpg的名字,但是这并不表示用户的Object是保存在test1目录下面的。对于OSS来说,test1/test.jpg仅仅只是一个字符串,和a.jpg这种并没有本质的区别。因此不同名称的Object之间的访问消耗的资源是类似的。

文件系统是一种典型的树状索引结构,一个名为test1/test.jpg的文件,访问过程需要先访问到test1这个目录,然后再在该目录下查找名为test.jpg的文件。因此文件系统可以很轻易地支持文件夹的操作,比如重命名目录、删除目录、移动目录等,因为这些操作仅仅只是针对目录节点的操作。这种组织结构也决定了文件系统访问越深的目录消耗的资源也越大,操作拥有很多文件的目录也会非常慢。

对于OSS来说,可以通过一些操作来模拟类似的功能,但是代价非常昂贵。比如重命名目录,希望将test1目录重命名成test2,那么OSS的实际操作是将所有以test1/开头的Object都重新复制成以test2/开头的Object,这是一个非常消耗资源的操作。因此在使用OSS的时候要尽量避免类似的操作。

OSS保存的Object不支持修改(追加写Object需要调用特定的接口,生成的Object也和正常上传的Object类型上有差别)。用户哪怕是仅仅需要修改一个字节也需要重新上传整个Object。而文件系统的文件支持修改,比如修改指定偏移位置的内容、截断文件尾部等,这些特点也使得文件系统拥有广泛的适用性。但另外一方面,OSS能支持海量的用户并发访问,而文件系统会受限于单个设备的性能。

因此,将OSS映射为文件系统是非常低效的,也是不建议的做法。如果一定要挂载成文件系统的话,建议尽量只做新建文件、删除文件、读取文件这几种操作。使用OSS应该充分发挥其优点,即海量数据处理能力,优先用来存储海量的非结构化数据,比如图片、视频、文档等。

您好,如果您想在 PHP 中下载 OSS 存储空间中的文件,可以使用以下代码: ```php <?php require_once '<path_to_sdk>/autoload.php'; // 引入 SDK 文件 use OSS\OssClient; // 引入 OSS 客户端类 use OSS\Core\OssException; // 引入 OSS 异常类 $accessKeyId = '<your_access_key_id>'; // 您的 AccessKeyId $accessKeySecret = '<your_access_key_secret>'; // 您的 AccessKeySecret $endpoint = '<your_endpoint>'; // 您的 OSS 存储空间所在的地域节点域名,例如:oss-cn-hangzhou.aliyuncs.com $bucketName = '<your_bucket_name>'; // 您的 OSS 存储空间名称 $objectKey = '<your_object_key>'; // 您要下载的文件OSS 存储空间中的 ObjectKey,例如:example.jpg $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); // 创建 OSS 客户端实例 try { $objectContent = $ossClient->getObject($bucketName, $objectKey); // 下载文件内容 header('Content-Type: application/octet-stream'); // 设置下载文件的 MIME 类型为二进制流 header('Content-Disposition: attachment;filename="' . $objectKey . '"'); // 设置下载文件文件名 echo $objectContent; // 输出文件内容 } catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return; } ``` 上述代码中的 `<path_to_sdk>`、`<your_access_key_id>`、`<your_access_key_secret>`、`<your_endpoint>`、`<your_bucket_name>` 和 `<your_object_key>` 分别表示您下载的 OSS SDK 文件的存放路径、您的 AccessKeyId、您的 AccessKeySecret、您的 OSS 存储空间所在的地域节点域名、您的 OSS 存储空间名称和您要下载的文件OSS 存储空间中的 ObjectKey。请将它们替换为您自己的信息。 这段代码会将下载的文件以二进制流的方式输出到浏览器,浏览器会自动弹出文件下载框。如果您想将文件保存到本地文件系统中,可以将 `echo $objectContent;` 替换为 `file_put_contents('<local_file_path>', $objectContent);`,其中 `<local_file_path>` 表示要保存到本地文件系统中的文件路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值