190億美元的WhatsApp背後的小衆編程語言:Erlang

        最近也在學習Erlang,這門小衆的語言到底有什麼優勢呢?請看這篇文章。、

        原文地址:http://www.vaikan.com/inside-erlang-the-rare-programming-language-behind-whatsapps-success/


只憑32個技術人員,如何應付4.5億的用戶?對於剛剛被Facebook用190億美元收購的WhatsApp來說,答案是Erlang——一種誕生於上世紀80年代的編程語言,終於在此時走到了聚光燈下。

但面對很多試圖替代它的編程語言,Erlang有自己的將來嗎?

Erlang是25年前由瑞典電信巨頭愛立信開發,而現在它卻在像WhatsApp和TigerText這樣的即時消息應用裏找到了自己的位置。即使Facebook也對這種語言大唱讚歌——它在2009年用Erlang開發了Facebook聊天應用。而在同年,它拒絕了WhatsApp創始人Brian Acton的求職申請。

併發成爲新寵

“使用Erlang,你可以開發出同時允許大量用戶連接的消息傳輸應用,而不用擔心消息是如何傳輸的,”使用這種語言開發的匿名發帖系統Whisper的CTOChad DePue說。“相反”,他說,“你擔心的是如何設計一個好的應用。”

愛立信工程師Joe Armstrong設計Erlang語言時始終將電信通訊的工作原理銘記在心:同時有百萬用戶並行通訊,對故障事件幾乎是零容忍。對於如此巨量的並行通訊,其它語言基本可望而不可及——有的表面上看起來擅長處理併發,但它們卻不是原生的“多任務處理者”。而Erlang,跟它們形成鮮明對比,天生擅長多線程或玩這種“雜技”——再增加一個旋轉的盤子?丟上來!

“這種語言非常富有表達性,”谷歌創新實驗室的Igor Clark說。“你可以在一個很高的層面工作,用它的幾個關鍵概念可以做很多事情。”

從實際使用的角度,Erlang最初非常適合在單個機器上跨多處理器處理高效的執行命令。而如今,它已經進化成擅長跨全球網絡服務器——也就是我們所說的“雲”——執行海量命令。遊戲,金融等任何像實時拍賣系統那樣對速度、穩定性、吞吐量高要求的場景,Erlang的這種雲特徵都是必不可少的。

同樣,對於程序員來說,Erlang的吸引力也獨樹一幟的,它允許系統不停機的情況下進行更新和bug修復。實時上,你可以修改系統屬性或更換文件而不引起系統的卡頓。Erlang語言的這種特性是電信業的強制要求的結果:正如DePue說的,“當有人在打電話時,你不可能因爲要升級系統而掛斷他們的電話。”

砸了電信的飯碗

Erlang語言在1998年就開源了,而如今的電信也卻沒有當初那麼大方。像WhatsApp,微信,Line,和其它應用如雨後春筍,電信業一度依賴的短信費用迅速被腐蝕。KPN,一家荷蘭公司,在目睹短信收益大幅下滑後試圖封殺這些應用,但最終在法庭上輸了官司。

一些大型的運營商,例如Vodafone,試圖建立自己的短信服務網絡,但幾乎沒有成功的。它們現在的辦法就是對用戶的合同進行修改,添加並標明短信和數據各自的費用。

就在這些電信公司忙着調整他們的收費標準時,WhatsApp卻在專注做產品。它們的技術團隊讓WhatsApp在規模和速度上的提升一次又一次的讓Erlang語言社區轟動,在短短的幾年裏,每個服務器的連接數從1萬躍升到2百萬。

這些成績的實現全都歸功於Armstrong打下的基礎,他爲愛立信量身定製的項目AXD301,實現了“9個9”的可靠性 (99.9999999%)。而如今這些年輕的挑戰者們,卻將這些垂老的電信公司打的節節敗退。

Erlang語言能實現超越嗎?

有着這樣驕人的成績,你也許會認爲Erlang會被人們廣泛的使用。但現實情況要比你想象的複雜得多。

直到現在,Erlang編程語言的開發者社區規模依然很小,並且大部分聚集在歐洲。這種語言的語法是公認的“奇特”。如果你想分析複雜的數據或架設一個小網站,自然會選擇其它更好的語言和工具。而且,很多新出現的編程語言和變種都借鑑了Erlang語言的基本理念,從谷歌的Go語言到Docker語言,競爭越來越激烈。

Elixir給Erlang帶來了希望——Armstrong最近的大力讚揚。Elixir將Erlang的語法普通化,這能幫助這種語言模仿Rails帶紅Ruby語言的模式找到自己的出路。像Chicago Boss這樣的項目也在努力讓這種語言更用戶友好化。一旦有更多的社羣在Erlang語言周圍聚集,人們將會發現 OTP(開放電信平臺)裏更豐富的功能。

“他們從開發堅固無比的軟件和程序庫中總結出來很多模式,我們可以很好的借用,”Clark說。

Erlang語言否能流行起來的一個關鍵是便攜設備市場,就是我們所說的網絡設備。智能設備愛好者們已經在嘗試在MQTT——一個輕量級的傳感器間消息傳輸協議——上使用Erlang。如果能短信控制恆溫器,那用WhatsApp也一定能行。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章