9158的门槛不低
2015-05-28 11:22 9158 门槛 不低

但跟你互传的人的网络情况可能不稳定,比如我在给你互传时,你正好在下电影,那视频传输就会卡住或者延迟,所以我们还是通过服务器来中转数据。你在优酷、土豆看视频,网络卡了,缓冲个三四秒再看也行,但 9158要是缓冲个三四秒,你就觉得这延迟也太大了。

韩国最早做出了视频交友的十人房模式,就是 10 个人进入同一个聊天室,每个人都能看到对方。我们觉得它在国内会有更大的空间,就去做了同类产品。

2004 年要实现视频交友还是蛮难的。那时的中国互联网是窄带,而且 PC 的 CPU的性能比较低,多媒体数据算是蛮严重的负担。我们尝试了多种编码方式,把视频的码率做得非常非常小。为了减少音频数据,我们参考了视频会议的标准,也就是电话的音质,唱不了歌的。

为了降低带宽的占用,我们试过 P2P。但跟你互传的人的网络情况可能不稳定,比如我在给你互传时,你正好在下电影,那视频传输就会卡住或者延迟,所以我们还是通过服务器来中转数据。

我们花了大概半年时间做出自己的十人房,在这个基础上我们又做出了视频交友社区和秀场。2005 年有了优酷、土豆后,我们考虑到积累起的用户量也没往那个方向转,我们觉得自己这条路是有前途的。

十人房时期对我们的要求不是很高。上传视频占用了一路,观看视频的人又占用了一路。如果一个人上传九个人看,那这就是占用了 10 路。十人房最多也就是占用 90 路左右的通道。在这个行业,“路”是指流媒体占用的通道。

我们开始做百人房的时候,数据量开始呈几何级数上升。3 个主播每个人的视频都要同时转出去几千次。比如 500 人房里,那数据量就是 497×3。而且我们的数据传输是实时互动的过程。你在优酷、土豆看视频,网络卡了,缓冲个三四秒再看也行,但 9158要是缓冲个三四秒,你就觉得这延迟也太大了。

解决高并发量所带来的延迟和丢包,花了我们很多精力。国内的网络状况非常复杂。南方主要用电信,北方用网通,而电信和网通之间不互通。二三线城市和一线城市也有区别。每个城市都有机房和带宽的容量,如果需求量过大就会转到主干网,一线城市可能只中转一次,而三四线城市要经过三四个中转站。跳转的过程会丢失数据包,这样会进一步增大延迟。我们的用户主要在二三四线城市。

在这种情况下要让用户享受到稳定流畅的视频,就得优化数据传输的过程。我们在很多城市都布置了机房,建立了我们自己的CDN(内容分发网络)。如果一路数据要从县级市到主干网,它不用像过去那样逐级前进,我们的系统会找到 ping 值(测试网络畅通的命令)最小的节点直接让数据通过,就像虫洞一样。距离短,丢包了可以多次重发,对方总能收到数据。

我们自己写了 CDN 的核心架构,还向外公司的 CDN 服务。大概 2010 年开始,我们的 CDN 就初具规模了。9158 现在一年的 IT 费用大概有两三千万元,其中光带宽就有上百 T,差不多是业内最大的。

与这样的后台系统相搭配的是我们的客户端。这个行业看上去是在做音视频互动聊天,其实可以分为两个产品,一个是网页,一个是客户端,只不过最直观的表现形式是2009 年左右开始崛起的网页。

网页版秀场用有的都是第三方开发好的成熟模块,比如流媒体可以用 Adobe 有的产品。而客户端所有的功能都要自己写代码,你找不到成型的模块,只有很小的零件。我们把这些零件再组合成模块,然后再把它串联成客户端。

如果用网页的方式做秀场,对用户而言,打开网页,秀场就出来了。而且所有的公司想做就能做起来。它方便是方便,但丢了自己的灵活性,它想改什么都改不了。比如Adobe 的流媒体的网络协议用的是 TCP,但 TCP 协议下根本无法降低延迟时间,所以它们只能做单麦(指的是一个上传视频)。网页版秀场就只有一个主播,她不在,房间里就没人了。

客户端则对开发人员的要求比较高,开发量也很大,但我们想做什么就做什么。我们用的网络协议是 UDP,它允许你控制丢包的过程,这样 9158 客户端卡的几率就很低。而且我们是多麦,这个主播上来唱一首歌,下一个主播轮上去又唱一首歌,9158 的内容会比较丰富,用户的忠诚度也比较高。

9158 一直把客户端做得很小。早年间的网络情况不太好,用户的下载速度有时候只有十几 kb/S,如果安装包体积过大,会延长下载时间,用户有可能中断下载。2006 年左右进入宽带时代后,各种工具类的客户端都越做越大 , 我们还是在追求更小的安装包。带宽确实上去了,但用户玩儿的东西也更多,还有很多软件在后台传输数据,如果我们也很粗犷地去占用用户的带宽,可能会让用户的网络变卡。

而且客户端也是成本啊。做客户端需要很强的推广渠道,一个安装包多一兆,一百万个就是多少兆?我们有段时间一直在抠哪些模块可以缩减掉。9158 历史上最大的客户端也就 20 多兆。

把客户端做起来的公司是能够长期生存下去的,QQ 如果不是客户端,腾讯也做不了这么大。我和傅总的技术积累更多在客户端上,但我们不是顶级高手,只能算中上水平。不过,技术能力不光是指写代码的能力,还有对这个行业的把握和对产品的理解。

很多问题都是在产品的实际使用中被用户发现的,解决这些乱七八糟的事情时我们就积累了丰富的经验。如果其他人也想做客户端,不管他的开发能力多强,他都要把我们走过的路再走一遍,这是省不了的。

我们做到现在,看上去好像有运气,有侥幸,但那也是我们一步步争取过来的。我们的门槛其实蛮高的。