大規(guī)模網(wǎng)站架構(gòu)技能原理透析 |
發(fā)布時間:2019-06-13 文章來源:本站 瀏覽次數(shù):3194 |
就產(chǎn)品開發(fā)層面來講,互聯(lián)網(wǎng)開發(fā)確實簡略多了。這里首要弄清一個概念,我所說的互聯(lián)網(wǎng)開發(fā)并不是指一切的B/S使用,例如B/S辦法的銀行內(nèi)部事務(wù)體系。我所說的互聯(lián)網(wǎng)使用是指在互聯(lián)網(wǎng)上服務(wù)于公眾的使用。企業(yè)級的事務(wù)體系,它的特點是事務(wù)邏輯是比較雜亂的,但用戶一般不太大;互聯(lián)網(wǎng)使用則相反,事務(wù)邏輯一般很簡略,但面臨的是海量用戶。 既然互聯(lián)網(wǎng)使用開發(fā)的事務(wù)邏輯不雜亂,但為什么大型網(wǎng)站都投入了那么多的技能人員呢?首要是因為運營的環(huán)境太雜亂,這種雜亂性構(gòu)成的原因以下: 1、揭露性 網(wǎng)站的服務(wù)是揭露的,任何人都能夠來拜訪,所以就會直接面臨大量的不良用戶,體系數(shù)據(jù)的安全面臨很大的危險,一旦體系被攻入,成果將是災(zāi)難性的。 2、拜訪量大 拜訪量大,就意味著網(wǎng)站有必要能夠接受高并發(fā)大流量的考驗,假如網(wǎng)站的服務(wù)才能和健壯性等達不到要求,你的體系就會被沖垮。 3、用戶體會 用戶體會要好,除了產(chǎn)品規(guī)劃的要素之外,就要求拜訪網(wǎng)站的速度要快,具有高可用性,別用一會就掛。 網(wǎng)站各子體系怎么進行布置,怎么進步體系的健壯性和高可用性,怎么完結(jié)網(wǎng)站的安全,怎么進步拜訪速度,怎么進行負(fù)載均衡,乃至于選用什么的硬件設(shè)備,別的,網(wǎng)站發(fā)展的不同時期會可能會選用不同的架構(gòu),怎么完結(jié)架構(gòu)的平滑過渡,怎么使現(xiàn)在的架構(gòu)具有彈性,具備可擴展的才能,這都是大型網(wǎng)站有必要處理的問題,也是小網(wǎng)站生長進程中遲早會遇到的問題。 網(wǎng)站組織包含網(wǎng)站的軟件架構(gòu)和體系架構(gòu)兩部分,軟件架構(gòu)首要是指子體系和邏輯層的區(qū)分結(jié)構(gòu);體系架構(gòu),一般是體系布置結(jié)構(gòu)。 體系架構(gòu)師的常識體系比較雜亂,所謂的見多識廣,多數(shù)是由運維工程師生長起來的,他們開發(fā)才能不強,編碼不多,但動手才能很強,腳本編寫十分熟練,經(jīng)常會做各種類型的實驗,密切盯梢最新技能最新產(chǎn)品的相關(guān)信息。當(dāng)然,一個大型的網(wǎng)站,需求一個架構(gòu)師團隊,他們各自承當(dāng)拿手領(lǐng)域的架構(gòu)規(guī)劃,比方安全架構(gòu)、存儲架構(gòu)等等。 我覺得一般的開發(fā)人員仍是很難走上這條路的,這份作業(yè)需求經(jīng)歷,需求不斷實踐,但假如開發(fā)人員一旦走上了這條路,會有很大的發(fā)展,首要源于開發(fā)人員的思考習(xí)慣和技能的深度。我的這系列文章,開發(fā)人員能夠作為參考,比方怎么開發(fā)可分布式布置的體系,別的許多朋友都是身兼數(shù)職,從開發(fā)到施行,到布置全部包辦。我個人深感精力有限,所以又特意找了幾個朋友從Unix/Linux體系和Windows體系不同視點進行探究,以造福正在探索中的朋友,有愛好的朋友也能夠參與。 其實,這部分內(nèi)容我一直在寫,比方PHP深度探究系列,寫了大量的關(guān)于apache的內(nèi)容,我現(xiàn)已大體把apache代碼閱覽了一遍,很費時刻,進度緩慢,但我想這有助于咱們理解apache的配置和調(diào)優(yōu)。 在介紹網(wǎng)站架構(gòu)之前,咱們先介紹一些網(wǎng)站架構(gòu)中最根底和常見的概念,以便更好的理解后邊的有關(guān)負(fù)載均衡和分布式存儲等技能。第一個,首要講講CDN。 1、CDN是什么 CDN(Content Delivery Network),便是內(nèi)容發(fā)布網(wǎng)或許內(nèi)容分發(fā)網(wǎng),它的首要意圖:經(jīng)過在現(xiàn)有的Internet中增加一層新的網(wǎng)絡(luò)架構(gòu),將網(wǎng)站的內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡(luò)邊際,使用戶能夠就近取得所需的內(nèi)容,然后進步用戶拜訪網(wǎng)站的響應(yīng)速度,提高用戶體會,同時能夠渙散拜訪壓力,把原本用戶會集拜訪渙散到各地去。網(wǎng)站的內(nèi)容供給商(比方新浪、搜狐、網(wǎng)易等等)使用CDN,就能夠在微觀層處理一部分大流量、海量用戶并發(fā)等令人頭疼的問題。 2、CDN的組成 內(nèi)容發(fā)布網(wǎng)(CDN)是一個經(jīng)戰(zhàn)略性布置的全體體系,包含分布式存儲、負(fù)載均衡、網(wǎng)絡(luò)懇求的重定向和內(nèi)容辦理4個要件,而內(nèi)容辦理和全局的網(wǎng)絡(luò)流量辦理是CDN的中心地點。經(jīng)過用戶就近性和服務(wù)器負(fù)載的判別,CDN確保內(nèi)容以一種極為高效的辦法為用戶的懇求供給服務(wù),達到用戶所要求的服務(wù)距用戶僅有"一跳"(Single Hop)之遙。 咱們一般的內(nèi)容發(fā)布模式都是將網(wǎng)站數(shù)據(jù)放到一處,然后應(yīng)對來自世界各地的拜訪,咱們多數(shù)考慮的是軟件布置架構(gòu),很少考慮網(wǎng)絡(luò)硬件架構(gòu)。與之構(gòu)成比照的是,CDN則強調(diào)了網(wǎng)絡(luò)在內(nèi)容發(fā)布中的重要性。經(jīng)過引進自動的內(nèi)容辦理層的和全局負(fù)載均衡,CDN從根本上差異于傳統(tǒng)的內(nèi)容發(fā)布模式。 內(nèi)容供給商承當(dāng)了他們不應(yīng)干也干不好的內(nèi)容發(fā)布服務(wù)。 3、互聯(lián)網(wǎng)服務(wù)的產(chǎn)業(yè)鏈 縱觀整個寬帶服務(wù)的價值鏈,內(nèi)容供給商和用戶位于整個價值鏈的兩端,中心依靠網(wǎng)絡(luò)服務(wù)供給商將其串接起來。隨著互聯(lián)網(wǎng)工業(yè)的老練和商業(yè)模式的革新,在這條價值鏈上的角色越來越多也越來越細(xì)分,出現(xiàn)了內(nèi)容運營商、托管服務(wù)供給商、主干網(wǎng)絡(luò)服務(wù)供給商、接入服務(wù)供給商等等。在這一條價值鏈上的每一個角色都要分工合作、各司其職才能為客戶供給良好的服務(wù),然后帶來多贏的局勢。從內(nèi)容與網(wǎng)絡(luò)的結(jié)合模式上看,內(nèi)容的發(fā)布現(xiàn)已走過了ICP的內(nèi)容(使用)服務(wù)器和IDC這兩個階段。IDC的熱潮也催生了托管服務(wù)供給商這一角色?墒,IDC并不能處理內(nèi)容的有用發(fā)布問題。內(nèi)容位于網(wǎng)絡(luò)的中心并不能處理主干帶寬的占用和樹立IP網(wǎng)絡(luò)上的流量次序。因而將內(nèi)容推到網(wǎng)絡(luò)的邊際,為用戶供給就近性的邊際服務(wù),然后確保服務(wù)的質(zhì)量和整個網(wǎng)絡(luò)上的拜訪次序就成了一種清楚明了的挑選,這便是CDN服務(wù)模式。CDN的樹立處理了困擾內(nèi)容運營商的內(nèi)容"會集與渙散"的兩難挑選,無疑關(guān)于構(gòu)建良好的互聯(lián)網(wǎng)價值鏈?zhǔn)怯袃r值的,也是不可或缺的最優(yōu)網(wǎng)站加速服務(wù)。 4、CDN服務(wù)供給商 ChinaCache是中國最大的CDN服務(wù)供給商,是不是僅有未可知也。要想成為CDN服務(wù)供給商,恐怕要擺平電信、網(wǎng)通、鐵通等等運營商,這得需求什么樣的才能和背景不得而知。它的服務(wù)節(jié)點在全球現(xiàn)已超越130個,其中國內(nèi)節(jié)點超越80個,掩蓋全國首要6大網(wǎng)絡(luò)(所謂6線機房,便是這么來的)的首要省份,象各大門戶網(wǎng)站,比方新浪、網(wǎng)易等等都是租用了他們的服務(wù)。所以,你無論是在南邊,或許北方,仍是在北美,拜訪這些門戶網(wǎng)站,感覺速度都很快,最首要的原因之一便是CDN發(fā)揮了效果。一般小網(wǎng)站是用不起這服務(wù)的,所以慢點就慢點了吧,能夠租用互聯(lián)互通的6線機房,假如網(wǎng)絡(luò)足夠?qū)挼脑,用戶也能夠忍受。假如想繼續(xù)提高用戶體會的話,就需求做一些網(wǎng)站鏡像,布置在具有代表性的幾個大城市,比方華南能夠布置在廣州,華東能夠布置在上海,華北能夠布置在北京,不過內(nèi)容鏡像的進程,就需求自己去布置和保護。還有的網(wǎng)站,選用內(nèi)容分割的辦法,比方樹立針對各地的分站,事務(wù)狀況不同,可能布置的戰(zhàn)略不同。CDN能夠以為是根底網(wǎng)絡(luò)建造的一種戰(zhàn)略 動態(tài)內(nèi)容依照存在形態(tài)能夠分為三類。 第一類:內(nèi)容長時刻不需變化,這類內(nèi)容一般是經(jīng)過網(wǎng)頁靜化技能,完結(jié)動態(tài)內(nèi)容轉(zhuǎn)換成靜態(tài)內(nèi)容,然后達到cdn布置,典型的便是內(nèi)容類網(wǎng)站,比方新浪、搜狐、網(wǎng)易等等的內(nèi)容發(fā)布體系cms,內(nèi)容的增刪改等辦理作業(yè)被準(zhǔn)實時同步到各個節(jié)點。 第二類:內(nèi)容可能會短時刻內(nèi)發(fā)作變動,可是最終會穩(wěn)定。比方論壇、博客等使用,這類服務(wù)供給的內(nèi)容依照必定的時刻距離,完結(jié)批量靜化,當(dāng)然也有實時靜化,像Mop的大雜燴、網(wǎng)易社區(qū)便是使用了這樣的戰(zhàn)略。 第三類:內(nèi)容會實時變化,十分個性化。比方郵箱使用,這類服務(wù)供給的內(nèi)容無法完結(jié)靜化,只能經(jīng)過實行分區(qū)域布置和負(fù)載均衡等手法進行優(yōu)化。 關(guān)于供給cdn服務(wù)的廠商來講,靜態(tài)內(nèi)容的cdn自然沒有問題,關(guān)于第三類服務(wù),只能從通訊鏈路層進行相應(yīng)的優(yōu)化。 關(guān)于許多網(wǎng)站的偽靜化,有的出于Seo的考慮,有的出于安全性的考慮,手法基本上是rewrite Url。它只不過是一種外在的表現(xiàn)辦法,與Html靜化是兩回事,它依然是一種動態(tài)內(nèi)容。 1. 負(fù)載均衡的分類 負(fù)載均衡技能在網(wǎng)站運營進程中使用十分普遍,技能也很老練。負(fù)載均衡技能依照軟硬件辦法分為軟均衡和硬均衡。軟均衡便是根據(jù)軟件技能的均衡,硬均衡是根據(jù)硬件技能的均衡; 依照網(wǎng)絡(luò)協(xié)議區(qū)分又分為四層均衡和七層均衡。四層均衡便是根據(jù)OSI網(wǎng)絡(luò)層的數(shù)據(jù)均衡,七層均衡是根據(jù)OSI使用層的數(shù)據(jù)均衡。 各種均衡辦法在大型網(wǎng)站中均有選用,而且大多數(shù)狀況下,是多種均衡辦法的組合。 2. DNS輪詢均衡 這種辦法,算是比較獨立的一種辦法,不在上述區(qū)分之列,但使用比較廣泛,一般用在網(wǎng)站最前端。你能夠做個實驗,在dos指令行中運轉(zhuǎn)nslook指令。咱們從瀏覽器發(fā)起的拜訪懇求,那么你輸入的域名首要需求經(jīng)過DNS服務(wù)器進行解析,Dns服務(wù)器的解析的進程便是依照A記載的次序,順次分配IP地址。Dns輪詢辦法完結(jié)均衡便是利用這個原理,在一個域名下面綁定N個IP地址,拜訪懇求被均衡到不同的設(shè)備。Dns輪詢辦法供給的IP地址,在大型網(wǎng)站中往往是一個集群的地址,可能是均衡交換機也可能是均衡服務(wù)器。關(guān)于小網(wǎng)站的話,掛接多臺服務(wù)器也沒有問題。 DNS輪詢均衡的長處: 1、零本錢:只是在Dns服務(wù)器上綁定幾個A記載,域名注冊商一般都供給; 2、布置簡略:便是在網(wǎng)絡(luò)拓?fù)溥M行設(shè)備擴增,然后在Dns服務(wù)器上增加記載。 DNS輪詢均衡的缺點: 1、流量分配不均:Dns解析進程其實環(huán)節(jié)許多,而且是一種層層緩存的機制,你的dns服務(wù)器雖然進行更新,可是客戶機、以及網(wǎng)絡(luò)上其它的dns服務(wù)器不會實時更新,所以流量很難確保100%的均勻,F(xiàn)在,dns服務(wù)器都供給了多種手法能夠調(diào)整dns輪詢分配的戰(zhàn)略,可是確實無法確保很完美的均衡。 2、健康檢查:Dns服務(wù)器中A記載地址中的某一臺服務(wù)器宕機,DNS服務(wù)器是無法知道的,依舊會將拜訪分配到此服務(wù)器。所以需求人員或許工具進行實時檢測,在某臺機器宕機之后,把備份機推上生產(chǎn)線,假如想要從A記載地址去除某個地址,這個告訴進程需求幾個小時乃至更久才能擴散到一切的客戶機。 Dns輪詢辦法推到服務(wù)的最前端仍是很有用的,它經(jīng)過最原始的辦法,把拜訪用戶映射到不同的服務(wù)集群上。關(guān)于大型網(wǎng)站來講,對外服務(wù)的IP地址是不可能經(jīng)常變動的,而且后端的集群一旦宕掉,能夠敏捷推上冗余集群。再加上,一般都是經(jīng)過CDN布置,服務(wù)被拆分到各個部分,所以在運營進程中不會產(chǎn)生太大的影響。 3. OSI七層模型 咱們接下來講講七層均衡。要理解四七層均衡的原理,就先要回想一下大學(xué)課本里學(xué)的網(wǎng)絡(luò)七層模型(OSI)。 OSI是一個開放性的通行體系互連參考模型,他是一個界說的十分好的協(xié)議標(biāo)準(zhǔn)。OSI模型有7層結(jié)構(gòu),每層都能夠有幾個子層。 OSI七層模型是一個很好的理論模型,可是在實際使用中都做了裁剪。尤其是TCP/IP的盛行,把7層結(jié)構(gòu)壓成了4層, 所以許多人都批評OSI七層模型過于雜亂,可是作為一個完整的全面的網(wǎng)絡(luò)模型,仍是被大家十分認(rèn)可的。OSI的7層從上到下分別是使用層、表明層、會話層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層、物理層。 OSI 7層的功用描述: (1)使用層:與其他計算機進行通訊的一個使用,它是對應(yīng)使用程序的通訊服務(wù)的。例如,一個沒有通訊功用的字處理程序就不能履行通訊的代碼,從事字處理作業(yè)的程序員也不關(guān)心OSI的第7層?墒,假如增加了一個傳輸文件的選項,那么字處理器的程序員就需求完結(jié)OSI的第7層。示例:telnet,HTTP,FTP,WWW,NFS,SMTP等。 (2)表明層:這一層的首要功用是界說數(shù)據(jù)格局及加密。例如,F(xiàn)TP允許你挑選以二進制或ASII格局傳輸。假如挑選二進制,那么發(fā)送方和接收方不改動文件的內(nèi)容。假如挑選ASII格局,發(fā)送方將把文本從發(fā)送方的字符集轉(zhuǎn)換成標(biāo)準(zhǔn)的ASII后發(fā)送數(shù)據(jù)。在接收方將標(biāo)準(zhǔn)的ASII轉(zhuǎn)換成接收方計算機的字符集。示例:加密,ASII等。 (3)會話層:他界說了怎么開端、控制和完畢一個會話,包含對多個雙向小時的控制和辦理,以便在只完結(jié)接連音訊的一部分時能夠告訴使用,然后使表明層看到的數(shù)據(jù)是接連的,在某些狀況下,假如表明層收到了一切的數(shù)據(jù),則用數(shù)據(jù)代表表明層。示例:RPC,SQL等。 (4)傳輸層:這層的功用包含是否挑選過失恢復(fù)協(xié)議仍是無過失恢復(fù)協(xié)議,及在同一主機上對不同使用的數(shù)據(jù)流的輸入進行復(fù)用,還包含對收到的次序不對的數(shù)據(jù)包的從頭排序功用。示例:TCP,UDP,SPX。 (5)網(wǎng)絡(luò)層:這層對端到端的包傳輸進行界說,他界說了能夠標(biāo)識一切結(jié)點的邏輯地址,還界說了路由完結(jié)的辦法和學(xué)習(xí)的辦法。為了習(xí)慣最大傳輸單元長度小于包長度的傳輸介質(zhì),網(wǎng)絡(luò)層還界說了怎么將一個包分解成更小的包的分段辦法。示例:IP,IPX等。 (6)數(shù)據(jù)鏈路層:他界說了在單個鏈路上怎么傳輸數(shù)據(jù)。這些協(xié)議與被討論的歌種介質(zhì)有關(guān)。示例:ATM,F(xiàn)DDI等。 (7)物理層:OSI的物理層標(biāo)準(zhǔn)是有關(guān)傳輸介質(zhì)的特性標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)一般也參考了其他組織制定的標(biāo)準(zhǔn)。連接頭、針、針的使用、電流、電流、編碼及光調(diào)制等都屬于各種物理層標(biāo)準(zhǔn)中的內(nèi)容。物理層常用多個標(biāo)準(zhǔn)完結(jié)對一切細(xì)節(jié)的界說 |
|