大型网站架构设计
“
大型網(wǎng)站的架構(gòu)設(shè)計(jì),涉及到的面非常多,并不像大家想象的那樣,就是一個(gè)網(wǎng)站這么簡(jiǎn)單,今天拋磚引玉,希望能給想從事互聯(lián)網(wǎng)行業(yè)的同學(xué)一點(diǎn)初步的概念。
架構(gòu)設(shè)計(jì),其實(shí)就要清楚整個(gè)大型網(wǎng)站技術(shù)架構(gòu)的演變歷程,知道每個(gè)階段的瓶頸在哪里,以及對(duì)應(yīng)的解決方案。很多公司都是小做到大,特別是創(chuàng)業(yè)公司,如果一步步發(fā)展起來,網(wǎng)站架構(gòu)演變都會(huì)經(jīng)歷這些步驟,請(qǐng)重點(diǎn)注意順序。
大型網(wǎng)站架構(gòu)演變過程
架構(gòu)演變第一步:物理分離webserver和數(shù)據(jù)庫(kù)
架構(gòu)演變第二步:增加頁(yè)面緩存
架構(gòu)演變第三步:增加頁(yè)面片段緩存
架構(gòu)演變第四步:數(shù)據(jù)緩存
架構(gòu)演變第五步: 增加webserver(集群)
架構(gòu)演變第六步:分庫(kù)(首先考慮)
架構(gòu)演變第七步:分表、DAL和分布式緩存
架構(gòu)演變第八步:增加更多的webserver
架構(gòu)演變第九步:數(shù)據(jù)讀寫分離和廉價(jià)存儲(chǔ)方案
架構(gòu)演變第十步:進(jìn)入大型分布式應(yīng)用時(shí)代和廉價(jià)服務(wù)器群夢(mèng)想時(shí)代
由于篇幅的關(guān)系,今天不重點(diǎn)講如何一步步演變的歷程,我們倒序來查看,先看森林,再看樹木。
大型分布式應(yīng)用架構(gòu)組件
分布式緩存
高并發(fā)環(huán)境下,大量的讀寫請(qǐng)求涌向數(shù)據(jù)庫(kù),磁盤的處理速度與內(nèi)存顯然不在一個(gè)量級(jí),從減輕數(shù)據(jù)庫(kù)的壓力和提高系統(tǒng)響應(yīng)速度兩個(gè)角度來考慮,一般都會(huì)在數(shù)據(jù)庫(kù)之前加一層緩存。由于單臺(tái)機(jī)器的內(nèi)存資源以及承載能力有限,并且,如果大量使用本地緩存,也會(huì)使相同的數(shù)據(jù)被不同的節(jié)點(diǎn)存儲(chǔ)多份,對(duì)內(nèi)存資源造成較大的浪費(fèi),因此,才催生出了分布式緩存。
分布式緩存系統(tǒng)
memcached ,redis,動(dòng)態(tài)、靜態(tài)數(shù)據(jù)的緩存,這里會(huì)涉及到:一致性hash算法、分布式session、數(shù)據(jù)復(fù)制多份、單臺(tái)緩存失效、集群間能夠自動(dòng)復(fù)制和備份等知識(shí)點(diǎn)。
CDN
全稱:Content Delivery Network或Content Ddistribute Network,即內(nèi)容分發(fā)網(wǎng)絡(luò)基本。通過在網(wǎng)絡(luò)各處放置節(jié)點(diǎn)服務(wù)器所構(gòu)成的在現(xiàn)有的互聯(lián)網(wǎng)基礎(chǔ)之上的一層智能虛擬網(wǎng)絡(luò),CDN系統(tǒng)能夠?qū)崟r(shí)地根據(jù)網(wǎng)絡(luò)流量和各節(jié)點(diǎn)的連接、負(fù)載狀況以及到用戶的距離和響應(yīng)時(shí)間等綜合信息將用戶的請(qǐng)求重新導(dǎo)向離用戶最近的服務(wù)節(jié)點(diǎn)上。
現(xiàn)在大型互聯(lián)網(wǎng)公司都建立由屬于自己的CDN基站,也有第三方專注于CDN的基站等。
持久化儲(chǔ)存
具體說就是以IBM為代表的主機(jī)、以O(shè)RACLE為代表的關(guān)系型數(shù)據(jù)庫(kù),以及以EMC為代表的高端存儲(chǔ)設(shè)備,被新型的云計(jì)算技術(shù)所替換,也就是我們常說的“云化”,也就是廉價(jià)存儲(chǔ)方案。
IBM的產(chǎn)品,在我國(guó)的金融行業(yè)中占據(jù)著絕對(duì)的優(yōu)勢(shì),Oracle的數(shù)據(jù)庫(kù),在電信、證券行業(yè)占著相當(dāng)大的份額,EMC的存儲(chǔ),在銀行、電信、證券等壟斷行業(yè),都占據(jù)著較大的份額,要知道,EMC是全球最大的存儲(chǔ)公司。
由于互聯(lián)網(wǎng)技術(shù)發(fā)展日新月異,擴(kuò)展速度十分迅速,這是傳統(tǒng)的電信、金融、證券、保險(xiǎn)、電力等行業(yè)所不能比的。因此互聯(lián)網(wǎng)企業(yè)的后臺(tái)架構(gòu),需要具備很強(qiáng)的可擴(kuò)展性。比如,假設(shè)一個(gè)網(wǎng)站,今年的活躍用戶數(shù)量只有10萬(wàn),明天就有可能上升到1000多萬(wàn),這就需要后臺(tái)架構(gòu)具有很強(qiáng)的擴(kuò)展性,可以根據(jù)用戶的數(shù)量進(jìn)行靈活的擴(kuò)展。
所以才有了阿里從2008年開始的轟轟烈烈的去IOE事件。
數(shù)據(jù)庫(kù)拆分
一般先分庫(kù),如果分庫(kù)后查詢?nèi)匀宦?#xff0c;于是按照分庫(kù)的思想開始做分表的工作數(shù)據(jù)庫(kù)采用分布式數(shù)據(jù)庫(kù)(所有節(jié)點(diǎn)的數(shù)據(jù)加起來才算是整體數(shù)據(jù)),文件系統(tǒng)采用分布式文件系統(tǒng)任何強(qiáng)大的單一服務(wù)器都滿足不了大型系統(tǒng)持續(xù)增長(zhǎng)的業(yè)務(wù)需求,數(shù)據(jù)庫(kù)讀寫分離隨著業(yè)務(wù)的發(fā)展最終也將無(wú)法滿足需求,需要使用分布式數(shù)據(jù)庫(kù)及分布式文件系統(tǒng)來支撐。
分布式數(shù)據(jù)庫(kù)是系統(tǒng)數(shù)據(jù)庫(kù)拆分的最后方法,只有在單表數(shù)據(jù)規(guī)模非常龐大的時(shí)候才使用,更常用的數(shù)據(jù)庫(kù)拆分手段是業(yè)務(wù)分庫(kù),將不同的業(yè)務(wù)數(shù)據(jù)庫(kù)部署在不同的物理服務(wù)器上。
比如淘寶中期開始的數(shù)據(jù)庫(kù)端按照業(yè)務(wù)垂直拆分:按照業(yè)務(wù)交易數(shù)據(jù)庫(kù)、用戶數(shù)據(jù)庫(kù)、商品數(shù)據(jù)庫(kù)、店鋪數(shù)據(jù)庫(kù)等進(jìn)行拆分。
還有就是水平擴(kuò)展,分庫(kù)分表,再結(jié)合讀寫分離一起。當(dāng)然,分庫(kù)分表需要涉及到對(duì)應(yīng)的SQL路由規(guī)則主庫(kù)備庫(kù)等,淘寶設(shè)計(jì)了一套TDDL來解決這些問題,應(yīng)用端只需配置對(duì)應(yīng)的規(guī)則即可,對(duì)應(yīng)用端的沒有任何侵入的設(shè)計(jì)。
消息系統(tǒng)
消息隊(duì)列中間件是分布式系統(tǒng)中重要的組件,主要解決應(yīng)用耦合,異步消息,流量削鋒等問題。實(shí)現(xiàn)高性能,高可用,可伸縮和最終一致性架構(gòu)。是大型分布式系統(tǒng)不可缺少的中間件。
目前使用較多的消息隊(duì)列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ。
消息系統(tǒng)使用場(chǎng)景
典型的異步處理,應(yīng)用解耦,流量削鋒和消息通訊四個(gè)場(chǎng)景。
除了以上還要設(shè)計(jì)運(yùn)維(掌握分布式并行計(jì)算、報(bào)表、監(jiān)控技術(shù)以及規(guī)則策略),安全、運(yùn)營(yíng)、服務(wù)、存儲(chǔ)、業(yè)務(wù)拆分、機(jī)房容災(zāi)等等,要做好一個(gè)大型的網(wǎng)站真的很不容易。
你可能也喜歡:
總結(jié)
- 上一篇: 领域应用 | 金融资管领域知识图谱的构建
- 下一篇: 漆桂林 | 人工智能的浪潮中,知识图谱何