國外媒體近日發(fā)表文章稱,實時Web并不只是一種時尚,而是一種技術趨勢。將來,實時技術將成為一種默認技術,不是只有谷歌、Facebook和Twitter才能玩得起。
以下為文章內(nèi)容摘要:
實時Web并不只是一種時尚,而是一種技術轉(zhuǎn)移——即時訪問Web。
實時技術使Web應用變得更快,在某些情況下,幾乎與桌面應用沒有區(qū)別。
實時技術最初的靈感來源很簡單——開發(fā)經(jīng)典街機游戲《小行星》(Asteroids)的在線版本,不同的是可以多人同時在線游戲(MMO)。
得益于強大的網(wǎng)絡后端的支持,在線版《小行星》需要支持數(shù)百人同時游戲。更重要的是,要做到實時效果,每個游戲玩家都能毫無延遲地看到每次射擊,每個動作。
對于Hacker news 社區(qū)而言,這是一件不幸的事情,因為他們最初發(fā)現(xiàn),這根本無法實現(xiàn),只是一個愚人節(jié)玩笑而已。
不難理解,這讓不少游戲玩家感到失望,但是該創(chuàng)意聽起來確實可行。隨著技術的發(fā)展,似乎距離該目標已經(jīng)不遠。例如Node(用來編寫高性能網(wǎng)絡服務器的JavaScript工具包)的出現(xiàn),使得用很少的幾臺服務器即可同時處理大量用戶的指令。此外還有WebSocket協(xié)議,使得用戶之間的持久連接變?yōu)榭赡堋?/P>
但JavaScript開發(fā)人員賽博·李-德利斯勒(Seb Lee-Delisle)仍然認為不可行,他認為,一旦真的推出MMO版《小行星》,其彈性和穩(wěn)定性均無法保證,因為游戲要經(jīng)常交換數(shù)據(jù),調(diào)整設置,檢查沖突等。德利斯勒說:“告訴大家一個不好的消息,如果真的推出MMO版《小行星》,那么游戲也將很乏味。”
MMO版《小行星》成為現(xiàn)實
而另一名開發(fā)人員維克拉姆·尼扎(Vikrum Nijjar)則希望將其作為一個挑戰(zhàn),認為是可行的。幸運的是,尼扎與其他開發(fā)人員合作,已經(jīng)開發(fā)出了使之變?yōu)楝F(xiàn)實的軟件Firebase。這一次,尼扎的MMO版《小行星》變?yōu)榱爽F(xiàn)實,同時也登上了Hacker News的首頁。
盡管也略微有些缺陷,但卻保證了所有動作的實時顯現(xiàn),做到了最小化延遲。
“實時”是技術界頗受歡迎的一個流行語,是開發(fā)人員、商家和公共關系代表等用來描述一種體驗或即時在線互動的。例如,Twitter被贊許為實時信息源,F(xiàn)acebook也利用好友的更新和圖像實時更新用戶首頁,一個科技博客網(wǎng)站也承諾對內(nèi)容進行實時更新。
但是,在上述所謂的實時服務中,都存在延遲,短的幾秒鐘,長的幾分鐘。只是我們沒在意,或沒必要計較而已,因為我們最終獲得的內(nèi)容仍具有價值,讓我們滿意。盡管如此,事實上的延遲不可否認。在聊天或發(fā)表評論時,這些延遲是可以容忍的。但隨著數(shù)據(jù)的越來越復雜,在某些情況下,如大型多人同時在線游戲,延遲是不可接受的。
今天的許多互聯(lián)網(wǎng)應用的運行模式是:客戶端向服務器發(fā)送數(shù)據(jù)請求,然后從數(shù)據(jù)庫抽取數(shù)據(jù)。如果數(shù)據(jù)發(fā)生任何變化,應用自身需要再次與服務器進行核實,免得用戶手動刷新頁面。這種反復連接服務器的過程被稱為“輪詢”(polling)。
但在實時環(huán)境下根本沒有輪詢,而是訂閱(subscriptions)。一個客戶端訂閱數(shù)據(jù)庫中的數(shù)據(jù),無論何時當數(shù)據(jù)變化時,客戶端都將接到更新。這種變化無需輪詢,是因為它們是主動推送的,正如某些通知被推動給智能手機。
15年出現(xiàn)一次轉(zhuǎn)變
創(chuàng)建富媒體實時應用的Web框架Meteor聯(lián)合開發(fā)人員馬特·德波伽里斯(Matt Debergalis)稱:“我們當前正處在這種轉(zhuǎn)移時期,這種轉(zhuǎn)移通常每15年發(fā)生一次,所有代碼都要重新編寫。”
德波伽里斯解釋道,在20世紀70年代至80年代初,軟件主要運行在大型主機和服務器上,用戶使用非智能設備連接。到了80年代后,客戶端-服務器模式出現(xiàn),隨后互聯(lián)網(wǎng)誕生。
德波伽里斯說:“大約15年后,Web再次要求我們重寫所有軟件。因為我們將從桌面應用轉(zhuǎn)向新的模式,這一次軟件再次運行在服務器上。”但不同的是,這一次的終端是Web瀏覽器。
如今,桌面軟件華麗的用戶界面正在消失,取而代之的是一些簡單的Web功能。從Gmail和Rdio即可看出這一變化,訪問終端是Web瀏覽器。
這就是實時連接,應用在外觀和表現(xiàn)上與桌面應用幾乎沒有區(qū)別,我們預計將來的互動也沒有區(qū)別。Rdio就是一個出色的Web應用,在瀏覽器中運行,與在桌面上運行幾乎沒有區(qū)別。
當然,實時技術并不是什么新鮮事物,低延遲的軟件和硬件,以及對信息的幾乎同步訪問已存在多年。但開發(fā)人員菲爾·萊格特(Phil Leggetter)稱:“沒有人在金融以外的領域使用。”
萊格特稱,只是最近幾年,實時技術才從小眾領域走進大眾市場。Twitter是一個轉(zhuǎn)折點,使得信息可以被實時發(fā)現(xiàn)。但萊格特稱:“下一個目標是實時投遞。”
經(jīng)濟實惠的Node
與任何開發(fā)人員談論實時技術,都將不可避免地談到Node。Node是一款用來編寫高性能網(wǎng)絡服務器的JavaScript工具包,今天的許多實時應用都采用了Node。
當然,Node也并非唯一的實現(xiàn)方法。Twitter服務器實時搜索結果使用的就是前端系統(tǒng)Blender,后者依靠的是Java網(wǎng)絡框架Netty。而Facebook采用的是阿帕奇Web服務器和自主開發(fā)的HipHop。
不同的是,F(xiàn)acebook、Twitter和谷歌不僅僅時發(fā)送和接收信息,他們還需要大量的計算能力來注釋、分析和返回數(shù)據(jù)。而一些小型開發(fā)人員的需求很簡單,使用Node較為實際。
實時應用通常并不需要大量的計算能力,因為這些需求可以交給專業(yè)服務來解決,如亞馬遜的EC2。相反,他們需要以最快速度移動、路由和連接大量數(shù)據(jù)的能力。
這就是速度至關重要的原因。在德波伽里斯所說的Web瀏覽器終端世界,限制用戶體驗的只有兩個因素,數(shù)據(jù)傳輸速度和同時連接服務器的數(shù)量。而Node可以在很大程度上同時解決這兩大問題。
對于Facebook而言,這可能不是什么問題,因為他們對定制的PHP和阿帕奇服務很滿意,也擁有足夠的資金用來升級。但對于小型開發(fā)商或開發(fā)團隊而言,利用最少的資源開發(fā)出更具吸引力的實時體驗無疑至關重要。
前景光明
經(jīng)過多年的實時技術研究,開發(fā)人員萊格特對此持樂觀態(tài)度。他說,我們已經(jīng)看到一些產(chǎn)品和服務,雖然沒有將實時作為賣點,但確實是依賴于實時技術,這是一件好事。
萊格特說:“這意味著,我們開始看到實時技術的實際應用,而不僅限于理論。這項技術很酷,讓我們一起努力,充分挖掘其使用價值。”
德利斯勒同樣持樂觀態(tài)度,稱MMO版《小行星》只是一個開始。他說:“實時技術將成為一種默認技術,不是只有谷歌、Facebook和Twitter才能承受得起。”