資源描述:
《可擴(kuò)展web架構(gòu)與分布式系統(tǒng)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、開放源代碼已經(jīng)成為一些大型網(wǎng)站的基本原則。而在這些網(wǎng)站成長(zhǎng)的過程中,一些優(yōu)秀的實(shí)踐經(jīng)驗(yàn)和規(guī)則也出現(xiàn)在他們的結(jié)構(gòu)中。本文旨在介紹一些在大型網(wǎng)站結(jié)構(gòu)設(shè)計(jì)的過程中需要注意的關(guān)鍵問題以及實(shí)現(xiàn)目標(biāo)的基礎(chǔ)工作。本文側(cè)重于介紹網(wǎng)絡(luò)系統(tǒng),盡管一些準(zhǔn)則在其他分布式系統(tǒng)中也是適用的。1.1.web分布式系統(tǒng)的設(shè)計(jì)原則搭建和運(yùn)營(yíng)一個(gè)可伸縮的web站點(diǎn)或者應(yīng)用程序意味著什么?在原始層面上這僅僅是用戶通過互聯(lián)網(wǎng)連接到遠(yuǎn)程資源-使系統(tǒng)變得可伸縮的部分是將資源、或者訪問的資源,分布于多個(gè)服務(wù)器上。像生活中大多數(shù)事情一樣,當(dāng)構(gòu)建一個(gè)web服務(wù)時(shí)花時(shí)間提前做好計(jì)劃從長(zhǎng)遠(yuǎn)看來還是很有幫助的;了解一些注意事項(xiàng)和大
2、網(wǎng)站背后的權(quán)衡原則可以在創(chuàng)建小型網(wǎng)站時(shí)做出更明智的決定。以下是一些影響大規(guī)模web系統(tǒng)設(shè)計(jì)的關(guān)鍵原則:·可用性:對(duì)于很多公司來說一個(gè)網(wǎng)站的正常運(yùn)行時(shí)間是非常關(guān)鍵的聲譽(yù)和功能,像一些大型的在線零售系統(tǒng),即使一分鐘的宕機(jī)都有可能導(dǎo)致數(shù)千或者數(shù)百萬美元的損失,因此設(shè)計(jì)系統(tǒng)的時(shí)時(shí)可用性和彈性的錯(cuò)誤處理機(jī)制既是一個(gè)基本業(yè)務(wù)也是一個(gè)技術(shù)要求。高可用分布式系統(tǒng)需要仔細(xì)考慮關(guān)鍵組件的冗余,分系統(tǒng)失敗后能快速修復(fù),并且當(dāng)問題出現(xiàn)時(shí)優(yōu)雅型降級(jí)?!ば阅?網(wǎng)站的性能正在變成大多數(shù)站點(diǎn)考慮的一個(gè)重要的方面,網(wǎng)站的速度影響正常使用和用戶的滿意度,同樣影響搜索的排名,這也是影響網(wǎng)站收益和保留用戶的一個(gè)因素
3、。因此,創(chuàng)建一個(gè)快速響應(yīng)和低延遲的系統(tǒng)是非常關(guān)鍵的?!た煽啃?一個(gè)系統(tǒng)需要具備可靠性,比如同一個(gè)數(shù)據(jù)的請(qǐng)求始終返回同樣的數(shù)據(jù)響應(yīng)。如果數(shù)據(jù)改變或者被更新,那么同樣的數(shù)據(jù)將返回一個(gè)新的數(shù)據(jù)。用戶需要知道一些東西被寫入系統(tǒng)或者被存儲(chǔ)到系統(tǒng)后,系統(tǒng)會(huì)保持不變并且可以在以后恢復(fù)到合適的位置?!た缮炜s性:當(dāng)談到任何大型的分布式系統(tǒng)時(shí),規(guī)模大小只是考慮的其中一個(gè)方面,同樣重要的是增強(qiáng)處理較大規(guī)模的負(fù)載性能所做的努力,這通常稱為系統(tǒng)的可伸縮性??缮炜s性可以代表系統(tǒng)很多不同的參數(shù):額外流量的處理量,添加存儲(chǔ)容量的便意性,甚至事務(wù)的處理量。·可管理性:?設(shè)計(jì)一個(gè)系統(tǒng)可以方便操作是另一個(gè)重要的考
4、慮方面,系統(tǒng)的可管理性等同于操作的可伸縮性:維護(hù)和升級(jí)??晒芾硇孕枰紤]的事情是當(dāng)問題發(fā)生時(shí)方便診斷和了解問題,易于升級(jí)和修改,以及系統(tǒng)能簡(jiǎn)單性的操作(即,例行的操作有沒有失敗和異常?)·成本:?成本是一個(gè)重要的因素。很明顯這包含硬件和軟件成本,但同樣重要需要考慮的其他方面是部署和維護(hù)系統(tǒng)的成本。開發(fā)者構(gòu)建系統(tǒng)花費(fèi)的大量時(shí)間,運(yùn)維部署時(shí)間,甚至培訓(xùn)時(shí)間都需要考慮,成本是總體成本。以上每個(gè)原則都為設(shè)計(jì)分布式web架構(gòu)提供了基礎(chǔ)決策。然而,他們也能彼此互斥,例如要實(shí)現(xiàn)某個(gè)目標(biāo)就要以另外的作為代價(jià)。一個(gè)基本的例子:選擇通過單純?cè)黾痈嗟姆?wù)器(可擴(kuò)展性)來增加地址容量,是以可管理性
5、(你必須操作增加的服務(wù)器)和成本(服務(wù)器的價(jià)格)為代價(jià)的。當(dāng)設(shè)計(jì)任何的web應(yīng)用程序時(shí),考慮這些關(guān)鍵原則都是很重要的,即使得承認(rèn)一個(gè)設(shè)計(jì)可能要犧牲它們之中的一個(gè)或者多個(gè)。1.2.基礎(chǔ)當(dāng)設(shè)計(jì)一個(gè)系統(tǒng)架構(gòu)時(shí),有一些東西是要考慮的:正確的部分是什么,怎樣讓這些部分很好地融合在一起,以及好的折中方法是什么。通常在系統(tǒng)架構(gòu)需要之前就為它的可擴(kuò)展性投資不是一個(gè)聰明的商業(yè)抉擇;然而,在設(shè)計(jì)上的深謀遠(yuǎn)慮能在未來節(jié)省大量的時(shí)間和資源。這部分關(guān)注點(diǎn)是幾乎所有大型web應(yīng)用程序中心的一些核心因素:服務(wù)、冗余、劃分和錯(cuò)誤處理。每一個(gè)因素都包含了選擇和妥協(xié),特別是上部分提到的設(shè)計(jì)原則。為了詳細(xì)的解析這
6、些,最好是用一個(gè)例子來開始。實(shí)例:圖片托管應(yīng)用有時(shí)候你可能會(huì)在線上傳一張圖片。對(duì)于那些托管并負(fù)責(zé)分發(fā)大量圖片的網(wǎng)站來說,要搭建一個(gè)既節(jié)省成本又高效還能具備較低的延遲性(你能快速的獲圖片)的網(wǎng)站架構(gòu)確實(shí)是一種挑戰(zhàn)。我們來假設(shè)一個(gè)系統(tǒng),用戶可以上傳他們的圖片到中心服務(wù)器,這些圖片又能夠讓一些web鏈接或者API獲取這些圖片,就如同現(xiàn)在的Flickr或者Picasa。為了簡(jiǎn)化的需要,我們假設(shè)應(yīng)用程序分為兩個(gè)主要的部分:一個(gè)是上傳圖片到服務(wù)器的能力(通常說的寫操作),另一個(gè)是查詢一個(gè)圖片的能力。然而,我們當(dāng)然想上傳功能很高效,但是我們更關(guān)心的是能夠快速分發(fā)能力,也就是說當(dāng)某個(gè)人請(qǐng)求一
7、個(gè)圖片的時(shí)候(比如,一個(gè)web頁面或者其它應(yīng)用程序請(qǐng)求圖片)能夠快速的滿足。這種分發(fā)能力很像web服務(wù)器或者CDN連接服務(wù)器(CDN服務(wù)器一般用來在多個(gè)位置存儲(chǔ)內(nèi)容一邊這些內(nèi)容能夠從地理位置或者物理上更靠近訪問它的用戶,已達(dá)到高效訪問的目的)氣的作用。系統(tǒng)其他重要方面:·對(duì)圖片存儲(chǔ)的數(shù)量沒有限制,所以存儲(chǔ)需要可擴(kuò)展,在圖像數(shù)量方面需要考慮。·圖片的下載和請(qǐng)求不需要低延遲?!と绻脩羯蟼饕粋€(gè)圖片,圖片應(yīng)該都在那里(圖片數(shù)據(jù)的可靠性)?!は到y(tǒng)應(yīng)該容易管理(可管理性)。·由于圖片主機(jī)不會(huì)有高利潤(rùn)的空間,所以系