2014-7-29 09:56| 发布者: tianzc| 查看: 235| 评论: 0
摘要:在过去的14年里,互联网经历了一系列的产品变迁,其中很多产品死掉了,很多产品勉强的活下来。身处其中的人们,品尝着诱惑、惊喜、失落、振奋等百般滋味。这14年间,有一个起初不起眼的小产品,非但没有死,反而日渐长大,成为了一个用户群最为庞大的互联网产品。 附:讲座PPT下载 12月21日在北大英杰交流中心举行,由腾讯大讲堂、腾讯QQ团队和CSDN共同举办,也是QQ14周年校园行的最后一站。在本次活动中,腾讯即通平台部高级工程师王帅从技术角度详细地从文件、音视频说起,介绍了QQ亿级业务是如何演变而来的,也深入剖析了为了微软的MSN在中国会因水土不服而逐渐没落的原因。 图:腾讯即通平台部高级工程师 王帅 以下为腾讯即通平台部高级工程师王帅的演讲实录: 王帅,腾讯即通平台部高级工程师。重庆大学计算机硕士毕业,07年3月加入腾讯,一直在QQ后台工作。目前主要负责QQ实时语音、视频、文件等大数据传输业务。 MSN在中国为什么会水土不服? QQ最早大家都拿它跟MSN做比较,也有人说QQ抄袭了MSN,但众所周知,QQ推出的时间比MSN要早,所以所谓的抄袭并不能成立。MSN在中国早期时发展得非常好,但为何后来渐渐没落?在此,我也讲一下MSN在中国为什么会出现水土不服的原因。其实文件时很重要的一部分,大家都知道很多白领之间上班要传文件或图片,还有进行截图等操作。 因为我是做纯技术的,所以我就技术讲得稍微详细一点。QQ传文件还是相对简单的,大家都知道两个QQ传文件之前肯定有消息通道是可以互相发送消息的,我从一个用户本地的IP端口绑定一个可传输数据的端口,对方也绑定一个,他们相互告知对方,接下来他们比较容易建立一条直连的通道,在什么情况下这个通道是建不成的呢?可能是因为防火墙或NAT,那建立不成我们要怎么办?方法很简单,就是给他一台服务器帮他做数据中转,把数据传到服务器上,然后服务器帮他传给对方。 这个可以通过Traceroute来说明一下,说简单一点,我两个用户,一个用户是深圳市电信,另外一个是上海市联通,这个用户给这个用户发一个数据包,发一个Hello,这个数据是怎么走的?首先数据会直接走到北京,在北京做数据交换,再走到上海,为什么会这样?我们再回过来看这儿,因为他们一个是电信、一个是联通,我们知道中国运营商排第一位是电信,第二位是联通,第三位是移动,第四位更难了,排第四位是长宽,我是指专门PC上的。以前是接电信和教育网,现在教育网非常少了,很多学校都已经不是教育网了。 这种情况下,这就是中国特色,为什么叫中国特色呢?接下来我讲先中国特色再讲美国怎么样。中国特色的运营商首先运营商之间没有省级交换节点,可以看到千里迢迢跑到北京做数据交换,交换点是最容易网络拥塞的,跨ISP的用户进行直接连接效果一般比较差,用户连接和自己ISP不相同的服务器效果也会比较差。如果美国不让连接,我会告你,这就是跟中国不一样。 我们会看到中国是工信部管运营商,搞各种扩容,扩容的原因就是各个网用户在增长,目前我们得到的资料是核心交换有四个,北京有两个,广州一个,上海一个,其他省份不管怎么样都要到核心交换点进行数据传输,这样很容易网络拥塞。真正来技术问题了,好的传文件关键点有什么,刚才说了架构点是什么,其实这些MSN用过的同学都知道,他的速度比QQ慢很多,包括大家在微博搜索,其实文件的口碑一直是最好的。刚才说了,MSN这些都做了,它在中国还是水土不服,其实我理解,首先他的技术不畅,但是外企一些流程会比较多,还有外企它的一个资源申请都会非常麻烦,因为他的很多思想还是美国那种思想,我们传文件需要五个关键点:
海量服务器的管理 对于海量服务器,我们如何进行管理?这里讲了,这些是给用户中转数据用的,比如说这两个用户想传一个文件,我们会给他分一台中转服务器,这里面可能一共两三千台服务器,而且分布,可能分布在十几个省,通过一个配置中心,但配置中心怎么样管理一两千台服务器,配置中心的功能功能很简单,就是管理这些服务器的状态,还有当前负载。什么是当前负载?就是当前它最大提供一千个人视频,现在有八百个人视频了,就是这些信息。首先配置中心是整个集群的运营核心,因为它要管理这些服务器,另外它就要负责中转服务器的配置,各种集群的配制,还要收转服务器当前的状态,有没有死机,这些都做好了,你才能做到这句话,但这话说起来容易做起来却有难度。就是我们都会有一套系统,然后那系统里面都有你名下管理服务器各种信息,有些同时就在服务器里面写上这句话,机器故障直接重启,不用给机器负责人打电话。用这句话,当然不是说死机不管,第二天再去弄,几千人视频不了没关系,同时几万人视频这种是不行的。 比如说这可能字太小了,分辨率不够高,我简单说一下,这个就是我们每个月或者每个季度定期发的一封邮件,我们有接通率测试,由一台机器自动给我们所有员工打一遍电话,接到电话按照语音提示按一下#号就挂掉之后,如果直接挂掉也不会有直接惩罚,但是总监或者领导会找你谈谈话,而且这里有接通率的记录,上次记录,变化情况是怎么样的。 比如说我管理我下面那些人,怎么样提高他们的意识,这次没接到交一百块钱,下一次小组活动用,他做久以后自然有这种意识,但是在初期的时候你需要用手段让他提高这种意识。刚才讲了,你负责服务器多,手机不能关机,刚做有点朝阳,做一年有中年的感觉,做三年以后,所以说海量服务器一定要把服务器管理好才能一直保持这种状态。 接下来就讲一下配置中心到底是怎么样实现管理这些海量服务器的。他主要分两块信息,一块静态信息,它是在数据库里面,是通过可视化配置,程序启动后把数据从数据库刷如共享内存。动态信息就是由各个服务器定时上报而来,为什么分静态跟动态呢?静态是在配置方案开始就要配置好,而且很容易看到的。 静态信息可能包含这些东西,它不会随着你运营过程中改变而改变,比如说他服务器已经有这么多台,每一行代表一台服务器的话,那这些服务器服务场景就是电信到电信,还有一些场景是联通到联通。第二列标识这个服务器服务这种场景下区域是哪些?比如说他服务场景是广东到广东的电信对电信,这台服务器的唯一ID就是这里唯一ID,这里没有什么特别意义,只是区别它。这台服务器就是在汕头、在天津,这台服务器当前状况怎么样,大部分是可用,也有不可用,服务器最大承载多少人同时传文件,或者是音视频这里也有配置。大家可以看到每台服务器是不一样的,比如说差两年的服务器性能差一倍,这些都是静态信息,就是在你代码运行过程中,不会改变的,这个是动态信息,就是由各个服务器真正数据中转服务器上报而来的,它会改变的,比如它会记录最后上报时间是什么。它当前服务器负载是什么。因为这个还是稍微偏专业一些,可以把它理解为一个Excel,刚才讲了这个怎么管理它们,这个管理他们就是把这些信息提供给策略中心来用,策略中心就是来了两个用户,由策略中心配备一台合理的服务器。 音视频处理数据包的延迟 何谓音视频延迟?就是我一个数据包,一个语音包,从这个人开始说话,到我采集完,到我发给对方,到他真正听到,大概延迟现在一般在500毫秒左右,我们上次测在这个毫秒以内,这就要求你服务器的处理时间要非常短,而且不能有抖动,客户端那边也会做闭环测试,什么是闭环测试呢?这些都不要,我只从采集到直接收听花费是20毫秒,就是说一个数据从采集到真正播放需要20毫秒,没有任何干扰情况下。服务器处理数据包延迟非常小,做一个简单操作都会引起一段数据小搏动,比如说写字团这种就要慎用。 刚才讲了设计理念的变革,从瘦服务端到把服务器养成胖子,以前服务器要求流程很简单、很清晰的,很多的协议组合、逻辑判断都由客户端做,服务器主要是保证面对海量请求的稳定。 手持设备的崛起就需要更轻,更快速移植,这里面需要一些逻辑组合、协议控制、核心控制应该放在服务器。这个就是在音视频上新的挑战,以服务器为核心的云引擎设计,说白了就是客户端只是听命于服务器简单单一的角色,所以它能快速在各个不同版本间进行切换,依据网络的场景、FEC、Jitter Buffer大小去调整,还有终端的能力,CPU用的视频编解码都是耗CPU,还有网络抖动、固有的丢包都采用不同的策略。 总结:
提问:策略中心是一台服务器还是什么? 王帅:肯定不可能一台,所有腾讯基础服务部可能有单点故障。什么是单点故障,就是只有一台服务器死了就没有办法提供服务了,这种是不合格的。接下来就讲,他怎么把收集到的这些信息给策略中心去用,我从技术的角度去讲个,可能大部分同学都能听懂,首先得到双方的IP,就能得到二维数组,得到一个IDC,它的服务场景是这些,服务区域是这些,就是说这些机器都可以给当前这两个人去用,接下来还要上报超时的时间,所谓超时就是这台机器死机了,我们可以看到这台晚两分钟,我们可以把这台去掉。得到双方IP,先找到这列,再找到这列的子类,剩下这三台我可以选一台给当前人用。怎么用呢?这就是刚才讲的负载均衡,这里说一下机器故障可以安然睡觉怎么实现呢?因为已经做管理了,死机的服务器不会为用户提供服务了,这就是简单海量服务器的管理,它的原理没有复杂,就是状态上报一种处理。 |