- Service Mesh實(shí)戰(zhàn):用Istio軟負(fù)載實(shí)現(xiàn)服務(wù)網(wǎng)格
- 周遙
- 295字
- 2019-07-29 18:22:33
1.2 集群化時(shí)期
為了滿足日益增長的業(yè)務(wù)需求,工程師們不斷上線性能更加強(qiáng)悍的服務(wù)器。直到有一天,老板實(shí)在招架不住高昂的成本了。這里的成本不僅指購買機(jī)器的成本,更多的是這些機(jī)器的維護(hù)成本——由于高端機(jī)器的維護(hù)都需要受過專業(yè)培訓(xùn)的人員,普通工程師難以勝任;另一方面,受摩爾定律的限制,單核CPU的發(fā)展也跑不過業(yè)務(wù)的發(fā)展。
這個(gè)時(shí)候工程師們就想起了“三個(gè)臭皮匠,頂個(gè)諸葛亮”的老話(當(dāng)然是開玩笑)。
1.2.1 從高端設(shè)備到普通PC
雖然IBM小型機(jī)的價(jià)格非常昂貴,但那個(gè)時(shí)代有種硬件相對(duì)來說要便宜許多,而且也擁有與小型機(jī)一樣的計(jì)算功能(注意是功能而不是能力),那就是Intel X86普通PC,即常見的“電腦”,雖然單從計(jì)算能力上來講,普通PC相比IBM小型機(jī)簡(jiǎn)直相差萬里,但是它們的計(jì)算架構(gòu)卻是一致的。例如小型機(jī)可能動(dòng)輒就是128GB的內(nèi)存,普通PC最多也就8GB,因此單從計(jì)算能力上,普通PC在服務(wù)領(lǐng)域是沒有任何使用場(chǎng)景的;不過隨著一種被稱為“負(fù)載均衡(Load Balance)”設(shè)備的出現(xiàn)(例如經(jīng)典的F5Networks BIG系列,如圖1.3所示),工程師們得以匯集微小的力量于一體。

圖1.3 “經(jīng)典的F5 BIG-IP硬件負(fù)載均衡設(shè)備”
1.2.2 硬件負(fù)載均衡設(shè)備
負(fù)載均衡設(shè)備雖然五花八門,但其工作的基本原理大同小異,都是通過網(wǎng)關(guān)的形式將流量反向代理并轉(zhuǎn)發(fā)給下游的,下游是多個(gè)功能一致的X86服務(wù)器,以此組成一個(gè)集群。負(fù)載均衡設(shè)備往往會(huì)對(duì)外暴露一個(gè)統(tǒng)一的接口,讓外界用戶感覺是在向同一個(gè)主機(jī)發(fā)起請(qǐng)求,然而實(shí)際上,后端的服務(wù)器已經(jīng)集群化了。集群化的好處是可以隨時(shí)水平擴(kuò)展,因?yàn)槊颗_(tái)機(jī)器的功能都是一樣的,也就是說如果需要將原來的壓力縮小一半,只需要將機(jī)器的數(shù)量擴(kuò)充一倍即可。
“負(fù)載均衡”設(shè)備一般還會(huì)支持健康檢測(cè),當(dāng)有新的服務(wù)器加入時(shí),可以動(dòng)態(tài)將流量分配給它們;同時(shí)在某臺(tái)服務(wù)器出現(xiàn)故障時(shí),又能夠及時(shí)將其從流量下發(fā)列表中摘除,避免無效的流量轉(zhuǎn)發(fā)。
同時(shí)負(fù)載均衡設(shè)備還是服務(wù)的入口與出口門戶,即網(wǎng)關(guān)。利用這個(gè)優(yōu)勢(shì),它們可以對(duì)流量進(jìn)行清洗與預(yù)處理工作,例如安全流量打標(biāo)與防DDos攻擊等。
負(fù)載均衡使得PC能夠?qū)⑽⑿〉牧α拷Y(jié)合起來,形成一個(gè)集群,并第一次引入了水平擴(kuò)展的概念,實(shí)現(xiàn)了動(dòng)態(tài)擴(kuò)縮,相對(duì)于之前笨重的單機(jī)部署,可以說是質(zhì)的突破。
1.2.3 資源配置問題
之前小型機(jī)無論多么強(qiáng)大,運(yùn)算能力都受硬件限制,而硬件的采購、部署周期又非常長,因此為了保險(xiǎn),早先很多公司的運(yùn)維都會(huì)預(yù)留好機(jī)器資源以供業(yè)務(wù)發(fā)展不時(shí)之需。
這樣做的問題在于,會(huì)出現(xiàn)大量的閑置硬件資源。比如,企業(yè)預(yù)估業(yè)務(wù)在年底能夠達(dá)到80GB內(nèi)存的需求量,而年初采購時(shí)業(yè)務(wù)實(shí)際只有20GB的需求,根據(jù)上面的策略,企業(yè)仍然會(huì)將80GB內(nèi)存的機(jī)器買回調(diào)試好以期待其用武之地。那么,也就是說60GB的內(nèi)存很多時(shí)候就真的是在空轉(zhuǎn)了。如果業(yè)務(wù)發(fā)展順利,那還好,雖然等待時(shí)間有些長,但終歸還是用上了,但是出現(xiàn)不及所期那就慘了,因?yàn)橛布谑褂煤髲S商一般是不允許退貨的,也就是說不能以這60GB多余內(nèi)存用不上為由,希望廠商回收。
而且,隨著業(yè)務(wù)的多樣化,特別是電商類場(chǎng)景,經(jīng)常需要組織一些大的促銷,業(yè)務(wù)壓力往往會(huì)急劇上升,單機(jī)即便性能高,也有極限,在達(dá)到瓶頸后很難有所作為。
1.2.4 積少成多的優(yōu)勢(shì)
使用集群則不一樣,可以施展化整為零的功夫。雖然一臺(tái)普通PC內(nèi)存一般為8GB(實(shí)際上2010年的時(shí)候一般只有2GB左右),但工程師可以用10臺(tái)PC組合成一個(gè)服務(wù)集群,形成80GB的服務(wù)能力。這樣在年初的時(shí)候,只需采購3臺(tái)回來組成集群就夠用了,到了年底的時(shí)候,可以再采購剩下的部分或者業(yè)務(wù)將出現(xiàn)瓶頸的時(shí)候再采購,要知道采購部署一臺(tái)普通PC可比IBM之類的小型機(jī)輕松多了。
當(dāng)初小型機(jī)甚至大型機(jī)之所以有市場(chǎng),是因?yàn)槟莻€(gè)時(shí)候的普通PC硬件及軟件技術(shù)沒有達(dá)到企業(yè)高穩(wěn)定性、高容錯(cuò)性的需求,也就是說普通PC可能沒用幾天就會(huì)不是這里壞就是那里有故障,IBM等優(yōu)秀的公司很好地幫助企業(yè)渡過了那個(gè)難關(guān),也確實(shí)為計(jì)算機(jī)歷史做出了貢獻(xiàn)。不過隨著X86及Linux開源生態(tài)的發(fā)展,普通PC變得愈加穩(wěn)定,再加上HP、DELL等一系列優(yōu)秀的服務(wù)器生產(chǎn)廠商的加入,普通PC作為服務(wù)器已經(jīng)不再是什么新鮮事了(當(dāng)然這里的普通PC還是不能與家用的畫等號(hào)的,一些細(xì)小的部分是針對(duì)企業(yè)應(yīng)用專門優(yōu)化的,例如雙CPU雙通道內(nèi)存主板)。
1.2.5 集群化架構(gòu)
回到之前談?wù)摰募翰渴鸺軜?gòu),通過普通PC的堆砌,工程師們成功將架構(gòu)進(jìn)化成了如圖1.4所示的樣子。
現(xiàn)在性能問題是解決了,如果業(yè)務(wù)規(guī)模再上升,就可以通過單純的堆砌機(jī)器來解決。集群思想不僅適合服務(wù)器,后端的數(shù)據(jù)庫也適用,在這樣的思想上產(chǎn)生了“一主一備”“一主多備”等經(jīng)典的部署結(jié)構(gòu),并出現(xiàn)了分庫分表
中間件。

