对象存储(Cloud Object Storage,COS)是腾讯专有云提供的一种存储海量文件的分布式存储服务,用户可通过网络随时存储和查看数据。所有用户通过 COS 都能使用具备高扩展性、低成本、高可靠和安全的数据存储服务。
互联网已进入数据大爆炸的 ZettaByte 时代,云计算最基础的服务——存储,面临着巨大的挑战。随着用户数据爆炸式增长,业务需求越来越高,传统分布式存储系统已经逐渐力不从心。YottaStore 应“云”而生,YottaStore 是腾讯专有云对象存储(COS)的新一代超大规模云存储引擎。
YottaStore 支持任意多副本及纠删码的冗余模式并存。在大幅提升系统可用性、可靠性及性能的同时,存储成本大幅降低。单集群百万节点的系统高度自治,全自动化的数据巡检、修复、均衡、回收、扩缩容、请求流量调度以及故障感知处理,最大化保障了系统的服务质量,极大降低了运维成本。YottaStore 目前已经在腾讯公有云多个集群上线,运行质量远超 SLA。
整体架构
YottaStore 系统在主要业务上采用了分层设计,提供了更好的可扩展性、可维护性和可迭代性,主要分为以下几层:
除此之外,YottaStore 系统还设计了几个子系统来完成其他功能,全面提升系统可用性、可靠性以及可维护性:空间分配子系统、校验修复子系统、数据均衡子系统、健康管理子系统、集群管理子系统。
数据冗余存储方案
编码冗余存储方式
Erasure code 是一种编码技术,它可以用 K 份原始数据,编码生成 N 份编码数据,并能通过 N 份中的任意 K 份数据,还原原始数据。EC 技术应用于分布式存储系统,可在保证同等的数据可靠性的前提下,大幅降低数据冗余,降低存储成本。
假定编码方式为 K-N,副本冗余度为 N/K,原始数据编码后形成等量大小的N份数据,N 份数据中丢失任意不超过 N-K 份数据,原始数据都可以被恢复。举例11-21的编码方式,假定原始数据大小为11MB,经过编码后形成21份大小为1MB的数据,这21份数据中丢失任意的10份数据,都可以通过其他的11份数据来恢复。
流式在线 EC
传统的采用 EC 冗余方案的存储系统,往往是将数据先以多副本的形式存储,积攒到一定的数据量以后,再离线编码为 EC 冗余形式存储。而 YottaStore 系统实现了在线 EC,用户数据直接在接入层做 EC 编码并直接写入存储节点。
相比离线 EC,在线 EC 优势显著:
- 无 buffer 层存储,无二级索引:简化系统设计,提升数据可靠性,降低存储成本。
- 删除空间实时回收:传统的离线 EC 的设计,用户删除数据后,会在数据编码块中留下空洞,回收这部分空洞空间则需要在空洞率达到一定程度后对数据做重写,空间回收不及时,回收过程还要浪费大量 IO。YottaStore 采用流式的在线 EC 设计,配合自研的、直接操作块设备的单机存储引擎,实现了删除空间的近实时回收。此举大幅降低存储成本,还避免了重写操作占用 IO,影响线上吞吐能力与服务稳定性。
- 写性能提升:大幅节省写操作的 IO 和网络流量放大,提升写吞吐。
- 读性能提升:避免了离线 EC 的二级索引读和重建读放大。
灵活的副本冗余方案
YottaStore 实现了多种存储模式在同一个集群并存,可同时支持任意 EC 编码和多副本冗余模式。既避免了为不同冗余度搭建多个集群造成的资源浪费,又能够根据实际场景灵活选择冗余度,兼顾可用性、可靠性和成本。
技术亮点介绍
超大规模集群(单集群百万节点)
YottaStore 通过将传统分布式存储系统的大Master 进行了全方位、彻底的拆解,突破了单点Master 的瓶颈,元数据分级自治有效减少元数据量,内部逻辑按功能拆分子系统,做到了单集群可达百万节点。
Top N Return & Backup Request机制
YottaStore 采用 Top N Return 的方式来进行写请求的处理,能够有效的规避故障节点带来的请求失败,提升可用性。同时,Top N Return 还能够有效舍弃长尾请求,提升服务质量。
YottaStore 采用 Backup Request Top N Return 的方式降低读延迟。理论上只需要读K个副本即可解码出原始数据,为了提升读可用性,降低读延迟,可适当增加1-2个并行的 Backup Request,其中任意K个请求返回成功即可完成数据解码,返回用户。
自适应流量控制
YottaStore 的接入模块内建路由策略模块,对每个请求细化到对存储节点的健康状态、运行状态以及 IOPS 次数的实时评估,从而做到精细化地、自治地、自适应地控制流量进出,保障服务健壮稳定。
YottaStore 的存储节点采用分级令牌桶设计,达到了优先级越高的流量,带宽/存储资源越优先满足的效果。
全局负载均衡
根据系统的物理资源使用情况,采用合适的策略,调整 Vlet 的分布,优异的全局数据均衡策略,使得平均磁盘利用率可达95%以上。
多级巡检修复机制
YottaStore 系统引入多级巡检(单机存储引擎巡检、数据一致性巡检、数据完整性巡检)机制,确保第一时间感知到数据异常并修复,极大提升了数据可靠性。YottaStore 在数据存储节点上实现了磁盘级自动运维与数据修复联动机制。
用户无感知的快速热升级
YottaStore 创新性的引入了管理区和隔离级别这两个概念,在管理区和隔离级别的基础之上,YottaStore 实现了用户无感知的快速热升级。
工业级一致性协议库 SCAL
SCAL 是一个工业级实现的分布式一致性协议库。整个库采用纯异步方式实现,并做了一系列领先业界的创新设计和与业务高度吻合的优化实现。
结语
海纳百川,有容则大。对象存储 (Cloud Object Storage,COS) 新一代的存储引擎 YottaStore,除了代表着对于它的存储规模能达到“无限大”的期望,也希望我们的用户存储有他“Yotta”,能够感受到安心、放心。腾讯专有云存储团队将持续努力,用最大的热情,最扎实的技术功底,为广大用户保驾护航,征服科技创新的浩瀚星海!
-END-