程序员 php apache linux命令 google Python linux shell centos mysql nginx Ubuntu 微软 Firefox 开源 Android java HTML5 Windows wordpress

实时Web时代即将到来:不只谷歌Twitter玩得起

国外媒体近日发表文章称,实时Web并不只是一种时尚,而是一种技术趋势。将来,实时技术将成为一种默认技术,不是只有谷歌、Facebook和Twitter才能玩得起。 

以下为文章内容摘要:

实时Web并不只是一种时尚,而是一种技术转移——即时访问Web。实时技术使Web应用变得更快,在某些情况下,几乎与桌面应用没有区别。

实时技术最初的灵感来源很简单——开发经典街机游戏《小行星》(Asteroids)的在线版本,不同的是可以多人同时在线游戏(MMO)。


德利斯勒“失败版”MMO《小行星》

得益于强大的网络后端的支持,在线版《小行星》需要支持数百人同时游戏。更重要的是,要做到实时效果,每个游戏玩家都能毫无延迟地看到每次射击,每个动作。

对于Hacker news 社区而言,这是一件不幸的事情,因为他们最初发现,这根本无法实现,只是一个愚人节玩笑而已。不难理解,这让不少游戏玩家感到失望,但是该创意听起来确实可行。随着技术的发展,似乎距离该目标已经不远。例如Node(用来编写高性能网络服务器的JavaScript工具包)的出现,使得用很少的几台服务器即可同时处理大量用户的指令。此外还有WebSocket协议,使得用户之间的持久连接变为可能。

但JavaScript开发人员赛博•李-德利斯勒(Seb Lee-Delisle)仍然认为不可行,他认为,一旦真的推出MMO版《小行星》,其弹性和稳定性均无法保证,因为游戏要经常交换数据、调整设置、检查冲突等。德利斯勒说:“告诉大家一个不好的消息,如果真的推出MMO版《小行星》,那么游戏也将很乏味。”

实时Web成为现实

而另一名开发人员维克拉姆•尼扎(Vikrum Nijjar)则希望将其作为一个挑战,认为是可行的。幸运的是,尼扎与其他开发人员合作,已经开发出了使之变为现实的软件Firebase。这一次,尼扎的MMO版《小行星》变为了现实,同时也登上了Hacker News的首页。

尽管也略微有些缺陷,但却保证了所有动作的实时显现,做到了最小化延迟。

“实时”是技术界颇受欢迎的一个流行语,是开发人员、商家和公共关系代表等用来描述一种体验或即时在线互动的。例如,Twitter被赞许为实时信息源,Facebook也利用好友的更新和图像实时更新用户首页,一个科技博客网站也承诺对内容进行实时更新。

但是,在上述所谓的实时服务中,都存在延迟,短的几秒钟,长的几分钟。只是我们没在意,或没必要计较而已,因为我们最终获得的内容仍具有价值,让我们满意。尽管如此,事实上的延迟不可否认。在聊天或发表评论时,这些延迟是可以容忍的。但随着数据的越来越复杂,在某些情况下,如大型多人同时在线游戏,延迟是不可接受的。

今天的许多互联网应用的运行模式是:客户端向服务器发送数据请求,然后从数据库抽取数据。如果数据发生任何变化,应用自身需要再次与服务器进行核实,免得用户手动刷新页面。这种反复连接服务器的过程被称为“轮询”(polling)。

但在实时环境下根本没有轮询,而是订阅(subscriptions)。一个客户端订阅数据库中的数据,无论何时当数据变化时,客户端都将接到更新。这种变化无需轮询,是因为它们是主动推送的,正如某些通知被推动给智能手机。

Web浏览器将成为主角

创建富媒体实时应用的Web框架Meteor联合开发人员马特•德波伽里斯(Matt Debergalis)称:“我们当前正处在这种转移时期,这种转移通常每15年发生一次,所有代码都要重新编写。”

德波伽里斯解释道,在20世纪70年代至80年代初,软件主要运行在大型主机和服务器上,用户使用非智能设备连接。到了80年代后,客户端-服务器模式出现,随后互联网诞生。

德波伽里斯说:“大约15年后,Web再次要求我们重写所有软件。因为我们将从桌面应用转向新的模式,这一次软件再次运行在服务器上。”但不同的是,这一次的终端是Web浏览器。

如今,桌面软件华丽的用户界面正在消失,取而代之的是一些简单的Web功能。从Gmail和Rdio即可看出这一变化,访问终端是Web浏览器。


Rdio应用

这就是实时连接,应用在外观和表现上与桌面应用几乎没有区别,我们预计将来的互动也没有区别。Rdio就是一个出色的Web应用,在浏览器中运行,与在桌面上运行几乎没有区别。

当然,实时技术并不是什么新鲜事物,低延迟的软件和硬件,以及对信息的几乎同步访问已存在多年。但开发人员菲尔•莱格特(Phil Leggetter)称:“没有人在金融以外的领域使用。”

莱格特称,只是最近几年,实时技术才从小众领域走进大众市场。Twitter是一个转折点,使得信息可以被实时发现。但莱格特称:“下一个目标是实时投递。”

经济实惠的Node

与任何开发人员谈论实时技术,都将不可避免地谈到Node。Node是一款用来编写高性能网络服务器的JavaScript工具包,今天的许多实时应用都采用了Node。

当然,Node也并非唯一的实现方法。Twitter服务器实时搜索结果使用的就是前端系统Blender,后者依靠的是JAVA网络框架Netty。而Facebook采用的是Apache Web服务器和自主开发的HipHop。

不同的是,Facebook、Twitter和谷歌不仅仅是发送和接收信息,他们还需要大量的计算能力来注释、分析和返回数据。而一些小型开发人员的需求很简单,使用Node较为实际。

实时应用通常并不需要大量的计算能力,因为这些需求可以交给专业服务来解决,如亚马逊的EC2。相反,他们需要以最快速度移动、路由和连接大量数据的能力。

这就是速度至关重要的原因。在德波伽里斯所说的Web浏览器终端世界,限制用户体验的只有两个因素,数据传输速度和同时连接服务器的数量。而Node可以在很大程度上同时解决这两大问题。

对于Facebook而言,这可能不是什么问题,因为他们对定制的PHP和Apache服务很满意,也拥有足够的资金用来升级。但对于小型开发商或开发团队而言,利用最少的资源开发出更具吸引力的实时体验无疑至关重要。

前景光明

经过多年的实时技术研究,开发人员莱格特对此持乐观态度。他说,我们已经看到一些产品和服务,虽然没有将实时作为卖点,但确实是依赖于实时技术,这是一件好事。

莱格特说:“这意味着,我们开始看到实时技术的实际应用,而不仅限于理论。这项技术很酷,让我们一起努力,充分挖掘其使用价值。”

德利斯勒同样持乐观态度,称MMO版《小行星》只是一个开始。他说:“实时技术将成为一种默认技术,不是只有谷歌、Facebook和Twitter才能承受得起。” 

延伸阅读

评论