圖1.4 “集群化后的部署架構(gòu)”
1.2.6 軟件負(fù)載設(shè)備
早先時(shí)候的負(fù)載均衡設(shè)備都是基于硬件的,后來工程師們?yōu)榱斯?jié)省成本,編寫軟件使用普通PC開發(fā)了廉價(jià)的負(fù)載均衡設(shè)備,例如LVS(Linux Virtual Server)這樣的產(chǎn)品,與硬件的功能一致,只不過使用了軟件的形式來工作,這些產(chǎn)品的誕生標(biāo)志著負(fù)載正式進(jìn)入“軟負(fù)載”時(shí)代。
但漸漸地,工程師們發(fā)現(xiàn),很多功能都被重復(fù)建設(shè)了,例如其中的“聊天室”與“論壇”都會(huì)涉及用戶信息功能(例如登錄、用戶基本信息采集等);另外,由于應(yīng)用分開部署,都需各自設(shè)計(jì)一套,從前端的信息錄入到后端的存儲(chǔ)結(jié)構(gòu)。圖1.4只有4個(gè)系統(tǒng),問題也許還不太明顯;但今天,一個(gè)復(fù)雜的系統(tǒng)包含成百上千個(gè)應(yīng)用是常見的事,這樣的功能重復(fù)顯然對(duì)企業(yè)來說是嚴(yán)重的資源浪費(fèi)。
- VSTO 3.0 for Office 2007 Programming
- 中文版Premiere Pro CC實(shí)用教程
- Plone 3 Multimedia
- 高等院校電腦美術(shù)教材:CorelDRAW X7中文版基礎(chǔ)教程
- CAXA 實(shí)體設(shè)計(jì)2013案例課堂
- 邊做邊學(xué):Illustrator CS6平面設(shè)計(jì)案例教程(微課版)
- 中文版3ds Max 2022基礎(chǔ)教程
- PPT設(shè)計(jì)與制作實(shí)戰(zhàn)教程
- 修片有道:PHOTOSHOP攝影后期專業(yè)技法
- Service Oriented Architecture with Java
- 中文版Photoshop CC 2018基礎(chǔ)培訓(xùn)教程(全彩版)
- Jasmine JavaScript Testing
- EJB 3.1 Cookbook
- 新手學(xué)UG NX 8.0輔助設(shè)計(jì)
- UG NX 9.0模具設(shè)計(jì)工廠實(shí)訓(xùn)