http://arksea.iteye.com/blog/2154673 08年開始接觸Erlang,組里正好來了一位Erlang專家--余峰同學(xué)(現(xiàn)在淘寶擔(dān)任核心系統(tǒng)資深技術(shù)專家,花名褚霸),在霸爺?shù)拇罅鹘滔拢伊⒓淳捅籈rlang的強(qiáng)大與優(yōu)美迷住了。當(dāng)時(shí)我正在為實(shí)現(xiàn)一個(gè)分布式語音服務(wù)集群頭痛,開發(fā)語言是C++,在需要跨界研究語音處理、語音傳輸?shù)那闆r下,實(shí)在沒有精力去搞高性能高可靠的分布式網(wǎng)絡(luò)服務(wù)。
在霸爺?shù)耐扑]下,我花了2周業(yè)余時(shí)間熟悉Erlang語言,就開始嘗試用她實(shí)現(xiàn)語音服務(wù)的通信層,三周時(shí)間,一個(gè)比原來花了2個(gè)月時(shí)間的C++版本性能更好、更可靠、真正分布式、可擴(kuò)展,而且代碼量只有一半的服務(wù)端就完成了,經(jīng)過一個(gè)月測試,再一個(gè)月
完善就上線提供服務(wù)了,而那個(gè)粗糙的C++版本服務(wù)要實(shí)現(xiàn)相同的功能,沒個(gè)半年是不行的,而且還不一定穩(wěn)定可靠。
同樣的場景,在為我廠開發(fā)分布式服務(wù)框架時(shí)(后面簡稱DSF),再次重現(xiàn)。DSF要為應(yīng)用服務(wù)的高性能與高可靠提供可配置的路由策略與失敗處理策略,客戶端驅(qū)動的開發(fā)是重點(diǎn)中的重點(diǎn),即使在我們將Thrift作為框架的RPC解決方案的前提下,仍然需要投入極大的精力與時(shí)間,更何況,還要求我們的驅(qū)動設(shè)計(jì)必須用Java和C#都能較容易的實(shí)現(xiàn)。
這時(shí)候,作為分布式服務(wù)系統(tǒng)中必不可少的應(yīng)用注冊服務(wù)器,同時(shí)要進(jìn)行開發(fā),對于孤軍奮戰(zhàn)的我就顯得力不從心了。在我們的設(shè)計(jì)中,應(yīng)用注冊服務(wù)器必須提供實(shí)時(shí)的服務(wù)狀態(tài)通知與分發(fā)能力,盡量讓不健康的服務(wù)的切除更加及時(shí),而且,應(yīng)用注冊服務(wù)器作為所有應(yīng)用服務(wù)的基礎(chǔ)服務(wù),其可靠性的重要也是毋庸置疑的。在這種情景下,Erlang再次成為我的救星與堅(jiān)實(shí)的靠山,讓我敢于同時(shí)在DSF框架與與應(yīng)用注冊服務(wù)的開發(fā)中雙線開戰(zhàn)。
應(yīng)該說在整個(gè)的開發(fā)過程中,應(yīng)用注冊服務(wù)器并沒有花費(fèi)我太多時(shí)間,三周,一個(gè)真正的分布式無中心節(jié)點(diǎn)的高可靠服務(wù)雛形就此成型,其后只是零星的bug修改與功能補(bǔ)充了,這種力量來自哪里?還是Erlang!
經(jīng)常有人問我,Erlang到底好在哪里?因?yàn)槟芰τ邢蓿瑢rlang的了解僅限皮毛,專業(yè)的分析可以到霸爺?shù)?#8220;
Erlang非業(yè)余研究”找相關(guān)普及貼看看,我這里僅根據(jù)這幾年實(shí)踐說說自己的感受。
從技術(shù)上說,Erlang是一個(gè)平臺,她提供了一套完整的高性能、高可靠網(wǎng)絡(luò)服務(wù)開發(fā)所需要的基礎(chǔ)設(shè)施,并提供了原語給開發(fā)人員使用,她降低了開發(fā)類似系統(tǒng)的難度與門檻。有一個(gè)說法,Erlang讓一個(gè)中高級程序員,用一半的時(shí)間,一半的代碼量,就能提供頂尖C程序員開發(fā)的網(wǎng)絡(luò)服務(wù)80%性能的類似系統(tǒng),并且可靠性不輸于甚至超過前者。我的實(shí)踐讓我確信,這是真的。
另一方面,Erlang也給了開發(fā)人員強(qiáng)大的自信,就如同前面開發(fā)DSF時(shí)的場景所述。有開發(fā)維護(hù)過線上系統(tǒng)的人應(yīng)該可以深刻的感受到,開發(fā)一個(gè)高可靠的網(wǎng)絡(luò)服務(wù)有多困難,維護(hù)一個(gè)線上系統(tǒng)有多勞心,當(dāng)一個(gè)服務(wù)上線時(shí),我們的運(yùn)維與程序員即使睡覺都恨不得睜著一只眼睛。
根據(jù)我的經(jīng)驗(yàn),采用Erlang開發(fā)的系統(tǒng),其出現(xiàn)的bug量與用常規(guī)語言開發(fā)的絕對不是一個(gè)數(shù)量級;Erlang的監(jiān)控樹機(jī)制,更是讓我們的服務(wù),天生就具備了高可靠的基因,只要稍花精力,仔細(xì)規(guī)劃我們的監(jiān)控樹與重啟策略,就可以讓本來就少了很多的bug及一些無法預(yù)料的外部故障,在即使出現(xiàn)時(shí)也有很大的幾率迅速恢復(fù),給你修復(fù)bug排除故障一個(gè)緩沖的時(shí)間,更何況,Erlang可是具備熱更新能力的,那真的可以讓你延壽啊!延壽!
如果你的老板問你,為什么要用Erlang,Erlang好在哪里,你可以這樣總結(jié):省錢吶!你想想,一個(gè)資深的、頂尖的程序員與中高級普通程序員之間的成本差,普通的系統(tǒng)就只要普通的程序員就好啦,那不僅僅是省錢,是省很多很多的錢,這個(gè)回答,一定可以讓你的老板眼睛像手電筒一樣閃閃發(fā)光!
posted on 2017-01-10 17:27
思月行云 閱讀(345)
評論(0) 編輯 收藏 引用 所屬分類:
Erlang