为什么Google的第一个网页那么简单?为什么腾讯只给QQ的会员标用一个字节?
微信、手机 QQ、手机 Qzone、游戏和应用宝,是腾讯移动端的五大平台。这些有着海量用户的产品运营时,涉及到无数细小琐碎的技术细节。比如《腾讯方法》一书中提到,微信和手机 QQ 的 SDK(Software development kit,软件开发包)决定了第三方游戏的接入以及用户数据隐私。移动游戏的支付系统和数据开分析则需要大量的跨部门技术协作。统筹这些技术细节的正是腾讯自己一套完整的技术方法论。
在首届腾讯云技术峰会上,腾讯公司副总裁姚星完整的介绍了腾讯整体技术发展脉络。
海量阶段 :1998~2004 年 代表产品:QQ 和腾讯游戏
腾讯技术演进的第一个阶段是「海量阶段」。
2001 年,QQ 的在线用户总数就超过了 100 万。2004 年 QQ 的用户量是 500 万。同年,QQ 游戏用户也超过了 100 万在线。
虽然用户在快速增长,但实际腾讯并没有探索出能战胜同期对手的盈利模式。1998 年,新浪和网易都在做 IM。因此腾讯只能选择用更好的技术、更低的成本去支撑服务,和对手拼成本。
当时,在后台单机支撑能力上,当 QQ 用户从 10 万到 100 万时,单机处理能力在行业里超过对手的 10 倍以上。这个数字相当于别人的一台机器只能做 1000 个在线连接,腾讯能做到 1 万。这就是海量阶段时一个比较重要的技术创新——PCT 架构。
腾讯非常讲究在一些关键的支撑点把技术上的好钢用在刀刃上。
QQ 有一个具体的案例。QQ 有很多关于会员的标记,腾讯舍不得为每一个标记用 1 个字节 Byte,而用的是 1 比特 Bit。在主要存储上用的都是文件存储。
腾讯认为很多的场景未必要用通用的数据库来解决问题,用一些简单的数据技术处理方式,反而会成本更低效率更高。这种对技术的精打细算,将更好的技术资源节约出来,留给关键使用场景。
在这一点,谷歌和腾讯有着相似的判断。Google 的第一个网页多年始终如此,非常简单。大家认为这是一种极致的表现。实际上通过「抓包」发现,谷歌的首页是小于 1.5K 的,一个以太网包就能把它打开。
面对海量,能做到的是化繁为简。
运营阶段: 2004~2008 年 代表产品:QQ 空间
2004 年后,QQ 空间产品诞生。
QQ 空间里的用户不只关注自己发布的内容,还要看别人发布的内容。用户的有交叉访问带来技术挑战和难度。QQ 空间的应用跟 QQ 或者游戏这种窄带应用有很大的差别,QQ 空间是一个宽带应用,对带宽等基础设施要求更高。
当时中国的互联网基础设施还不发达,很多用户都是拨号上网。北边是网通,南边是电信,还有现在归属电信的教育网,交叉访问效果没有现在好。
腾讯花了非常大的技术力量做三网融合。在当时是很难,分布过碎,成本会很高,数据一致性很难保证。但是分布得不够,用户体验不够好。在整个运营的过程当中,这是一个非常难的技术。
另外一个挑战是产品需求变化逐渐变大,外界环境变化也非常大。
比如 2004 年显示器的屏幕是 800×600 的,后来屏幕逐渐变高端,变宽。QQ 空间原来一排设置 5 个图片,总共有 4 行,20 张。现在变成一排 7 张,但再用 4 行,28 张图片带来的访问量就比原来要加大,可能会导致页面显示速度的下降。
图片的规格也在变化,原来只保存一个缩略图和或者原图大小就足够了,后来为了适应各种手机,图片规格越来越多。当产品需求的变化,客观环境变化的时候,运营上、技术上就有了极大挑战。
伴随这些技术细节的变化,腾讯的机房也从小变大。原来以为千兆可以解决一切问题,现在要万兆机房。
柔性阶段 :2008 年~2012 年 代表产品:微信
2008 年以后,QQ 和微信的日活跃量之和已经超过 10 亿。QQ 和微信对用户而言,就像是水和电的基本生活需求。基础性的产品,即使出现微小的使用问题都会影响到用户的正常生活。腾讯面临的新技术问题是:规避「天灾人祸」,把产品做得更加的牢靠。
人祸很容易产生,比如研发人员写了一个 BUG,或者运营人员操作失误。
天灾也会经常遇到,一些地方城市建设,挖断了光纤,或者出现一些自然灾害,洪水、台风或地震。不可预知和无能为力是面对天灾最大的难度。
腾讯逐渐发现,其实用户对产品的需求有一个适应的过程。对于灾害要倾尽全力防范风险,但是当你无法超越自然灾害,就要逐步降级柔性。
比如 QQ,最重要的功能要要保证能登录。其次用户要知道自己的信息是完整的,没有被篡改。然后看到好友的资料还在,好友列表没掉。接下来能够进行一些简单的文本的通讯,通讯的时候还能发一些图片,启动视频的会话。从基础体验到复杂体验逐层保证,技术控制的艺术和难度不断攀升。
开放平台阶段: 2012 年至今 代表合作产品:滴滴、58
2010 年腾讯提出开放平台的概念,连接不同行业的解决方案,到现在腾讯开放自己的云平台,典型有两个例子——滴滴和 58。滴滴是出行行业的老大,58 是分类信息的老大,腾讯为这些合作伙伴提供了十几年积累的云服务,比如 IDC 机房、基础网络和跨运营商 BGP 接入资源。以及一些高性能组件,比如安全、图像处理、自然语音的工具。
但腾讯贡献的最大价值其实是从 1998 年开始,经历 QQ、QQ 空间、微信积累的技术方法论。
腾讯技术方法论分为三点:动态运营、云中成长、有损服务
1 动态运营的关键要素:
- 小步快跑,快速求证用户猜想。
- 灰度发布,在黑与白之间,平滑过渡的一种发布方式。
- 大系统小做:分进程,尽量保证进程的功能单一。
- 边运营边重构,细分实施,持续服务。
- 干干净净:建立信息,勇于承担,边打扫边生活。
- 工具齐备:自动化部署、监控,大数据分析。
- 追求小规模团队,成功的产品多由小团队开始尝试,简单的产品不断创新。缩短上线时间,不断迭代。
2 云中成长的含义:每个团队虽然有很多牛人,但却存在一定的局限性,把更多的技术交给更专业的人做,使用云架构。
3 有损服务。如何在遇到灾难或者用户突发高峰,继续服务好用户?在条件不允许的情况下要降级处理,进行「有损手术」,并非最重要的功能弱化,在压力过高的时候做逻辑性处理,减轻后端服务器压力。(结合《腾讯海量产品之道》。)
题图:海洛创意