官术网_书友最值得收藏!

1.2 集群化時期

為了滿足日益增長的業務需求,工程師們不斷上線性能更加強悍的服務器。直到有一天,老板實在招架不住高昂的成本了。這里的成本不僅指購買機器的成本,更多的是這些機器的維護成本——由于高端機器的維護都需要受過專業培訓的人員,普通工程師難以勝任;另一方面,受摩爾定律的限制,單核CPU的發展也跑不過業務的發展。

這個時候工程師們就想起了“三個臭皮匠,頂個諸葛亮”的老話(當然是開玩笑)。

1.2.1 從高端設備到普通PC

雖然IBM小型機的價格非常昂貴,但那個時代有種硬件相對來說要便宜許多,而且也擁有與小型機一樣的計算功能(注意是功能而不是能力),那就是Intel X86普通PC,即常見的“電腦”,雖然單從計算能力上來講,普通PC相比IBM小型機簡直相差萬里,但是它們的計算架構卻是一致的。例如小型機可能動輒就是128GB的內存,普通PC最多也就8GB,因此單從計算能力上,普通PC在服務領域是沒有任何使用場景的;不過隨著一種被稱為“負載均衡(Load Balance)”設備的出現(例如經典的F5Networks BIG系列,如圖1.3所示),工程師們得以匯集微小的力量于一體。

圖1.3 “經典的F5 BIG-IP硬件負載均衡設備”

1.2.2 硬件負載均衡設備

負載均衡設備雖然五花八門,但其工作的基本原理大同小異,都是通過網關的形式將流量反向代理并轉發給下游的,下游是多個功能一致的X86服務器,以此組成一個集群。負載均衡設備往往會對外暴露一個統一的接口,讓外界用戶感覺是在向同一個主機發起請求,然而實際上,后端的服務器已經集群化了。集群化的好處是可以隨時水平擴展,因為每臺機器的功能都是一樣的,也就是說如果需要將原來的壓力縮小一半,只需要將機器的數量擴充一倍即可。

“負載均衡”設備一般還會支持健康檢測,當有新的服務器加入時,可以動態將流量分配給它們;同時在某臺服務器出現故障時,又能夠及時將其從流量下發列表中摘除,避免無效的流量轉發。

同時負載均衡設備還是服務的入口與出口門戶,即網關。利用這個優勢,它們可以對流量進行清洗與預處理工作,例如安全流量打標與防DDos攻擊等。

負載均衡使得PC能夠將微小的力量結合起來,形成一個集群,并第一次引入了水平擴展的概念,實現了動態擴縮,相對于之前笨重的單機部署,可以說是質的突破。

1.2.3 資源配置問題

之前小型機無論多么強大,運算能力都受硬件限制,而硬件的采購、部署周期又非常長,因此為了保險,早先很多公司的運維都會預留好機器資源以供業務發展不時之需。

這樣做的問題在于,會出現大量的閑置硬件資源。比如,企業預估業務在年底能夠達到80GB內存的需求量,而年初采購時業務實際只有20GB的需求,根據上面的策略,企業仍然會將80GB內存的機器買回調試好以期待其用武之地。那么,也就是說60GB的內存很多時候就真的是在空轉了。如果業務發展順利,那還好,雖然等待時間有些長,但終歸還是用上了,但是出現不及所期那就慘了,因為硬件在使用后廠商一般是不允許退貨的,也就是說不能以這60GB多余內存用不上為由,希望廠商回收。

而且,隨著業務的多樣化,特別是電商類場景,經常需要組織一些大的促銷,業務壓力往往會急劇上升,單機即便性能高,也有極限,在達到瓶頸后很難有所作為。

1.2.4 積少成多的優勢

使用集群則不一樣,可以施展化整為零的功夫。雖然一臺普通PC內存一般為8GB(實際上2010年的時候一般只有2GB左右),但工程師可以用10臺PC組合成一個服務集群,形成80GB的服務能力。這樣在年初的時候,只需采購3臺回來組成集群就夠用了,到了年底的時候,可以再采購剩下的部分或者業務將出現瓶頸的時候再采購,要知道采購部署一臺普通PC可比IBM之類的小型機輕松多了。

當初小型機甚至大型機之所以有市場,是因為那個時候的普通PC硬件及軟件技術沒有達到企業高穩定性、高容錯性的需求,也就是說普通PC可能沒用幾天就會不是這里壞就是那里有故障,IBM等優秀的公司很好地幫助企業渡過了那個難關,也確實為計算機歷史做出了貢獻。不過隨著X86及Linux開源生態的發展,普通PC變得愈加穩定,再加上HP、DELL等一系列優秀的服務器生產廠商的加入,普通PC作為服務器已經不再是什么新鮮事了(當然這里的普通PC還是不能與家用的畫等號的,一些細小的部分是針對企業應用專門優化的,例如雙CPU雙通道內存主板)。

1.2.5 集群化架構

回到之前談論的集群部署架構,通過普通PC的堆砌,工程師們成功將架構進化成了如圖1.4所示的樣子。

現在性能問題是解決了,如果業務規模再上升,就可以通過單純的堆砌機器來解決。集群思想不僅適合服務器,后端的數據庫也適用,在這樣的思想上產生了“一主一備”“一主多備”可以使得當主庫出現問題的時候業務整體的容錯能力有了很大程度的提升。等經典的部署結構,并出現了分庫分表分庫分表即按照一定的主鍵規則,將數據散列到不同的表或者庫中以實現數據庫的水平擴展,像開源的Cobar,就是典型的分庫分表工具。中間件。

圖1.4 “集群化后的部署架構”

1.2.6 軟件負載設備

早先時候的負載均衡設備都是基于硬件的,后來工程師們為了節省成本,編寫軟件使用普通PC開發了廉價的負載均衡設備,例如LVS(Linux Virtual Server)LVS是由章文嵩研發的基于普通X86型PC的軟負載均衡產品,其代碼已經開源。這樣的產品,與硬件的功能一致,只不過使用了軟件的形式來工作,這些產品的誕生標志著負載正式進入“軟負載”時代。

但漸漸地,工程師們發現,很多功能都被重復建設了,例如其中的“聊天室”與“論壇”都會涉及用戶信息功能(例如登錄、用戶基本信息采集等);另外,由于應用分開部署,都需各自設計一套,從前端的信息錄入到后端的存儲結構。圖1.4只有4個系統,問題也許還不太明顯;但今天,一個復雜的系統包含成百上千個應用是常見的事,這樣的功能重復顯然對企業來說是嚴重的資源浪費。

主站蜘蛛池模板: 安徽省| 五莲县| 天镇县| 兴隆县| 丰城市| 武威市| 新巴尔虎右旗| 靖宇县| 大足县| 庆安县| 宁都县| 瑞安市| 乐陵市| 平武县| 大关县| 兴业县| 凤冈县| 大埔区| 保定市| 陈巴尔虎旗| 乌拉特后旗| 霍林郭勒市| 灵寿县| 永登县| 宕昌县| 会泽县| 玉屏| 沁源县| 吐鲁番市| 和政县| 浦江县| 班玛县| 鹿邑县| 衡水市| 普格县| 宝山区| 阿图什市| 六安市| 通城县| 赫章县| 武川县|