大型網(wǎng)站系統(tǒng)特點(diǎn):
ps:符合這些要求的所謂大型網(wǎng)站真的很少,可遇而不可求也。
說(shuō)到大型網(wǎng)站,就要先理一下大型網(wǎng)站的特點(diǎn):高并發(fā),大流量,高可用,海量數(shù)據(jù)等,本文根據(jù)《大型網(wǎng)站技術(shù)架構(gòu)》一書整理如下:
初始階段都比較簡(jiǎn)單,通常一臺(tái)服務(wù)器就可以搞定一個(gè)網(wǎng)站了,ssm-demo系列既是如此,一臺(tái)服務(wù)器搞定所有演示站點(diǎn),后期逐漸優(yōu)化,向更優(yōu)的方向進(jìn)化!
隨著網(wǎng)站業(yè)務(wù)的發(fā)展,一臺(tái)服務(wù)器逐漸不能滿足需求,這時(shí)候就需要將應(yīng)用和數(shù)據(jù)分離:
現(xiàn)在的80%的業(yè)務(wù)訪問(wèn)都會(huì)集中在20%的數(shù)據(jù)上,網(wǎng)站基本上都會(huì)使用緩存,前文中也有關(guān)于緩存的相關(guān)教程,我們的perfect-ssm項(xiàng)目目前處于這個(gè)階段中,通過(guò)緩存層的接入,減少部分對(duì)數(shù)據(jù)庫(kù)的直接壓力,提升網(wǎng)站的響應(yīng)性能。
因?yàn)閱我粦?yīng)用服務(wù)器能夠處理的請(qǐng)求連接有限,在網(wǎng)站訪問(wèn)高峰時(shí)期,應(yīng)用服務(wù)器會(huì)成為整個(gè)網(wǎng)站的瓶頸,因此使用負(fù)載均衡處理器勢(shì)在必然,通過(guò)負(fù)載均衡調(diào)度服務(wù)器,可將來(lái)自瀏覽器的訪問(wèn)請(qǐng)求分發(fā)到應(yīng)用的集群中的任何一臺(tái)服務(wù)器上,進(jìn)一步將壓力分擔(dān)掉。
當(dāng)用戶達(dá)到一定規(guī)模后,數(shù)據(jù)庫(kù)因?yàn)樨?fù)載壓力過(guò)高而成為網(wǎng)站的瓶頸,而目前主流的數(shù)據(jù)庫(kù)都提供主從熱備功能,通過(guò)配置兩臺(tái)數(shù)據(jù)庫(kù)主從關(guān)系,可以將一臺(tái)數(shù)據(jù)庫(kù)的數(shù)據(jù)更新同步到另一臺(tái)服務(wù)器上,網(wǎng)站利用數(shù)據(jù)庫(kù)這一功能實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫分離,從而改善數(shù)據(jù)庫(kù)負(fù)載壓力。
目前很多云服務(wù)商都有類似的產(chǎn)品提供,當(dāng)然,也可以自己搭建數(shù)據(jù)庫(kù)集群并在業(yè)務(wù)代碼中進(jìn)行讀寫分離的實(shí)現(xiàn)(有時(shí)間會(huì)整理相關(guān)教程)。
提高網(wǎng)站的訪問(wèn)速度,主要手段有使用CDN和反向代理。
CDN和反向代理的基本原理都是緩存,區(qū)別在于CDN部署在網(wǎng)絡(luò)提供商的機(jī)房,而反向代理是部署在網(wǎng)站的中心機(jī)房,當(dāng)用戶請(qǐng)求到達(dá)中心機(jī)房后,首先訪問(wèn)的反向代理,如果反向代理緩存著用戶請(qǐng)求的資源,則直接返回給用戶。
任何強(qiáng)大的單一服務(wù)器都滿足不了大型網(wǎng)站持續(xù)增長(zhǎng)的業(yè)務(wù)需求。 分布式數(shù)據(jù)庫(kù)時(shí)網(wǎng)站數(shù)據(jù)庫(kù)拆分的最后手段,只用在單表數(shù)據(jù)規(guī)模非常大的時(shí)候才使用。不到不得已時(shí),網(wǎng)站更常用的數(shù)據(jù)庫(kù)拆分手段是業(yè)務(wù)拆分,將不同業(yè)務(wù)的數(shù)據(jù)部署在不同的物理服務(wù)器上。
搜素引擎也基本已經(jīng)形成現(xiàn)在大型網(wǎng)站必須提供的功能了,網(wǎng)站需要采用一些非關(guān)系數(shù)據(jù)庫(kù)技術(shù)如NoSQL和非數(shù)據(jù)庫(kù)查詢技術(shù)如搜索引擎。各種開源產(chǎn)品不斷涌現(xiàn),遍地開花:redis、mongodb、solr、elastic stack、hadoop、spark......
關(guān)于搜索引擎的接入,目前考慮在My-Blog項(xiàng)目中接入elastic search,優(yōu)化文章搜索模塊。
大型網(wǎng)站為了應(yīng)對(duì)日益復(fù)雜的業(yè)務(wù)場(chǎng)景,通過(guò)使用分而治之的手段將真?zhèn)€網(wǎng)站業(yè)務(wù)拆分成不同的產(chǎn)品線。
具體到技術(shù)上,也會(huì)根據(jù)產(chǎn)品線話費(fèi),將一個(gè)網(wǎng)站拆分成許多不同的應(yīng)用,每個(gè)應(yīng)用獨(dú)立部署維護(hù)。應(yīng)用之間可以通過(guò)超鏈接建立管理,也可以通過(guò)消息隊(duì)列進(jìn)行數(shù)據(jù)分發(fā),當(dāng)然最多的還是通過(guò)訪問(wèn)同一個(gè)數(shù)據(jù)存儲(chǔ)系統(tǒng)來(lái)構(gòu)成一個(gè)關(guān)聯(lián)的完整系統(tǒng)。
由于每一個(gè)應(yīng)用系統(tǒng)都需要執(zhí)行許多相同的業(yè)務(wù)操作,比如用戶管理,session管理,那么可以將這些公用的業(yè)務(wù)提取出來(lái),獨(dú)立部署。
偷懶一下,直接用了前一篇文章的圖:
整理圖片整理的要吐血了。
聯(lián)系客服