十年前在腾讯做技术,是一种什么样的体验?
那是年的一个周五晚上,Ben清楚地记得,那天一坐上公司班车就累得睡着了,直到一路被载到终点站,然后一脸懵逼下了车。在这之前,为了修复多个机房同时掉电对某国民级应用的影响,Ben和团队十几位小伙伴已经30多个小时没合上眼。
因为城市建设或自然灾害,机房掉电、电缆挖断这样的“黑天鹅”事件几乎每天都在发生。庆幸的是,腾讯技术团队在做好机房容灾的同时,对数据安全更是重视,除了在线多副本之外,早在那时就建立起了完备的数据灾备系统。
每一次的全力作战,换来的是对数据安全、技术升级愈加上紧发条。
每一项成功的业务背后,必然有一个成功的技术团队做支撑。21岁的腾讯,服务器总量超过了万台,数据存储规模达到EB级别,带宽峰值达到了T,在全球布局超过个加速节点……ToC产品动辄数亿次的访问,ToB业务安全、稳定的交付,都用到了海量的技术。
站在年的尾声,让我们来讲述一段关于腾讯技术的进化史。
-,海量之道
“化繁为简,好钢用在刀刃上”
QQ是腾讯最早的核心业务,它的架构演变是腾讯技术发展和成长的一个缩影。
年,整个腾讯只有台服务器,那时3G时代还没有来临,却背负着QQ这一“甜蜜的负担”——QQ同时在线人数短短四年内增长了倍,到年2月正式突破了0万,在线人数每提升一个量级,技术难度也陡然上升。
年,QQ游戏也超过了万在线,那是游戏行业黄金期的开启。随着QQ秀、QQ游戏、QQ空间等互联网增值业务的兴起,互联网世界正在向用户敞开大门。用马化腾的话说,那也是腾讯业务发展的海量时代。
社交加上大量日志、相册的存储,对当时腾讯的互联网基础设施架构提出了全新的挑战。
那时,中国互联网基础设施还不发达,很多用户都是拨号上网。北边是网通,南边是电信,分布过碎,成本会增加,数据一致性很难保证,用户体验会不好。于是,腾讯花了很大力气做三网融合,这在当时是一个很难的技术。
年推出的QQ空间是一个宽带应用,跟IM、QQ游戏这种窄带应用有很大差别,对网络等基础设施要求更高,用户的交叉访问也带来很大的技术挑战和难度。
面对海量服务,腾讯的方法是化繁为简。做海量业务的时候,技术难度就如同造房子,不光造得高,材料还要省,成本还要低,所以就得抓住关键技术支撑点,把好钢用在刀刃上。
在很多技术细节上,腾讯是精打细算的,主张将更好的技术资源节约出来留给关键使用场景,才能支撑QQ的整体上升。比如有很多场景未必要用通用的数据库来解决问题,用一些简单的数据技术处理方式,反而成本更低、效率更高;早期QQ有很多关于会员的标记,腾讯舍不得为每一个标记用1个字节(Byte),而用的是1个比特(Bit)。
这套基于“有损服务”、“动态运营”、“大系统小做”、“过载保护”、“柔性可用”、“先抗住再优化”等价值观和方法论的不断优化架构体系,被腾讯人称为“海量服务之道”。
为了推广这套理念,腾讯联合创始人、前CTO张志东亲自挂帅,在公司内部搞了一系列关于海量之道的面授课程。一时间,海量服务之道被腾讯后台和开发同学奉为圭臬。
“大师兄”张志东早期为QQ设计了整体架构,这个架构支撑着QQ业务从无到有,直到后来上亿用户同时在线。由于没有钱买那么多的服务器,反而迫使团队自身不断优化,从而奠定了腾讯在中国首屈一指的技术服务。
腾讯早年有很多业界领先的技术。比方说,QQ同时在线人数从10万到万,单机处理能力已经超过同行业10倍以上。当时腾讯有一个重要的技术创新——PCT架构,它使得别人的一台机器只能做0个在线连接时,腾讯能做到1万。
此外,QQ空间时期的支持LRU的sharememorycache,基于裸设备的filesystem等,对当时的腾讯甚至整个互联网行业来说都是拓荒者。
多年后,担任公司副总裁的姚星在内部交流时回忆,年他刚加入腾讯时,公司特别重视公共组件技术,当年就有一个著名的公共组件叫TLib,基本上覆盖了当时所有的BU(当时的事业部),很多代码也都是公司创立以来就有的,“只不过随着业务的演进,很多公共技术失传了”。
,互联网大爆炸
“业务越繁杂,意味着爆炸半径越大,技术难度越高”
腾讯技术体系经历了一个从即时通讯到社交图片、由窄带到宽带的“从瘦到胖”的过程,当时腾讯希望用很传统的Web型业务架构解决问题,而通过解决这些问题,最终在海量存储方面积累了丰富的经验。
这里,不得不提到一个对腾讯技术演进至关重要的应用——QQ相册。年开始,QQ空间大火,那时数码相机开始在国内兴起,QQ相册上线后,很快日均上传量超过0万张,访问量级和用户规模与Facebook分庭抗礼。
从几百万到0万,再到后来的一天1亿的上传量,对带宽、服务器消耗很大。当时,国内的存储服务器要么是原来的小型机,要么是磁盘柜或刀片机,性能和成本都遇到了非常大的挑战。
年,腾讯开始研究互联网场景下的海量存储架构,结合自身业务场景自研了分布式存储TFS(TencentFileSystem),支持了QQ相册每天亿级别的图片上传。
这是当时国内第一个真正意义上面向互联网海量数据存储的技术平台,推动了分布式存储技术的发展。
从年起至今,TFS作为数据存储的底层平台,一直承载着包括QQ相册、微云、