引言
Alphago打破围棋神话、无人驾驶、机器人送餐,人工智能已备受全球瞩目,现在资本的热潮也正转向AI市场,智能化大潮已势不可挡。当下人工智能和云业务紧密关联,未来将变得更加智能,但在这个智能化的背后,是对海量数据存储的刚性需求,据悉,单是一辆无人驾驶汽车每秒产生的数据容量就在1G左右,相当于每秒发送20万封纯文本电子邮件,或上传100张高清数码照片。没有大容量、超稳定的存储系统,这一切都是无稽之谈。
无存储,不智能,那么云存储技术是如何实现的?今天将由UCloud存储研发部经理李希源给我们带来云存储-—对象存储(UFile)技术深度解析。
对象存储 UFile
对象存储(UFile)是为互联网应用提供非结构化文件存储的服务;相对于传统硬盘存储,UFile具有存储无上限、支持高并发访问、成本更低等优势;解决业务架构的文件存储问题,有效降低海量文件的存储成本,支持热点数据的高并发访问,提升终端用户访问体验。
单地域UFile存储架构集群介绍
单地域UFile架构大体可划分为6大集群:
- ULB实现外网的对接及接入层的负载均衡及容灾处理,主要实现外网IP地址的绑定及接入层集群的秒级异常剔除,该模块通过定期向接入层模块端口发送心跳检测接入层模块的可用性,在发现异常时及时进行异常模块的剔除
- 接入层提供文件访问服务,该模块为无状态设计,因此可以平行扩容及缩容
- 索引层保存文件对象的元数据信息,包括对象名称、对象大小、创建时间、存储位置等信息
- 存储层是实际存储文件数据的模块集群,主要实现文件数据的多份分布及高可靠存储
- 数据处理层主要实现UFile图片及数据的处理,包括图片的实时裁剪、缩放、旋转、水印、格式转换、信息获取操作,以及使用客户自己的通用计算镜像对数据进行处理
- 名字服务主要实现索引层、存储层及数据处理层模块的容灾剔除,以上3个集群的模块会定期在名字服务注册自身的服务,当其中有部分模块因机器异常或者网络中断导致无法提供服务时,名字服务会将该机器从名字中剔除,并且通知接入层,从而实现后台模块的容灾剔除。
主要从以下三点解析:
- UFile索引层设计
- UFile存储层设计
- UFile存储路由算法设计
UFile索引层设计
UFile索引层为一套分布式KV存储系统,其主要目标是保证UFile对象元数据的高性能、高可靠、高可用及可扩展的存储,其主要分成2层架构:
- 索引接入集群,主要解决索引存储集群的管理及元数据的分布,这一层模块为无状态设计,通过名字服务实现异常状态的容灾剔除
- 索引存储集群,实现对象元数据的分布式存储,每个对象元数据将存储3份,保证数据的可靠性及高可用性,同时对象存储采用SSD作为存储介质,保证了元数据存储的高并发低延时访问特性。该模块采用固定集群规模的方式进行管理,每个集群支撑的存储量、访问量固定,存储可实现以集群为单位的水平扩容,保障业务不断增长情况下的高性能稳定访问支持
UFile存储层设计
存储层包括3中类型模块集群:
- 存储节点,该模块按照固定大小的集群(称为Set)进行组织和管理,每个集群支撑的存储量及访问量规格固定,该模块可根据存储量需求横向进行***扩展,从而实现客户无存储量上限的数据存储。每个对象数据在存储层存储3份数据,通过对异常情况的及时处理及坏盘的及时修复,保证数据极高的可靠性(99.99999999%)
- SetMaster,该模块进行Set状态的管理,接入集群通过SetMaster决定上传的对象数据的存储集群,并执行数据的存储操作
- OsdMaster,该模块每个Set有一套,实现Set内部的存储路由管理,并对各块磁盘的状态进行监控,及时剔除异常磁盘
UFile存储路由算法设计
UFile存储集群采用无中心设计,数据存储采用固定的路由算法进行存储,因为存储集群的规模是固定的,因此路由表也是固定,这就保证了存储系统的简单性及稳定性。下面详细介绍UFile数据存储层的路由算法设计。
在存储集群上线时,每个集群的OsdMaster将该集群的磁盘信息进行组织,生成一个存储路由表,该路由表的每个项目对应3块分布在不同机架及存储机器上的磁盘,对象数据将按照该路由表指定的位置进行存储。
每个存储在UFile上的对象数据将被切分成若干个4MB的数据块,称为分片。UFile为每个对象分配一个单集群内部唯一的对象ID,通过对象ID和分片编号拼接获得分片ID,通过字符串哈希算法获得哈希值,并在路由表中找到该分片存储的3块磁盘位置,由UFile接入模块将该分片数据提交到3块磁盘上。
当单块磁盘出现异常时,OsdMaster会发现该情况并将该磁盘标记为异常状态,接入层写入该数据时,将只写入两份数据,磁盘修复后,将从这两份数据中拷贝一份数据到已修复磁盘,恢复数据的多份高可靠存储。当出现一个哈希表项中有2块磁盘不可使用的情况下,为保证数据安全性,该存储集群将不允许写入操作,写入操作将被切换到其他集群提供服务,从而保证UFile读写的高可用性。
UFile功能优势:
1. 海量存储
存储空间无上限,无需考虑存储空间扩容问题,单文件***支持5TB。适用于音视频、图片分享等UGC类应用海量文件存储。
2. 高并发
支持高并发访问,突破传统磁盘I/O限制,满足高访问量及高下载量业务需求。适用于高下载量高访问量应用文件的存储。
访问加速
存储文件结合CDN分发加速,国内外500+加速节点,有效降低访问延迟、提升下载速度。提升全网终端用户的访问体验。
3. 安全可用
所存文件保存三份副本,分布存储于不同存储集群。即使单份数据损坏也不影响存储文件的可用性,同时保证文件安全。
4. 内容保护
可通过身份验证机制及防盗链设置控制终端用户访问权限,避免因内容被盗用产生的版权损失及恶意访问的流量消耗。
5. 图片处理
提供图片处理服务,支持图片缩放、剪裁、添加水印等功能,并提供多种尺寸设置,满足移动端、PC端等多终端访问需求。
6. 更低成本
存储单价仅为云硬盘的1/2,下载由CDN分发,降低存储及网络成本。按实际使用量计费,无存储及带宽资源闲置浪费。
7. 开发支持
完备的API接口及SDK开发包支持,适合多种语言,与原有业务无缝结合,能够极大缩短开发周期,帮助业务快速上线。
总结:
在大量企业对数据存储的强需求背景下,UCloud对象存储系统应运而生,本文通过介绍UFile产品、底层文件存储系统实现细节、功能优势,分析UFile如何实现高可靠及高可用特性,为企业数据服务保驾护航,从云存储技术出发,助力各个领域的企业更高效、更智能探索数据价值。
【本文是51CTO专栏机构作者“大U的技术课堂”的原创文章,转载请通过微信公众号(ucloud2012)联系作者】