问鼎腾讯最高技术奖,新一代云存储YottaStore的初心与初见
序曲
腾讯成长的背后,用户看到的,是走心的产品;用户看不到的,是背后各个基础服务无时无刻的保驾护航。
作为赖以生存的基础服务之一,腾讯的存储服务,扎根于QQ相册时期,成长于PC互联网浪潮,并伴随着腾讯C端产品不断的发展与完善,以及海量数据的增长,经历了一次又一次的打磨和历练。
但是,从2017年开始,互联网竞争进入下半场,产业互联网浪潮纷至沓来,存储面临的场景,无论是ToC还是To B都已经出现了颠覆性的变化。云上的需求空前爆发,作为产业互联网的底座,腾讯云尤其是云存储等基础设施产品承受了前所未有的压力。
故事,就此展开。
应“云”而生
2017年底,准确的说是2017年12月30日到31日,也许大家都还记忆犹新,当时一波回忆杀刷爆朋友圈:最后一批90后度过了他们的18岁生日,集体告别了少年时代。而当时的情况是:大量的用户涌入QQ,翻找他们数年甚至是十多年前的相册去下载老照片。这样一来,大规模的冷数据访问,给腾讯TFS平台(腾讯自研海量文件系统)带来极大的访问冲击;同时,下载的老照片又集中发布到朋友圈,再次带来一大波上传突增。
但是,在腾讯内部,12月30日到31日正是元旦重保的最后冲刺阶段。
当时的过程非常紧张:“我们使用的还是小SET模式(以12台服务器为一个单元构成一个SET,SET间相互独立)的TFS存储引擎,在元旦请求突发之上突如其来的再来一波暴涨,所有的运维同事都时刻盯着我们的存储SET,数十个仓库几千号SET,不停的通过SET开关写来尽量使SET的请求量保持在一定水位,稍有不慎调整错一个SET就可能导致数据访问异常。但就算是这样,也没有办法阻止大量老SET的负载一涨再涨,因为底层数据已经落地到具体SET内服务器上,而SET间的数据是没有办法迁移均衡的,最终只能通过上层http模块不断的柔性来提供降级服务。”想起当时的情形,存储运维团队的Andyer依然心有余悸。
其实,诸如此类的问题,在云计算兴起之后更是不胜枚举。诞生于2006年的TFS在互联网新兴阶段,完美贴合并适应了当时的机房规模、硬盘密度,以及IDC间的网络能力。但是在To B的云场景下,规模化大行其道,无论是平台系统依赖的外界环境,还是爆发式增长的业务场景都已经截然不同。
“那会儿云上客户老是吐槽我们应对突发的能力不行”,Andyer回忆,“COS(对象存储)是从2015年开始做起的,刚开始其实大家也没觉得是多大的业务,直接基于内部已有的存储引擎TFS设计业务系统。但是经过一年多的发展,COS的规模已经完全超过之前的预期,预算也是一加再加。不仅内部每年都有着超预期的增长,外部友商的“肉搏式”拼杀也愈演愈烈。TFS在过往的十年时间很好的支撑了To C业务的海量增长与运营,但是在To B时代,对于平台而言更多的业务场景是事先未知的。”
而且上云更是一场持久战,需要应对的挑战更加复杂。
以往TFS的SET模型的运营,资源利用上无法做到百分之百调动各SET的闲置资源,往往需要额外储备大量设备用于故障恢复和应对突发,端到端的资源利用率也很难达到一个理想值。相比于国内其它云厂商在云计算领域的先发优势积累起来的规模效应,腾讯的引擎系统很难在短期内建立规模优势,简单说卖的越多,亏的越大。
大家明白,是时候做出改变去拥抱全新的云时代了。
凤凰涅槃,必须浴火才能重生。一个更适合云时代的新存储系统呼之欲出!
破釜沉舟
要做新系统、怎么做,大家一拍即合。但是做新系统,什么样的节奏和模式,却是当下很重要的难题。
起初团队的思路是维稳优先,兼顾新系统。显然,现有系统垮了,做新系统还有什么意义呢?但后来发现,维稳就像黑洞一样,人力投进去,始终出不来;稍微投入一些人力做新系统,又要调拨回去维稳。最后老系统维稳也非常艰难,很多人想着去做新系统;而另一方面新系统也迟迟没有进展,毕竟维稳优先级是第一的。
于是存储研发团队负责人Richie坐不住了,给云架平负责人Regan写了一封信,其中一段原话是:“现状下,我们至少有一部分人,不再是兼顾,不再是优先云,而是要专职云,这部分人做的事是突破口,需要冲出去。一个好了,带动更多的云上产品,这样才能看到希望。”
“总结来说,目前是偏守,维稳优先,兼顾新系统;这里想的是偏攻,大力改革,锐意进取,执着攻云,兼顾维稳。当然很多事情,是不破不立的。”
写下这封邮件的当月,最终大家讨论后决定:兵分两路,一方专职维稳,一方专搞新系统。回头看当时的大家的决定是非常对的,最后的结果很好:
1. 维稳的同学,坚守阵地,抗住压力,让问题逐渐收敛的同时,还进一步降低了成本,使命必达,最终让TFS如期度过了YottaStore从无到有的接力关键时机。
2. YottaStore的同学,全身心投入到新系统中,尽管新成立的团队,人少新人多,但是大家干劲非常足,心无旁骛,最终赢得了时间,保证了新系统的如期上线。
峥嵘岁月
顶级的系统,需要顶级的工匠精神,整个系统研发历时一年多,直到2019年才整装待发。
“那真的是一段峥嵘岁月,有《圣斗士星矢》中参加过第一次圣战的黄金圣斗士那样的感觉”,Richie回忆研发YottaStore的日子。
当时周边各种声音不少,“搞这么大的一个项目一年才上线,上线后业务已经发生巨大变化了,这系统还有用吗?为什么不小步快跑?有确定的预期,而不是这种投入大、风险极高的项目模式?”“你要挺住啊!大家期待着呢”。但无论如何,当时团队从来没有丝毫怀疑过选择和路径,丝毫没有任何“失败”的想法。
在团队内部,大家对问题的讨论,加起来少则几百次,多则上千次。一个模块设计的文档,不少同学review后打回去重写。一次不行、二次这几个点有问题,三次那几个点有问题,四次重新想的思路仍然遇到新的问题,而最终六次七次、甚至十几次的时候比比皆是。但同学们更是卯足了劲,不屈不挠,一次次“打击”后,仍然信心十足战斗力满满。这里只有纯粹的技术,这里的目标也只有一个:在有限的时间内把技术做到极致。也正因为这种只专注于事情纯粹的氛围,最后注定了YottaStore必成的结果。
同时,项目组成员们拧成一股绳,互帮互助、相互协作,即使不是自己责任内的事情也会非常热心的给予帮助。“19年项目测试阶段(临近发版的时候)发现了一个core,是一个内存越界的问题,堆栈已经破坏了,比较难排查。虽然是core在单机存储服务,但是接入服务、均衡服务的研发都一起加入排查定位,最终还是搞定了这个难题。” 项目组的QA妹子Jeanne笑。
在YottaStore上线冲刺的最后关头,项目组的小伙伴们更是冲劲满满。“大家最近工作已经很辛苦了,要注意休息、注意身体”,那段时间,Richie经常在群里@几个“工作达人”。但是领导的@非但没有阻止成功,反而越是临近上线,大家的热情约高涨:测试跑过了就来完善周边、周边做完了就来完善监控、监控弄完了就开始研究版本变更效率……那段时间,大家仿佛有着用不完的能量,所有的人都为了YottaStore上线这一目标全力冲刺。
功夫不负有心人,YottaStore如期上线。
广州公有云3AZ(可用区)成为了云上第一个YottaStore集群,这个里程碑式的事件,不仅标志着YottaStore真正意义上具备了云上售卖的能力,更是让腾讯云存储历史性的向前跨越一大步,因为腾讯云存储第一次具备了跨AZ存储能力!上线后的很长一段时间,尽管广州地区的网络以及硬件服务器有各种各样的问题,YottaStore始终保持100%的可用性。
从另一个角度看,YottaStore也为大家勾勒出了一条条完美的曲线。
上线后,一堆穿着大裤衩拖鞋的程序员们,一起去吃了顿甚是豪华的自助餐,各个开心的像个孩子一样。吃饭前,有同学问到: “上线了不应该是守着屏幕看有啥问题么?” 大家会心一笑: “不用看了,完美!”。那笑容里,凝结了每一个人的自信与自豪,而这份从容与淡定,也始终随着团队一起,勇往直前。
一鸣惊人
随着YottaStore上线及快速铺量,同学们的心血汗水最终结出了丰硕果实。
作为新一代云存储系统,YottaStore的能力可以说是非常强悍:
首先,在集群规模上,作为一个云原生的数据存储系统,YottaStore理论上一个集群可以管理超上千万台服务器,而要管理这上千万台的机器,元数据管理只需要用600G左右的空间,仅用一台机器就能存下索引结构,这在业界绝无仅有。
其次是资源利用率,配合实时回收机制,YottaStore能够将硬盘利用率提升到很高的水平,有效数据占比达90%以上,这在业界非常少见。而在灵活性上,YottaStore单集群可以零研发成本同时支持各种不同的冗余模式,整个集群可以自适应各种各样不同的机型,包括JBOD;各种硬盘介质,如磁带、HDD、SSD等,存储的拓扑结构、混合部署也都可以任意指定,这样的灵活性在业界首屈一指。
此外,在运营能力,系统可用性以及成本控制等层面都实现了巨大的突破。
目前YottaStore已经支撑着微信、QQ、微视、腾讯视频等大量业务的在线和备份数据,并通过腾讯云对象存储COS产品服务于数十万外部客户。
“在整个YottaStore的项目过程中,不管是研发运维还是测试大家都是顶着巨大压力的。因为整个部门甚至整个产品线包括合作团队们都对YottaStore寄予厚望,期望YottaStore的上线能够在产品能力和功能上带来新的突破。
实际上YottaStore的成功上线也确实奠定了腾讯云在整个云存储行业的地位,在保持极高服务质量的同时带来了存储成本的大幅降低。不仅巩固了老客户,更是带来了一大波新客户的接入” Andyer笑着说道。
作为新一代云原生存储系统,YottaStore的原生3AZ特性有力的支撑了大量视服务可用性为生命的头部客户。
某头部电商:“我们电商业务数据存储依赖腾讯云对象存储COS,因此对COS的服务可用性以及数据可靠性要求极高,必须做到万无一失。和腾讯云COS团队沟通后,团队很快拿出了基于YottaStore的多AZ存储方案。在线上多AZ容灾演练中,单AZ故障发生后,读请求不受影响,小文件写秒级自愈至100%成功率,大文件写在人工降级后秒级恢复,完全满足我方预期。当前上海的核心业务数据已经全量迁移至多AZ集群。”
而YottaStore所带来的低成本、高稳定更是得到了等众多客户的交口称赞。
某头部直播公司:“腾讯云对象存储COS本身在性能、安全上的底座能力,以及价格优势,为公司做离在线混部,解决大数据算力荒、存储荒带来了突破性的转变。”
曾经让Andyer头疼不已的元旦春保也不是个事儿了,公司内的业务小伙伴很开心,“COS存储服务在春节视频红包活动中很好的支撑了视频红包存储和分发,保障了活动的稳定。特别是COS存储从TFS切换到YottaStore存储引擎后,YottaStore充分调动集群内所有存储节点IO能力,在春节视频和图片这种高峰值的上传下载场景中,能够有效节省存储资源。对比20年的元旦春节保障,使用的COS存储设备量减少了一半以上,在链路上也更精简稳定,为业务活动稳定进行提供了坚实的保障。”
凭借YottaStore的优异表现,存储团队也因此一举问鼎2021年度腾讯最高技术奖项-腾讯年度技术突破奖。
结语
在今年团队内部的YottaStore座谈会上,Richie希望团队可以记住两个“初”:一个“初”心,一个“初”见。
不忘“初”心,砥砺前行,YottaStore团队会带着自己的理想和使命感完成内心的愿景:做全世界最大最好的存储系统。
人生若只如“初”见,YottaStore从无到有,大家一起拼搏过战斗过,未来新老同学们将保持初见,扬帆起航,一同迈向云计算星辰大海。
故事并未结束,我们勇往直前!