本文来自twt企业IT社区,罗文江,某大型银行资深的云计算架构师,从业经验近30年,自身经历了应用开发、业务分析BA、系统设计SA、CMMI之EPG过程改进、应用架构管理、云计算架构设计等角色转变。当前从事银行私有云、公有云和信创云基础设施、以及混合云架构的建设,参与包括容器云等相关云服务的规划、技术选型、架构设计和实施,和业务连续性等保障体系的建设工作。
云存储是指通过集群应用、网络技术或分布式文件系统等功能,将网络中大量各种不同类型的、廉价的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。使用者可以在任何时间、任何地方,透过任何可联网的设备连接到“云”上方便地存取数据。云存储技术是孕育在云计算技术的发展历程之中,而大容量、高可靠、高可用、高扩展、易用性的存储需求,大大推动云存储服务的发展和普及。2006年3月,亚马逊(Amazon)推出的亚马逊简易储存服务(Amazon Simple Storage Service,即S3)云存储产品,正式开启了云存储服务的发展。当前国内外互联网巨头,都推出相应的云存储平台,如亚马逊(Amazon)的S3,谷歌的Google Drive,微软(Microsoft)的Azure,百度云盘,阿里云OSS,腾讯云COS,华为云OBS,360云盘等。
云存储从数据的存储和访问的方式来区分,包括数据块级云存储、文件级云存储和对象级云存储。这三种类型是由传统的SAN(Storage Area Network,存储局域网)、NAS(Network Area Storage,网络附加存储)和CAS(Content Addressed Storage,内容寻址存储)分别发展而来。
块存储数据是以数据块的形式进行管理,每个数据块只有一个地址,一旦被一个系统使用,就独占了,不能被共享。NAS数据是以文件的形式进行管理,在文件系统一层对外提供服务,通过CIFS或者NFS协议进行共享。对象存储是以对象的形式进行管理,采用扁平化方式,弃用了目录树结构,通过Restful或HTTP接口实现随时随地访问的共享和高速访问。这三种云存储类型的区别如下表所示:
分布式对象存储是为海量非结构化数据提供通过Key-Value键值查找数据文件的分布式存储模式,是一种用户可通过网络,以WEB控制台、API、SDK和工具等多样化方式随时进行任意格式文件的上传、下载和管理数据,具备高扩展性、低成本、可靠和安全的数据存储服务,同时还可以通过CDN节点对对象文件下载进行加速。
分布式对象存储的技术是引入了对象元数据来描述对象特征,对象元数据具有丰富的语义,另外引入容器概念作为存储对象的集合。对象存储系统底层基于分布式存储系统来实现数据的存取,其存储方式对外部应用透明。因此,存储系统架构具有高可扩展性,支持数据的并发读写,一般不支持数据的随机写操作。对象存储的技术成熟,对底层硬件要求不高,存储系统可靠性和容错通过软件实现,同时http访问接口简单,适合处理海量、小数据的非结构化数据,如:邮箱、网盘、相册、音频视频存储等。
分布式对象存储的架构中:
存储空间(Bucket)是用户用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性,包括地域、访问权限、存储类型等。用户可以根据实际需求,创建不同类型的存储空间来存储不同的数据。存储空间的特征如下:
同一个存储空间的内部是扁平的,没有文件系统的目录等概念,所有的对象都直接隶属于其对应的存储空间。
每个用户可以拥有多个存储空间。
存储空间的名称在OSS范围内必须是全局唯一的,一旦创建之后无法修改名称。
存储空间内部的对象数目没有限制。
对象(Object)是对象存储数据的基本单元。和传统的Posix标准文件系统不同,对象没有文件目录层级结构的关系。对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成,并且由存储空间内部唯一的Key来标识。对象元信息是一组键值对,表示了对象的一些属性,比如最后修改时间、大小等信息,同时用户也可以在元信息中存储一些自定义的信息,对象的生命周期是从上传成功到被删除为止。
存储类型(Storage Class)提供标准、低频访问、归档、冷归档四种存储类型,全面覆盖从热到冷的各种数据存储场景。其中标准存储类型提供高持久、高可用、高性能的对象存储服务,能够支持频繁的数据访问;低频访问存储类型适合长期保存不经常访问的数据(平均每月访问频率1到2次),存储单价低于标准类型;归档存储类型适合需要长期保存的归档数据;冷归档存储适合需要超长时间存放的极冷数据。这四种存储类型的特点如下表所示:
不同存储类型(Storage Class)的技术特性是和其功能匹配的,如下图所示:
分布式对象存储系统的部署架构通常都支持跨AZ/跨IDC机房,以及AZ内/机房内的故障域隔离,譬如AWSS3对象存储系统的部署架构如下图所示:
分布式对象存储提供了五级可靠性架构,通过跨区域复制、AZ之间数据容灾、AZ内设备和数据冗余、存储介质的慢盘/坏道检测等技术方案,保障了对象数据的持久性和可靠性,其数据持久性、业务连续性都远高于传统架构。
分布式对象存储的应用场景非常广泛,比较典型的有静态网站托管、云盘、视频点播、视频监控、大数据分析、备份归档等场景。
1)静态网站托管场景:
终端用户浏览器和APP上的动态数据直接与业务系统进行交互,动态数据请求发往业务系统处理后直接返回给用户。静态数据保存在分布式对象存储系统中,业务系统通过内网对静态数据进行处理,终端用户通过就近的内容分发网络CDN节点,直接向分布式对象存储系统请求和读取静态数据。
2)云盘场景:
用户手机、电脑、PAD等终端设备上的动态数据与云盘系统进行交互,动态数据请求发送到企业云盘业务系统处理后直接返回给终端设备。静态数据保存在分布式对象存储系统中,业务系统通过内网对静态数据进行处理,用户终端直接向分布式对象存储系统请求和取回静态数据。同时,分布式对象存储系统提供生命周期功能,实现不同对象存储类别之间的自动转换,以节省存储成本,同时存储容量可随用户数据量的提高而自动扩容。
分布式对象存储系统的架构,有其他组成对象或其他云服务是存在有机联系的。譬如Openstack平台架构中,分布式对象存储Swift提供了镜像系统Glance的镜像文件、块存储Cinder的快照文件、数据库Trove的数据库备份文件和大数据Sahara的数据及任务JOB的存储服务,另外,Swift自身也使用了认证鉴权Keystone、监控Ceilometer和门户Horizon的能力,如下图所示: