我們知道,對(duì)于一個(gè)大型網(wǎng)站來(lái)說(shuō),可伸縮性是非常重要的,怎么樣在縱向和橫向有良好的可伸縮性,就需要在做架構(gòu)設(shè)計(jì)的時(shí)候考慮到一個(gè)分的原則,我想在多個(gè)方面說(shuō)一下怎么分:
首先是橫向的分:
1. 大的網(wǎng)站化解為多個(gè)小網(wǎng)站:當(dāng)我們一個(gè)網(wǎng)站有多個(gè)功能的時(shí)候,可以考慮把這個(gè)網(wǎng)站拆分成幾個(gè)小模塊,每一個(gè)模塊可以是一個(gè)網(wǎng)站,這樣的話我們到時(shí)候就可以很靈活地去把這些網(wǎng)站部署到不同的服務(wù)器上。
2. 靜態(tài)動(dòng)態(tài)分離:靜態(tài)文件和動(dòng)態(tài)文件最好分離開(kāi)成2個(gè)網(wǎng)站,我們知道靜態(tài)網(wǎng)站和動(dòng)態(tài)網(wǎng)站對(duì)服務(wù)器來(lái)說(shuō)壓力的側(cè)重不同,前者可能重IO后者重CPU,那么我們?cè)谶x擇硬件的時(shí)候也可以有側(cè)重,而且靜態(tài)和動(dòng)態(tài)內(nèi)容的緩存策略也不一樣。典型的應(yīng)用,我們一般會(huì)有獨(dú)立的文件或圖片服務(wù)器。而且,使用不用的域名還可以提高瀏覽器并行加載的能力。
3. 按照功能來(lái)分:比如有一個(gè)模塊是負(fù)責(zé)上傳的,上傳操作很消耗時(shí)間,如果和其它應(yīng)用混在一起的話很可能,一點(diǎn)點(diǎn)訪問(wèn)就會(huì)使服務(wù)器癱瘓,這種特殊的模塊應(yīng)該分開(kāi)。安全的不安全的也要分開(kāi),還需要考慮到以后SSL的購(gòu)買。
4. 我們不一定要全部用自己的服務(wù)器,搜索、報(bào)表可以依靠別人的服務(wù),比如google的搜索和報(bào)表服務(wù),自己做的不一定比得過(guò)別人,服務(wù)器帶寬都省了。
其次是縱向的分:
1. 文件也相當(dāng)于數(shù)據(jù)庫(kù),IO的流量可能比數(shù)據(jù)庫(kù)還大,這也算是縱向級(jí)別的訪問(wèn),上傳的文件圖片一定要和WEB服務(wù)器分開(kāi)。當(dāng)然,數(shù)據(jù)庫(kù)和網(wǎng)站都放在一個(gè)服務(wù)器上的很少了,這是最基本的。
2. 對(duì)于涉及到數(shù)據(jù)庫(kù)訪問(wèn)的動(dòng)態(tài)程序來(lái)說(shuō),我們可以使用一個(gè)中間層(所謂的應(yīng)用層或邏輯層)來(lái)訪問(wèn)數(shù)據(jù)庫(kù)(部署在獨(dú)立的服務(wù)器上),最大的好處就是緩存和靈活性。緩存的內(nèi)存占用比較大,我們要把它和網(wǎng)站進(jìn)程分開(kāi),而且這樣做我們可以很方便的去改變一些數(shù)據(jù)訪問(wèn)的策略,即使到時(shí)候數(shù)據(jù)庫(kù)有分布的話在這里可以做一個(gè)調(diào)配工作,這樣靈活性就很大了。還有好處是中間層可以做電線網(wǎng)通橋梁,可能網(wǎng)通訪問(wèn)雙線再訪問(wèn)電信會(huì)比網(wǎng)通直接訪問(wèn)電信服務(wù)器快。
有人說(shuō)我不分,我可以做負(fù)載均衡,對(duì),是可以的,但是如果分的話,同樣的10臺(tái)機(jī)器肯定比不分10臺(tái)機(jī)器可以承受更多的訪問(wèn)量,而且對(duì)硬件的需求可能不會(huì)很高,因?yàn)橹佬枰膫(gè)硬件特別好。爭(zhēng)取讓每一個(gè)服務(wù)期都不空閑,又都不是太忙,合理進(jìn)行組合調(diào)整和擴(kuò)充,這樣的系統(tǒng)伸縮性就高了,能根據(jù)訪問(wèn)量來(lái)調(diào)整的前提就是之前有考慮到分,分的好處是靈活性、伸縮性、隔離性以及安全性。
對(duì)服務(wù)器來(lái)說(shuō),我們有幾點(diǎn)是要長(zhǎng)期觀察的,任何一點(diǎn)都可能是瓶頸:
1. CPU:動(dòng)態(tài)文件的解析需要比較多的CPU,CPU出現(xiàn)瓶頸就要看是不是哪個(gè)功能過(guò)長(zhǎng)時(shí)間占用線程,如果是就分出去;蛘呔褪敲恳粋(gè)請(qǐng)求處理時(shí)間不長(zhǎng),但是訪問(wèn)量很高,那么就加服務(wù)器。CPU是好東西,不能讓他干等,不做事情。
2. 內(nèi)存:緩存從IIS進(jìn)程獨(dú)立出去,一般對(duì)WEB服務(wù)器來(lái)說(shuō)內(nèi)存不夠的情況不是很多。內(nèi)存比磁盤快,要合理利用。
3. 磁盤IO:用性能監(jiān)視器找到哪些文件IO特別大,找到了就分到獨(dú)立的一組文件服務(wù)器上去,或者直接做CDN。磁盤慢,大規(guī)模讀取數(shù)據(jù)的應(yīng)用靠緩存,大規(guī)模寫入數(shù)據(jù)的應(yīng)用可以靠隊(duì)列來(lái)降低突發(fā)的并發(fā)。
4. 網(wǎng)絡(luò):我們知道,網(wǎng)絡(luò)的通訊是比較慢的,比磁盤還慢,如果是做分布式緩存,分布式計(jì)算的話,要考慮到物理服務(wù)器之間網(wǎng)絡(luò)通訊的時(shí)間,當(dāng)然,在流量大了以后,這可以提高系統(tǒng)的接納能力一個(gè)等級(jí)。靜態(tài)內(nèi)容可以借助CSD分擔(dān)一部分,在做服務(wù)器假設(shè)的時(shí)候還要考慮中國(guó)特色的電信網(wǎng)通情況以及防火墻。
對(duì)SQL SERVER數(shù)據(jù)庫(kù)服務(wù)器來(lái)說(shuō):
其實(shí)還是水平分割和縱向分割,一個(gè)二維表,水平分割就是橫過(guò)來(lái)切一刀,縱向分割就是豎直切一刀:
本新聞共
2頁(yè),當(dāng)前在第
1頁(yè)
1 2