腾讯的硬盘里,有互联网的昨天今天和明天
一觉醒来,全国人民都在找自己的18岁照片,可是当年存在旧电脑旧硬盘上的照片现在早就不知所踪了。大伙儿一拍脑袋,没商量就去了同一个地方,QQ相册。
这群人,是腾讯最受爱戴的老CTO张志东亲手招来的孩子,被称为“Tony 的毕业生”; 这群人,是腾讯第一批底层硬核技术的探索者,是互联网技术史上的“别动队”; 这群人,也在漫长的时光里开枝散叶,成为腾讯从互联网公司向技术公司转身的中坚力量。
回想起来,那时候的日子特别轻松,有种恍惚还在学校的感觉。部门总共只有30多人,实际上卢山、姚星这些牛人导师只比我大几岁,当时他们也很年轻,时常会拿最新的技术给我们出些题目做做。
如果你下载一个电影,耗时10分钟还是20分钟,你感觉上区别其实不明显,反正都很慢。但是如果你刷一张图,1秒钟刷出来还是2秒钟刷出来,你的感觉就会天差地别。 虽然受 Google 启发,但面对这种海量小图片的存储模式,我们其实很难直接借鉴 Google 的架构,而是要自己独创很多技术。
我记得,当时春节我和老婆回她家,家人在那边其乐融融,我在这边抱电脑搬迁索引数据库,也顾不上亲戚怎么看我。。。
不仅要把上亿用户的数据都“打包”清楚,还要把索引也“拆分”明晰,这有点像把长城上的每一块砖都标号,然后拆掉从另一个地方重建起来; 而且为了挪动数据的时候不影响用户的正常使用,往往都要放在后半夜进行。
当时深圳机房的图片流量每天都创造新峰值,每多1G,对公网来说都是很大的挑战,我们也捏着一把汗。 而且对于腾讯自己来说还有个更严重的问题:深圳的机房已经全被填满了,扩容出来的存储服务器肉身都没地方放了。
两地实在太远了,专网也提供不了极端稳定的传输能力,况且还要额外花钱,本就不富裕的家庭雪上加霜。我们商量了一下,索性是技术人就对自己狠一点,来一次极限挑战,用公网把数据搬过去才说明我们掌握了最硬核的技术。
这个事情,和数据安全息息相关。每次出问题的复盘都是很严肃的。那时候开会,总是姚总一个人开骂,先骂一上午下午再干活。大家心里别提多难受了,憋足了劲想要把迁移搞成。
特别是腾讯推出“微云”之后,访问密度的差异就特别明显了。用户把资料传到微云上,有时候几年都不会看一眼。这些就成为了“冷数据”;而像一些游戏里的状态参数,恨不得每秒钟都要被改写,那就是超级热的数据。
例如,像农场、抢车位这种每秒钟访问3万次的数据就用全闪存的 T-Memory 顶住; 像图片索引数据库这样比较热的数据就存在 SSD 硬盘搭建的 T-SSD 系统上; 像日常QQ空间的图片就存在标准的 TFS 上; 像微云里用户上传的文件就可以存在成本最优的 BTFS 上。
我记得特别清楚,晚上十点十几分,我刚进海底捞,手机就响起来了,支持微信的存储系统莫名其妙地飙到极限。团队给我打电话,从后台数据来看,突然大家都在转发图片,发朋友圈。 由于隐私规定,腾讯不能查看用户发送内容,所以没办法直接确定发生了什么。。。幸好微信和我们都做了一些缓冲预案,能保证微信不挂掉。
那时候我才第一次意识到,微信赞助春晚,我们要帮着扛流量,别人赞助春晚,我们也要帮着扛流量。。。
1、云存储系统的索引全部基于QQ号(或类似的ID),而其他公司就没有QQ号这个东西,很难调整; 2、云存储使用的对外接口都是自研的,和国际不接轨,客户用起来莫名其妙,不方便; 3、云存储的成本有点高。当年腾讯自己产品的盈利能力强,并不那么在意成本,但是你要拿到市场上按照市价卖,就会赔钱。
他们最先利用内存数据库和纠删码技术做了“分级存储”,大大降低了存储成本(就是在第三章我们讲到的那个); 然后他们着手开发了不基于QQ号的索引系统 LavaDB,大大扩展了腾讯云存储的适用范围; 随后,他们又忍痛割爱放弃了自研的数据接口,全部改成了兼容 AWS S3 的国际接口。
1、抛弃了12个存储服务器组成一个 Set 的结构,而是每个存储服务器都通过网络和其他的存储服务器相连。这样的话,所有服务器就连成了一个更为细密的海洋。 如此,就不存在为了每个 Set 预留20%空间的操作了。整个海洋可以存储到99%,余下的空白量的绝对值还是很大,不会出现溢出的问题。这大大降低了成本。 2、每一台服务器上存储的内容,都是系统自动调度的——同一个磁盘上,这个区域存储着QQ空间10年前的照片,下一个区域就存储着微信群里刚刚分享的视频。 如此,就不存在某台服务器满载,某台服务器闲置的情况,整个存储海洋的接口使用率是平均的。这大大提高了性能。
打个比方,假设每块硬盘就是一个人。以前的系统要保证100个人里面有1个人都不生病,这个还容易一些。现在的系统要保证10亿人里1个人都不生病,这对防疫系统的要求就相当高了。
数据的计量单位从小到大是MB、GB、TB、PB、EB、ZB,YB(每大一级就增加1024倍)。现在互联网公司的数据量都是 EB 级别的,而理论上这个分布式数据库每个集群就能放下1ZB的数据(1024PB),如果未来全世界建立1024个集群,总量就能达到 1YB。而YB的全称是 YottaByte。那我们的存储系统就叫 YottaStore 吧。
我们就是要比别人便宜的情况下,自己还能赚钱。
作为存储团队,原来我们的成就感来自于支持的业务发展,例如QQ空间有了6亿用户,微信有了10亿用户。但是现在我们会看营收,从1亿到10亿,从100亿到200亿。这种成就感是完全不同的。
赞 (0)