日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用Go代替Ruby,將服務器數(shù)量從30降到2

將服務器數(shù)量縮減到之前的十五分之一,并且降低了服務器CPU的使用率,Iron.io成功的做到了。Iron.io在遭遇了Ruby的限制后,大刀闊斧般的使用Go語言重寫其名下服務IronWorker。

公司主營業(yè)務:成都網(wǎng)站建設(shè)、做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出興慶免費做網(wǎng)站回饋大家。

[[66756]]

使用另一種語言去重寫一個服務,聽起來是不是很折騰?然而云服務供應商Iron.io就這么做了,并成功的將服務器從30臺降至了2臺。Iron.io在其官方博客上公布了整個事件的始末,下面來了解一下:

Iron.io與IronWorker

Iron.io起初為幫助其它公司建立應用程序的咨詢公司,現(xiàn)為云服務供應商。Iron.io開發(fā)IronWorker的理由同樣很老套:

之前說過Iron.io曾是家咨詢公司,而在IronWorker開發(fā)的那段時間,AWS和Ruby on Rails是兩個非?;鸬念I(lǐng)域。而Iron.io有幾個客戶建立的硬件設(shè)施會不斷的(7X24小時)給其發(fā)送數(shù)據(jù),為了收集和處理這些數(shù) 據(jù),Inro.io建立了他們自己的內(nèi)部服務“worker as a service”。至于發(fā)行的原因就很老套了,在自己使用的同時,忽然覺得其它機構(gòu)可能也會有類似的需求(很類似“書販子”Amazon?),于是就誕生 了發(fā)行版IronWorker。

理所當然, IronWorker首發(fā)版使用的是Ruby和基于Rails的API。起先, IronWorker表現(xiàn)的很不錯,花很少的精力和時間就可以支撐相當重的負載。然而很快 IronWorker就受到了Rails的限制:

又是RoR惹的禍

為了保持服務的流暢,Iron.io一直將其服務器CPU使用率保持在50-60%;CPU使用率一旦超過這個范圍,就會增加服務器數(shù)量。當然如果不介意一直增加服務數(shù)量,這也是可行的,然而很快他們就介意了!

當某個“巨大”請求連接到它們的服務器,很可能就會產(chǎn)生一個多米效應導致整個服務器集群的崩潰

一旦某些線程占用高于50%以上,Rails服務器CPU使用率將隨之飆升到100%,而這個服務器將變的異常緩慢。負載均衡器則會認為這個服務器 發(fā)生故障,將其從服務器集群中移除;但是被移除服務器上的作業(yè)將會被分配到剩余的服務器上,于是問題就發(fā)生了——導致整個事件發(fā)生的線程并未被移除或得到 處理。就這樣惡性循環(huán)產(chǎn)生,集群中的服務器被一臺又一臺的移除,直至整個系統(tǒng)崩潰。

***避免這個問題產(chǎn)生的方法就是增加足夠的計算能力,這就意味著巨額成本的產(chǎn)生?;诙嗄甑膬?yōu)秀(使用更少資源承擔更多負載)開發(fā)經(jīng)驗,Iron.io決定重寫API,做掉罪魁禍首的Rails,這樣首先他們面臨的就是究竟該使用什么編程語言。

Go的脫穎而出

[[66757]]

首先他們考慮的就是回到Java的性能優(yōu)勢上來,然而經(jīng)過多年使用Ruby的簡潔、明了及有趣,Java因為編碼效率上的劣勢被拋棄。接著是又考慮 了一些比Ruby具備更高性能的腳本語言,比如:Python、JavaScript/Node;Java的派生物,比如:Scala和Clojure; 還有一些其它語言,比如:Erlang、Go等。而在一些原型和性能測試后,最終他們選擇了Go。

而在當時的那個環(huán)境下選用Go伴隨著很大的風險,因為:當時Go還沒有很大的社區(qū),也沒有許多開源項目,同樣也沒有許多成功的用例。使用Go有太多不可預測性存在,比如招聘優(yōu)秀的工程師;不過這些大部分都沒有發(fā)生。

Go版本使用情況

Go版本推出后,Iron.io的服務器數(shù)量直接從30臺減到了2臺,附加的兩臺實現(xiàn)冗余服務器更是從未用到。CPU的使用率不到5%,而初始化過程中對比Rubby使用接近50M的內(nèi)存,Go版本只是用了不到幾百K。

英文原文: How We Went from 30 Servers to 2: Go (編譯/仲浩)


當前標題:使用Go代替Ruby,將服務器數(shù)量從30降到2
轉(zhuǎn)載注明:http://www.5511xx.com/article/djjohep.html