oss

阿里云对象存储OSS(Object Storage Service)为您提供基于网络的数据存取服务。使用OSS,您可以通过网络随时存储和调用包括文本、图片、音视频在内的各类数据文件。



https://www.alibabacloud.com/help/zh/doc-detail/31883.htm



OSS将各类文件以对象(Object)的形式上传到存储空间(Bucket)中。您可以进行以下操作:



创建Bucket,并向Bucket上传Object。
获取已上传Object的地址进行分享和下载。
通过读写权限ACL、Bucket Policy、RAM Policy等功能对访问用户进行授权和鉴权。
通过阿里云管理控制台、各种便捷工具以及丰富的SDK包执行OSS的基本和高级操作。



https://www.alibabacloud.com/help/zh/doc-detail/31827.htm?spm=a2c63.p38356.879954.14.5d66219fcVHWDg#concept-izx-fmt-tdb

http://doc.oss.aliyuncs.com/



对象存储的原理



  首先,一个文件包含了属性(术语叫metadata,元数据,例如该文件的大小、修改时间、存储路径等)以及内容(以下简称数据)



  以往像FAT32这种文件系统,是直接将一份文件的数据与metadata一起存储的,存储过程先将文件按照文件系统的最小块大小来打散(如4M的文件,假设文件系统要求一个块4K,那么就将文件打散成1000个小块),再写进硬盘里面,过程中没有区分数据/metadata的。而每个块最后会告知你下一个要读取的块的地址,然后一直这样顺序地按图索骥,最后完成整份文件的所有块的读取。



  这种情况下读写速度很慢,因为就算你呦100个机械手臂在读写,但是由于你只有读取到第一块,才能知道下一个在哪里,其实相当于只能有一个机械手臂在实际工作。



  对象存储将元数据独立出来,控制节点叫元数据服务器(服务器+对象存储管理软件),里面主要负责存储对象的属性(主要是对象的数据被打散存放到了那几台分布式服务器中的信息),而其他负责存储数据的分布式服务器叫做OSD,主要负责存储文件的数据部分。当用户访问对象,会先访问元数据服务器,元数据服务器只负责反馈对象存储在那些OSD,假设反馈文件A存储在B、C、D三台OSD,那么用户就会再次直接访问3台OSD服务器去读取数据。



  这时候由于是3台OSD同时对外传输数据,所以传输的速度就加快了。当OSD服务器数量越多,这种读写速度的提升就越大,通过这种方式,实现了读写快的目的。



  另一方面,对象存储软件是有专门的文件系统的,所以OSD对象又相当于文件服务器,那么就不存在文件共享方面的困难了,也就解决了文件共享方面的问题。



  所以对象存储的出现,很好地结合了块存储与文件存储的优点。
  
  https://baijiahao.baidu.com/s?id=1608194600020248113&wfr=spider&for=pc
  
  1、对象数据组成结构
与块存储和文件存储管理数据的方式不同,对象存储是以对象的形式管理数据的。对象和文件最大的不同,就是在文件基础之上增加了元数据。一般情况下,对象分为三个部分:数据、元数据以及对象id。



对象的数据通常是无结构的数据,比如:图片、视频或文档等;对象的元数据则指的是对象的相关描述,比如:图片的大小、文档的拥有者等;对象id则是一个全局的唯一标识符,用来区分对象的。



从数据结构来看,这三种存储有着根本不同。块存储的数据结构是数组,而文件存储是二叉树(B,B-,B+,B*各种树),对象存储基本上都是哈希表。



数组和二叉树都是老生常谈,没有太多值得说的,而对象存储使用的哈希表也就是常听说的键值(KeyVaule型)存储的核心数据结构,每个对象找一个UID(所谓的“键”KEY),算哈希值(所谓的“值Vaule”)以后和目标对应。找了一个哈希表例子如下:



键值对应关系简单粗暴,毕竟算个hash值是很快的,这种扁平化组织形式可以做得非常大,避免了二叉树的深度,对于真·海量的数据存储和大规模访问都能给力支持。所以不仅是对象存储,很多NoSQL的分布式数据库都会使用它,比如Redis,MongoDB,Cassandra 还有Dynamo等等。



2、对象访问方式
对象存储,访问对象的方式很方便,是通过REST接口对对象进行操作,用HTTP动词(GET、POST、PUT、DELETE等)描述操作。除此之外,还有一种访问方式,就是使用各大云商提供的客户端去操作对象。比如:Amazon的s3cmd、阿里云的osscmd/ossutil、腾讯云的coscmd等。这些客户端都是各个云商开发出来,可以以命令行的形式在操作系统中操作对象的工具,各大云商都有详细的文档说明,在这就不一一赘述了。



3、对象存储优缺点
先说优点,之前大概也提了下:



可扩展性高:对象存储能够扩展数十乃至数百EB的容量,能够充分利用高密度存储;
效率高:扁平化结构,不受复杂目录系统对性能的影响;
无需迁移:对象存储是一种横向扩展系统,随着容量的增加,数据根据算法自动分布于所有的对象存储节点;
安全性高:对象存储通常凭借HTTP调用对象存储本身提供的认证密钥来提供数据访问;
访问方便:不光支持HTTP(S)协议,采用REST的API方式调用和检索数据,同样增加了NFS和SMB支持;
成本相对低:与块存储方式相比,对象存储是最具成本效益的数据存储类型,并且与云计算搭配,把对象存储的这一特性发挥的淋漓尽致。



再提缺点:



最终一致性:由于不同节点的位置不同,数据同步时可能会有一定时间的延迟或者错误;不易做数据库:对象存储比较适合存储那些变动不大甚至不变的文件,而对于像数据库这种需要直接与存储裸盘相互映射的应用,还是块存储更合适。


Category storage