专栏名称: 细说云计算
关注云平台的网络技术、存储技术,以及少量架构技术。
目录
相关文章推荐
奇舞精选  ·  vercel是如何做微前端迁移的 ·  昨天  
奇舞精选  ·  vercel是如何做微前端迁移的 ·  昨天  
架构师之路  ·  MySQL必知必会(再版上架,送10本) ·  5 天前  
架构师之路  ·  漏洞!近千块的技术大会,1折蹭? ·  5 天前  
51好读  ›  专栏  ›  细说云计算

UCloud云存储技术深度解析

细说云计算  · 公众号  · 架构  · 2017-05-15 21:03

正文

随着无人驾驶、机器人送餐等人工智能(AI)应用逐渐进入大众生活,再加上资本热潮的助推,AI的发展备受瞩目。然而,要真正实现AI从概念到落地,还必须具备足够的数据、足够的计算能力和足够的行业应用三个条件,而云计算恰好能满足这些要求。

当下,AI正与云计算进行深度融合,未来会变得更加智能,但在智能化的背后是对海量数据存储的刚性需求。据不完全统计,单是一辆无人驾驶汽车每秒产生的数据容量就在1G左右,相当于每秒发送20万封纯文本电子邮件或上传100张高清数码照片。因此,没有大容量和超稳定的存储系统,这一切都将无从谈起。无存储,不智能。为了更加清晰的了解云存储技术的实现过程,UCloud存储研发部将对云存储——对象存储(UFile)技术进行深度解析。

对象存储 UFile概念

对象存储(UFile)是为互联网应用提供非结构化文件存储的服务;相对于传统硬盘存储,UFile具有存储无上限、支持高并发访问、成本更低等优势;解决业务架构的文件存储问题,有效降低海量文件的存储成本,支持热点数据的高并发访问,提升终端用户访问体验。

单地域UFile存储架构六大集群

1)ULB(UCloud Load Balancer) 实现外网的对接及接入层的负载均衡与容灾处理,该模块通过定期向接入层模块端口发送心跳以检测接入层模块的可用性,发现异常模块及时进行剔除;

2)接入层提供文件访问服务,该模块为无状态设计,因此可以平行扩容及缩容;

3)索引层保存文件对象的元数据信息,包括对象名称、对象大小、创建时间、存储位置等;

4)存储层是实际存储文件数据的模块集群,主要实现文件数据的多份分布及高可靠存储;

5)数据处理层主要实现UFile图片及数据处理,包括图片的实时裁剪、缩放、旋转、水印、格式转换、信息获取等操作,客户还可以使用自己的通用计算镜像对数据进行处理;

6)名字服务主要实现索引层及数据处理层模块的容灾剔除,以上3个集群的模块会定期在名字服务注册自身服务,当其中有部分模块因机器异常或者网络中断导致无法提供服务时,名字服务会将该机器从名字中剔除,并且通知接入层,从而实现后台模块的容灾剔除。

重点设计解析
UFile索引层设计

UFile索引层为一套分布式KV存储系统,其主要目标是保证UFile对象元数据的高性能、高可靠、高可用及可扩展的存储,其主要分成两层架构:

1)索引接入集群解决索引存储集群的管理及元数据的分布,这一层模块为无状态设计,通过名字服务实现异常状态的容灾剔除;

2)索引存储集群实现对象元数据的分布式存储,每个对象元数据将存储3份,保证数据的可靠性及高可用性,同时对象存储采用SSD(固态硬盘)作为存储介质,也保证了元数据存储的高并发低延时访问特性。另外,该模块采用固定集群规模的方式进行管理,每个集群支撑的存储量、访问量固定,存储可实现以集群为单位的水平扩容,保障业务不断增长情况下的高性能稳定访问支持。


UFile存储层设计

存储层包括三种类型模块集群:

1)存储节点,该模块按照固定大小的集群(称为“Set”)进行组织和管理,每个集群支撑的存储量及访问量规格固定,同时该模块可根据存储量需求横向进行无限扩展,从而满足客户无存储量上限的数据存储需求。每个对象数据在存储层存储三份数据,通过对异常情况的及时处理和坏盘的及时修复,保证数据极高的可靠性(99.99999999%);

2)SetMaster,该模块进行Set状态的管理,接入集群通过SetMaster决定上传对象数据的存储集群,并执行数据的存储操作;

3)OsdMaster,该模块每个Set有一套,实现Set内部的存储路由管理,并对各块磁盘的状态进行监控,及时剔除异常磁盘。


UFile存储路由算法设计

UFile存储集群采用去中心化设计,数据存储采用固定的路由算法进行存储,由于存储集群的规模为固定,因此路由表也为固定,这就保证了存储系统的简单性及稳定性。下面详细介绍UFile数据存储层的路由算法设计。

第一步,在存储集群上线时,每个集群的OsdMaster将磁盘信息进行组织,生成一个存储路由表,该路由表的每个项目对应3块分布在不同机架及存储机器上的磁盘,对象数据将按照路由表指定的位置进行存储。

第二步,每个存储在UFile上的对象数据将被切分成若干个4MB的数据块,称为分片。UFile为每个对象分配一个单集群内部唯一的对象ID,对象ID与分片编号拼接获得分片ID,通过字符串哈希算法获得哈希值,并在路由表中找到该分片存储的3块磁盘位置,由UFile接入模块将该分片数据提交到3块磁盘上。

第三步,当单块磁盘出现异常时,OsdMaster会发现这一情况,并将该磁盘标记为异常状态,当接入层写入此数据时,会只写入两份数据,待磁盘修复后,再从这两份数据中拷贝一份数据到已修复磁盘,恢复数据的多份高可靠存储。在出现一个哈希表项中有2块磁盘不可使用的情况时,为保证数据安全性,该存储集群将不允许写入操作,写入操作会被切换到其他集群提供服务,从而保证UFile读写的高可用性。

UFile功能优势
  • 海量存储

存储空间无上限,无需考虑存储空间扩容问题,单文件最大支持5TB,适用于音视频、图片分享等UGC类应用海量文件存储。

  • 高并发

支持高并发访问,突破传统磁盘I/O限制,满足高访问量及高下载量业务需求,适用于高下载量、高访问量应用文件的存储。

  • 访问加速

存储文件结合CDN分发加速,国内外500+加速节点,有效降低访问延迟,提高下载速度,提升全网终端用户的访问体验。

  • 安全可用

所存文件保存三份副本,分布存储于不同存储集群,即使单份数据损坏也不影响存储文件的可用性,同时保证文件安全。

  • 内容保护

可通过身份验证机制及防盗链设置控制终端用户访问权限,避免因内容被盗用产生的版权损失和恶意访问的流量消耗。

  • 图片处理

提供图片处理服务,支持图片缩放、剪裁、添加水印等功能,并提供多种尺寸设置,满足移动端、PC端等多终端访问需求。

  • 更低成本

存储单价仅为云硬盘的1/2,下载由CDN分发,降低存储及网络成本,按实际使用量计费,无存储及带宽资源闲置浪费。

  • 开发支持

完备的API接口及SDK开发包支持,适合多种语言,与原有业务无缝结合,能够极大缩短开发周期,帮助业务快速上线。

总结

在大量企业对数据存储需求强劲的背景下,UCloud对象存储系统应运而生。本文通过介绍UFile产品、底层文件存储系统实现细节、功能优势,分析了UFile如何实现高可靠及高可用特性。

细说云计算

「细说云计算」是InfoQ旗下关注云计算技术的垂直社群,投稿请发邮件到[email protected],注明“细说云计算投稿”即可。