只憑32個(gè)技術(shù)人員,如何應(yīng)付4.5億的用戶?對(duì)于剛剛被Facebook用190億美元收購(gòu)的WhatsApp來說,答案是Erlang——一種誕生于上世紀(jì)80年代的編程語言,終于在此時(shí)走到了聚光燈下。
但面對(duì)很多試圖替代它的編程語言,Erlang有自己的將來嗎?
Erlang是25年前由瑞典電信巨頭愛立信開發(fā),而現(xiàn)在它卻在像WhatsApp和TigerText這樣的即時(shí)消息應(yīng)用里找到了自己的位置。即使Facebook也對(duì)這種語言大唱贊歌——它在2009年用Erlang開發(fā)了Facebook聊天應(yīng)用。而在同年,它拒絕了WhatsApp創(chuàng)始人Brian Acton的求職申請(qǐng)。
并發(fā)成為新寵
“使用Erlang,你可以開發(fā)出同時(shí)允許大量用戶連接的消息傳輸應(yīng)用,而不用擔(dān)心消息是如何傳輸?shù)模?rdquo;使用這種語言開發(fā)的匿名發(fā)帖系統(tǒng)Whisper的CTO Chad DePue說。“相反”,他說,“你擔(dān)心的是如何設(shè)計(jì)一個(gè)好的應(yīng)用。”
愛立信工程師Joe Armstrong設(shè)計(jì)Erlang語言時(shí)始終將電信通訊的工作原理銘記在心:同時(shí)有百萬用戶并行通訊,對(duì)故障事件幾乎是零容忍。對(duì)于如此巨量的并行通訊,其它語言基本可望而不可及——有的表面上看起來擅長(zhǎng)處理并發(fā),但它們卻不是原生的“多任務(wù)處理者”。而Erlang,跟它們形成鮮明對(duì)比,天生擅長(zhǎng)多線程或玩這種“雜技”——再增加一個(gè)旋轉(zhuǎn)的盤子?丟上來!
“這種語言非常富有表達(dá)性,”谷歌創(chuàng)新實(shí)驗(yàn)室的Igor Clark說。“你可以在一個(gè)很高的層面工作,用它的幾個(gè)關(guān)鍵概念可以做很多事情。”
從實(shí)際使用的角度,Erlang最初非常適合在單個(gè)機(jī)器上跨多處理器處理高效的執(zhí)行命令。而如今,它已經(jīng)進(jìn)化成擅長(zhǎng)跨全球網(wǎng)絡(luò)服務(wù)器——也就是我們所說的“云”——執(zhí)行海量命令。游戲,金融等任何像實(shí)時(shí)拍賣系統(tǒng)那樣對(duì)速度、穩(wěn)定性、吞吐量高要求的場(chǎng)景,Erlang的這種云特征都是必不可少的。
同樣,對(duì)于程序員來說,Erlang的吸引力也獨(dú)樹一幟的,它允許系統(tǒng)不停機(jī)的情況下進(jìn)行更新和bug修復(fù)。實(shí)時(shí)上,你可以修改系統(tǒng)屬性或更換文件而不引起系統(tǒng)的卡頓。Erlang語言的這種特性是電信業(yè)的強(qiáng)制要求的結(jié)果:正如DePue說的,“當(dāng)有人在打電話時(shí),你不可能因?yàn)橐?jí)系統(tǒng)而掛斷他們的電話。”
砸了電信的飯碗
Erlang語言在1998年就開源了,而如今的電信也卻沒有當(dāng)初那么大方。像WhatsApp,微信,Line,和其它應(yīng)用如雨后春筍,電信業(yè)一度依賴的短信費(fèi)用迅速被腐蝕。KPN,一家荷蘭公司,在目睹短信收益大幅下滑后試圖封殺這些應(yīng)用,但最終在法庭上輸了官司。
一些大型的運(yùn)營(yíng)商,例如Vodafone,試圖建立自己的短信服務(wù)網(wǎng)絡(luò),但幾乎沒有成功的。它們現(xiàn)在的辦法就是對(duì)用戶的合同進(jìn)行修改,添加并標(biāo)明短信和數(shù)據(jù)各自的費(fèi)用。
就在這些電信公司忙著調(diào)整他們的收費(fèi)標(biāo)準(zhǔn)時(shí),WhatsApp卻在專注做產(chǎn)品。它們的技術(shù)團(tuán)隊(duì)讓W(xué)hatsApp在規(guī)模和速度上的提升一次又一次的讓Erlang語言社區(qū)轟動(dòng),在短短的幾年里,每個(gè)服務(wù)器的連接數(shù)從1萬躍升到2百萬。
這些成績(jī)的實(shí)現(xiàn)全都?xì)w功于Armstrong打下的基礎(chǔ),他為愛立信量身定制的項(xiàng)目AXD301,實(shí)現(xiàn)了“9個(gè)9”的可靠性 (99.9999999%)。而如今這些年輕的挑戰(zhàn)者們,卻將這些垂老的電信公司打的節(jié)節(jié)敗退。
Erlang語言能實(shí)現(xiàn)超越嗎?
有著這樣驕人的成績(jī),你也許會(huì)認(rèn)為Erlang會(huì)被人們廣泛的使用。但現(xiàn)實(shí)情況要比你想象的復(fù)雜得多。
直到現(xiàn)在,Erlang編程語言的開發(fā)者社區(qū)規(guī)模依然很小,并且大部分聚集在歐洲。這種語言的語法是公認(rèn)的“奇特”。如果你想分析復(fù)雜的數(shù)據(jù)或架設(shè)一個(gè)小網(wǎng)站,自然會(huì)選擇其它更好的語言和工具。而且,很多新出現(xiàn)的編程語言和變種都借鑒了Erlang語言的基本理念,從谷歌的Go語言到Docker語言,競(jìng)爭(zhēng)越來越激烈。
Elixir給Erlang帶來了希望——Armstrong最近的大力贊揚(yáng)。Elixir將Erlang的語法普通化,這能幫助這種語言模仿Rails帶紅Ruby語言的模式找到自己的出路。像Chicago Boss這樣的項(xiàng)目也在努力讓這種語言更用戶友好化。一旦有更多的社群在Erlang語言周圍聚集,人們將會(huì)發(fā)現(xiàn) OTP(開放電信平臺(tái))里更豐富的功能。
“他們從開發(fā)堅(jiān)固無比的軟件和程序庫(kù)中總結(jié)出來很多模式,我們可以很好的借用,”Clark說。
Erlang語言否能流行起來的一個(gè)關(guān)鍵是便攜設(shè)備市場(chǎng),就是我們所說的網(wǎng)絡(luò)設(shè)備。智能設(shè)備愛好者們已經(jīng)在嘗試在MQTT——一個(gè)輕量級(jí)的傳感器間消息傳輸協(xié)議——上使用Erlang。如果能短信控制恒溫器,那用WhatsApp也一定能行。
英文原文:Inside Erlang, The Rare Programming Language Behind WhatsApp's Success
譯文鏈接:http://www.vaikan.com/inside-erlang-the-rare-programming-language-behind-whatsapps-success/