190億美元的WhatsApp背后的小眾編程語言:Erlang
英文原文:Inside Erlang, The Rare Programming Language Behind WhatsApp's Success
只憑 32 個技術人員,如何應付 4.5 億的用戶?對于剛剛被 非死book 用 190 億美元收購的 WhatsApp 來說,答案是 Erlang——一種誕生于上世紀 80 年代的編程語言,終于在此時走到了聚光燈下。
但面對很多試圖替代它的編程語言,Erlang 有自己的將來嗎?
Erlang 是 25 年前由瑞典電信巨頭愛立信開發,而現在它卻在像 WhatsApp 和 TigerText 這樣的即時消息應用里找到了自己的位置。即使 非死book 也對這種語言大唱贊歌——它在 2009 年用 Erlang 開發了 非死book 聊天應用。而在同年,它拒絕了 WhatsApp 創始人 Brian Acton 的求職申請。
并發成為新寵
“使用 Erlang,你可以開發出同時允許大量用戶連接的消息傳輸應用,而不用擔心消息是如何傳輸的,”使用這種語言開發的匿名發帖系統 Whisper 的 CTO Chad 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 也一定能行。
<span id="shareA4" class="fl"> </span>
</div>