对于腾讯来说,存储是几乎所有业务开展的基础,存储技术和架构的迭代是腾讯最关注的技术方向之一。
腾讯存储技术支撑了微信、QQ、QZone、邮件、微云、流媒体等内部业务的快速发展,同时也为快手、OPPO、小红书、海康、猎豹、58同城等几十多万个客户腾讯云上客户提供了可靠的服务,整体数据量高达EB级别。
腾讯存储技术演进历程
腾讯存储技术的演进基本上可以分为以下阶段:
1. 海量存储(~),支撑社交网络,构平台,撑海量
腾讯存储技术的发展,起源于前后国内社交网络兴起。QQ、QZone(相册)业务的发展带来了海量的图片、文件、头像等UGC数据。
为应对海量存储的挑战,腾讯云开始自研并构建了几套核心存储平台,包括TFS(通用性存储平台),CTFS(数据频删型存储,用于短期临时存储),TDB(基于HDD的键值对存储平台),TSSD(基于SSD的键值对存储平台)。
2. 跨地分布(~),分拆大体量业务,搬数据,腾机房
~,QQ相册等大体量业务的访问量、存储量迅速增长。为应对底层机房,带宽等方面的瓶颈,存储平台启动了相册一通点等项目,海量业务数据开始从深圳向西安、杭州、广州、上海等地分布,访问带宽同时调度到天津、南京、东莞等成本更低的一通机房。
3. 冷存储(~),分离冷数据,降份数,省成本
腾讯相册、微云、邮件等业务在业务发展中,逐步积累起来较多的UGC历史数据,对业务的运营成本构成了较大的压力。前后,腾讯基于纠删码研发了BTFS平台(Backup-TFS)。对业务进行了数据分层,增量数据访问量大,用TFS存储3份;历史冷数据从TFS平台剥离出来,从3副本存储转向1.33副本的纠删存储,降低了存储成本。这个阶段中,腾讯优化BTFS,使得部分低访问量业务的增量数据也可以直接存储进来。
4. 云存储磨合期(~),重构系统,兼容接口
在磨合期,腾讯云发现外部第三方业务在体验、可用性、成本等诸多运营方面有极高的要求。为支撑云的需求场景,腾讯云对存储的接入层和索引层架构进行重构,架构扁平,模块精简,同时开始舍弃私有接口,转为兼容AWS S3接口与功能。重构后存储架构支撑了腾讯云COS近几年的发展。(注:对象存储COS,CloudObjectStorage,是由腾讯云推出的安全稳定、便捷易用、低成本的海量云端存储服务。)
5. 多云时代(~),对标行业,比成本,拼质量
,腾讯云的数据量突破一个EB,成为腾讯存储历史上的一个标志性节点。
AWS S3的存储访问接口已成为公有云上对象存储事实上的行业标准,存储成本、运营质量成为客户上云选择产品提供方的主要考量。
在这一阶段,腾讯重新审视了机房,机型等方面的技术演进趋势,重构了公有云对象存储引擎(详解见下文)。新架构采用大容量高密度存储机型,针对存储SET导致的闲置资源分散和隔离等多个主要矛盾,进行了全面应对和优化。
对腾讯云存储大致了解后,看看各阶段一些重要节点事件,来了解腾讯云存储技术演变背后的逻辑。
七八个人搞了TFS
,QQ空间发布,大量存储需求爆发。
腾讯云副总裁 、云架构平台部总经理谢明,以及腾讯云架构平台部系统研发中心总监郭振宇受到谷歌“三大件”论文的启发,与团队中七八个人开始做通用性存储平台TFS,把RPC框架和通信协议、存储相关的数据迁移、巡检系统等逐步做起来,第二年初就将这套存储系统用到了 QQ 相册。
腾讯要解决的主要问题是小文件,但是TFS并不适合做小文件存储,因此又创建了KV存储平台——TDB。
再往后,CTFS应运而生,用于短期的临时存储。腾讯云的业务中又出现了一些需要频繁删除的场景。
除了这些,团队还针对业务场景进行用户体验优化,例如优化了索引。原先的文件系统索引有很多层,拓展性强,但是每次硬盘要进行多次访问。当文件较大,硬盘多次访问会造成延时。
为此,TFS设计之初就力争硬盘只访问一次,把chunkID(段表示)和FID索引放在一起,用户读取索引时就能知道图片在哪块盘上,只要访问一次硬盘就能读取图片,减少磁盘IO次数提升了用户体验。
之后,TFS又陆续被用于网络硬盘、QQ邮箱等产品中。
腾讯史上最大数据搬迁
时间到了,腾讯日益扩张的业务与激增的数据量使得存储的访问带宽问题暴露出来。
那时,腾讯几乎所有的数据都在深圳,但当时国内的骨干网宽带与现在不可同日而语。QQ相册高峰时占用40-50G,而1G的流量对公司的网络就已经是很大的负担了。因此,在控制带宽高峰的驱动下,腾讯开始考虑把存储向西安搬迁。
当时搬迁的第一个设备的数据量是100T。现在看来,这个数字也许并不大,但当时却是腾讯历史上最大的一次数据搬迁,因为那时候基本上没有专线可用,数据搬迁都是趁着半夜公网空闲搬迁过去的!
微信红包爆发带来存储压力
- 年,移动互联网崛起。在这期间,腾讯发生了两件大事。
一是微信开始流行,除夕的微信红包,连带着朋友圈的图片分享让微信火爆起来。除夕和元旦凌晨12点到12点10分这十分钟内,抢红包和图片发布剧增的数据。让腾讯的存储系统面临着史无前例的压力。为此他们开始对大型缓存系统、延时通知等技术进行改进。水来土掩,兵来将挡,到腾讯存储已经可以应对除夕夜突发性问题。
第二件大事是网络硬盘的发展给存储带来很大的成本压力。作为一项免费服务,如何控制成本成了谢明团队的又一个巨大的挑战。为此,团队于完成并上线了基于纠删码的BTFS平台。
业务也是技术发展的助推器
腾讯云存储技术能力的不断完善,也离不开业务不断提出的挑战。
一个是微信与海外同类产品之间的竞争。为了在竞争中获得优势,微信团队就基于存储做了加速通道,从而加速了国内外数据传输,速度超过Line和WhatsApp。
另一个是游戏的出现,QQ农场相信对于每个90后都不陌生,,全民偷菜的热情曾让腾讯的服务器数度崩溃。当时,农场访问量巨大,但腾讯还没有全存储系统,TDB是基于SAS盘存储的,在每秒数万的并发访问下,底层存储系统的延时和请求吞吐挑战非常大。
腾讯基本上把公司所有闲置服务器都用在QQ农场,但仍远远不够,需要大量采购服务器。团队一方面通过疯狂的机器扩容,另一方面基于数据规模不太大但是访问量极高的业务特点,快速研发了全内存的分布式存储系统,在保障数据安全可靠的前提下,并发访问的性能得到极大提升。快速上线、快速验证,完全自研,团队再次闯关成功,“修为”再上一层楼。
从开放平台到服务B端,很多事情变了
面向B端客户提供服务,是腾讯云存储技术的另一个关键节点。
从起,腾讯就开始做开放平台云。,腾讯云正式面向B端用户全面开放。
在计算云迅猛发展的大背景下,行业竞争日益激烈,客户可选择面较大,对功能、性能、质量、价格等方面的需求不断增强。
此外,从腾讯云自身现状来说,数据量的不断增大,随之带来软硬件成本、运维成本优化的收益日趋增大。
同时,行业下游的基础设施,如大型数据中心、新机型、新硬件、各种存储介质、网络环境的不断发展演进。相比十几年前,单个IDC机房从数千台,到腾讯目前超百万装机量超大规模机房;网络从千M网卡,发展到百G网卡,整个基础设施发生了天翻地覆的变化。
这些变化,都在呼唤腾讯云在存储系统架构上做出改变。
YottaStore,打破传统IT存储系统架构
腾讯云从开始构思,并于正式启动了下一代云原生对象存储系统设计——YottaStore。
名字由来
YottaStore这个名字实际上取得很有深意,腾讯云架构平台部存储研发中心总监杨奋强介绍了Yotta这个词背后的含义。
对于做存储的同学来说,经常会跟GB、TB、PB、EB这些概念打交道。现在全球互联网非常大的巨头公司的数据量基本都是在EB这个量级。EB上面是ZB,全球互联网巨头数据起来也就几个ZB;ZB上面是YB,也就是YottaByte,目前全世界所有的数据加起来也不会超过一个Yotta。另外这个单词中文译名“有他”,给人安全可靠放心的感觉,系统的Slogan就是“存储有他,能力无限”。
集群规模:YottaStore是一个云原生的数据存储系统,这个系统的理论极限是一个集群可以管理超上千万台服务器。而要管理这上千万台的机器,元数据管理只需要用600G左右的空间,用一台机器就能存下索引结构,这在业界是绝无仅有的。
资源利用率:当集群规模非常大的时候,其实1%的剩余空间量都是非常非常大的,所以YottaStore的硬盘利用率非常高,加上实时回收机制,有效数据占比达90%以上,这在业界非常少见。
另外,由于大集群的全集群均衡能力,服务器资源使用均衡,所以资源使用率也可以做得很高,这样服务器硬件可以最低位配置,所有尖峰流量在这个异常大的池子里,波澜不惊。所以无论是成本、还是服务能力,都很大程度受益于超大规模集群带来的红利。
灵活性:YottaStore单集群可以零研发成本同时支持各种不同的冗余模式,像两副本、三副本、四副本、五副本,任意的EC编码,任意的M、加任意的N、任意的算法;单AZ、双AZ、多AZ也都可以灵活支持;另外,整个集群可以自适应各种各样不同的机型,包括JBOD;各种硬盘介质,如磁带、HDD、SSD等,存储的拓扑结构、混合部署也都可以任意指定。这样的灵活性在业界首屈一指。
运营能力:以存储节点迭代升级为例,十万百万规模的一个集群,上线升级速度都是一样的,如果是同构的数据格式,分钟级就可以完成整个升级过程;而如果是异构的数据格式,集群可以在短时间内自动将数据格式透明收敛到最新版。
可用性:YottaStore开始上线大规模支撑业务的前三个月一直维持百分之百的可用性,到现在一年半了,系统一直单人值周零故障运行,在业界是极少见的。可用性数个9很容易,但是可用性100%非常难。例如机房网络抖动,如果容错做的不够好,就很容易就会出现失败。但是YottaStore在初期上线的很长一段时间都是百分之百的可用性。
业务支撑
YottaStore是腾讯云对象存储服务COS的数据存储引擎,支撑起整个腾讯云海量数据的存储。COS的标准存储、低频存储、归档存储、多AZ存储等产品形态都是基于YottaStore推出。
得益于YottaStore在集群规模、资源利用率、灵活性等方面的技术突破,近期COS重磅推出的深度归档产品刷新了业界存储的最低价:1分钱/GB/月。
激烈竞争环境下,成本是存储业务胜出的关键因素之一。YottaStore是如何优化成本的呢?
资源利用率提高:基于前文所述的在超大规模集群和超高资源利用率上的技术突破,随着资源利用率的增高,单位存储的成本随之降低。
高密硬件适配:随着磁盘容量扩大,单机磁盘数变多密度增高,成本也随之降低;此外,CPU、网卡等新硬件的变化都会导致成本降低。
场景优化:针对海量小文件的用户场景,YottaStore采用多种冗余和数据组织策略持续优化成本。
此外,对于一套承载着用户业务数据的存储系统来说,数据一个都不能丢、安全可靠是最重要的承诺。在数据可靠性方面,YottaStore在数据冗余、数据巡检、数据修复、数据校验等方面做了很多工作,保障了数据的可靠性。
到这里,我们回顾了腾讯云存储技术发展的全部历程,也得以从中一窥互联网大厂在底层存储技术与业务发展紧密结合,“配合作战”成功的秘诀,希望对业内有一定的启发。云时代下,腾讯云存储还将有哪些创新,我们拭目以待。