最近看到一些介绍WebRTC ( Web Real-Time-Communication) 的文章,个人以为这是一项非常令人激动的新技术,所以写了一点感想在这里和大家分享。
很多时候我们会听到“有划时代意义”这样的字眼,往往名不副实,而从目前了解到的情况来看,WebRTC应该担得起这样的称赞,有专家认为这是自2004年AJAX技术面世以来最大的技术创新,实际上尤有过之。AJAX的局部刷新页面技术谈不上是多大的独创,在2000年左右,本人供职的硅谷一家公司就已经发明了类似的技术,还申请了技术专利,只不过不是用XMLHttp来实现而已,也没有AJAX这么一个动听的名字。后来2001年我们回到深圳,带领团队研发将大型PB(PowerBuilder)程序自动迁移到Web的产品时,更是将网页局部刷新技术用到极致,也是我们打动客户的一个杀手锏。
WebRTC比AJAX有更深远影响的一个主要理由,是IT技术潮流又重新回到了胖客户端Rich-UI的路子。WebRTC的核心就是点到点(Peer-to-Peer)之间的各种数据(包括文件、图片、声频和视频)实时交互,既然前台客户端之间如此的哥俩好,也就意味着后台服务器基本可以歇着了。不知道大家有没有注意到一个很有意思的现象,几十年来IT技术的发展似乎不停地在画圆圈,从最早的大型服务器加前台的木偶终端开始,业务运算全部在后台的服务器上,前面的终端上基本什么独立自主的事也干不了;随着80年代微软的崛起,胖客户端程序(Client/Server)逐渐流行,到Windows95出现时,C/S架构发展到了鼎盛时期,当时在硅谷只要懂MFC/VC++或者Visual Basic的程序员就不愁找不到工作;然而盛极必衰,到90年代中期以后以Netscape为代表的Web浏览器出现并迅速风行一时,胖客户端由于部署的高代价和跨区域使用的不便,又逐渐被人们抛弃,胖服务器端(Browser/Server)架构到了本世纪初也红的发紫,大家出门如果不蹦几个B/S的buzzword都不好意思说自己是IT的从业人员,但是浏览器在Rich-UI上的先天不足和诸多限制还是让大家头疼,所以后来有了DHTML和DOM,又有了AJAX,再加上随处可见的Flash Player插件,无一不是在客户端做文章。
其实自己在IT技术大潮从C/S转向B/S时就有些不以为然,瘦客户端尽管有很多的优点,但是一个显而易见的问题是造成了极大的资源浪费,个人电脑芯片的发展日新月异,现在随便一个桌面电脑就比当年70、80年代的大型服务器的运算功能要更强大,如果程序都是B/S架构,运算和业务处理都在后台进行,还要这么好的个人电脑干啥?更要命的是,当初设计B/S架构主要是用来做企业级应用解决方案的,同时在线的用户数量顶天了不过几千乃至上万人,B/S架构应付起来很轻松。但是随着B2C应用的迅猛发展,在线用户数量的直线暴涨,瘦客户端、胖服务器架构迟早要出问题。
果不其然,随着近年电子商务的兴起,大型电商碰到最难缠的技术挑战就是如何在超大流量下保持网站正常运行,围绕着这个核心问题出现了种种的技术架构和解决方案:从最开始的物理分离Web服务器和数据库,到使用Smart Client来增加客户端的页面缓存,到使用DNS负载均衡以增加硬件,到使用反向代理软件Nginx+Squid来将静态或相对静态的页面进行缓存,到使用第三方CDN (Content Delivery Network) 服务来加快网站反应速度,到使用ESI (Edge Slide Include) 来将动态页面中相对静态的片段进行缓存,到使用MemCached系统将数据库中重复读取的数据缓存到内存中,到数据库的分库、分表、垂直分区、水平分区,到基于LVS (Linux Virtual Server)的数据库双机、多机热备,到增加通用的框架如DAL (Data Access Layer) 来实现分库分表的数据访问,到数据读写分离和廉价存储方案,到现在进入大型分布式应用时代和廉价服务器群时代。。。
如此种种令人眼花缭乱的技术都是为了解决同一个问题:前端百万级别甚至更多的在线用户同时访问一个在线商城让网站后台要崩溃了!尽管有了如此之多莫测高深、让人肃然起敬的最新技术,大型电商的网站还经常出现宕机崩溃的现象,最近一个著名的例子就是今年六月份江浙某大型电商网站做店庆活动,之前商家砸了上亿元的广告费,不料广告效果太好,活动当天登录上来的用户太多,造成该网站几乎整整一天不能下单,商家损失惨重,也成了竞争对手的一个笑柄。据说该网站的主要技术架构设计还是由某个大名鼎鼎外企的中国团队来主导的,看来也不可迷信跨国大公司的技术能力。
随着WebRTC的逐渐浮出水面,人类有史以来第一次可以在全球范围的点到点之间非常便利地、非常低成本地进行实时数据交互和沟通,这对广大的网络用户来说绝对是一个天大的福音,对IT从业者来说也提供了一个全新的天地。信息的交互和沟通永远是IT业界的主旋律,15年前微软推出COM/OLE技术时的空前盛况依旧历历在目,自己作为IT新丁和数千工程师一起挤进位于硅谷中心Santa Clara市的会议中心大厦,看投影大屏幕上盖茨亲自在西雅图主持发布大会,大赞特赞自家的COM技术如何了得,可以让局域网内不同的软件之间进行交互,大家当时都觉得耳目一新、非常有创意,而现在技术已经发展到可以直接进行互联网范围内不同浏览器之间的交互了,真是长江后浪推前浪,前浪死在沙滩上!不过当年微软的COM/OLE是出了名的晦涩难懂难用,本人就曾经为了COM对象不能释放、VC++程序无法正常关闭而挠破头皮、熬夜到双眼通红,希望WebRTC在易学易用方面能够超越前辈。如果像某网站Demo上所展示的,只需要少量的HTML和JavaScript代码就可以实现,那它的前景会更加远大,如同老美的口头禅“Sky is the limit”。
至于如何利用这项技术来为世人带来更多的便利,从而创造出更多的商机、开拓出更多的市场,相信已经有不少的个人和公司在考虑这个问题了。几家欢乐几家愁,数码影像的发展给柯达公司带来了灭顶之灾,WebRTC也会给目前的某些行业(譬如在线视频会议市场)带来极大的冲击,同时这也会给我们带来一个具有中国特色的困扰:政府今后如何继续进行网络监控?现在为了避免大规模的信息失控现象,我们“伟大的中国防火墙”(The Great China Firewall)可以将Facebook、Twitter之类的社交网站一概拒之门外,将来一旦WebRTC技术流行开来,民间的大规模信息交互不可避免,目前的网络监控技术对此几乎束手无策,难道有关部门要将所有运用此项技术的网站统统踢出国门?这也是值得我们关注的另类话题。
历史的进程往往有着惊人的相似之处,IT技术也是在螺旋形反复不停的向上提升着,最新的证明就是即将面世的WebRTC技术,让我们大家都拭目以待,看看这项近十年来最令人兴奋的技术创新能给我们的生活带来怎样的变革吧。