大型網(wǎng)站架構(gòu)模式

大型網(wǎng)站架構(gòu)模式

每一個(gè)模式描述了一個(gè)在我們周圍不斷重復(fù)發(fā)生的問(wèn)題以及該問(wèn)題解決方案的核心,從而減少重復(fù)工作。

網(wǎng)站架構(gòu)模式

  1. 分層

參考計(jì)算機(jī)網(wǎng)絡(luò)7層協(xié)議句狼、計(jì)算機(jī)硬件操作系統(tǒng)以及軟件的的分層調(diào)用

分層 職責(zé)
應(yīng)用層 負(fù)責(zé)具體業(yè)務(wù)和視圖的展示笋熬,如網(wǎng)站首頁(yè)和搜索展示頁(yè)面
服務(wù)層 為應(yīng)用層提供服務(wù)支持,如用戶管理腻菇、商品管理等
數(shù)據(jù)層 提供數(shù)據(jù)存儲(chǔ)和訪問(wèn)服務(wù)胳螟,如數(shù)據(jù)庫(kù)、緩存筹吐、文件和搜索等

分層的優(yōu)缺點(diǎn):

優(yōu)點(diǎn):

1.1 便于開發(fā)和分工糖耸,后期便于維護(hù)

1.2 各層之間獨(dú)立,可以根據(jù)不同的層進(jìn)行演進(jìn)和升級(jí)丘薛,甚至不同的層可以部署在不同機(jī)器上

缺點(diǎn):

1.1 需要合理規(guī)劃層次和邊界嘉竟,增加了工作量

1.2 跨層調(diào)用和逆向調(diào)用會(huì)產(chǎn)生問(wèn)題

  1. 分割

分層是在軟件橫向方向進(jìn)行切割,分割是在縱向進(jìn)行切分洋侨,比如將購(gòu)物和支付舍扰、廣告等業(yè)務(wù)進(jìn)行分割,設(shè)置成不同的微服務(wù)

隨著網(wǎng)站功能越來(lái)越大希坚,功能會(huì)越來(lái)越復(fù)雜边苹,需要將不同的功能和服務(wù)分割開來(lái),包裝成高內(nèi)聚和低耦合的模塊單元裁僧,有豬油軟件的開發(fā)和維護(hù)
也便于分布式部署个束,提高網(wǎng)站的并發(fā)能力和功能擴(kuò)展能力。

  1. 分布式

對(duì)于大型網(wǎng)站聊疲,分層和分割都是為了切分后的模塊便于分布式部署茬底,通過(guò)遠(yuǎn)程調(diào)用協(xié)同工作。分布式可以是用更多的計(jì)算機(jī)
完成同樣的功能获洲,通過(guò)對(duì)硬件上的擴(kuò)展桩警,提高網(wǎng)站的計(jì)算能力。

但是分布式意味著服務(wù)必須通過(guò)網(wǎng)絡(luò)進(jìn)行調(diào)用昌妹,可能會(huì)因?yàn)橐慌_(tái)服務(wù)的宕機(jī)導(dǎo)致其他服務(wù)不可用捶枢,降低網(wǎng)站的可用性,同時(shí)數(shù)據(jù)在不同服務(wù)器上的數(shù)據(jù)一致性也不好保證
飞崖,這對(duì)業(yè)務(wù)的正確性和流程有一定的影響烂叔,使得維護(hù)起來(lái)較為復(fù)雜。

常見的分布式解決方案有:

分布式服務(wù) 特點(diǎn)
分布式應(yīng)用和服務(wù) 將分層和分割后的應(yīng)用和服務(wù)模塊分布式部署固歪,改善網(wǎng)站性能和并發(fā)性蒜鸡、加快開發(fā)和部署速度胯努、減少數(shù)據(jù)庫(kù)連接消耗,增強(qiáng)復(fù)用性逢防,便于業(yè)務(wù)擴(kuò)展
分布式靜態(tài)資源 網(wǎng)站靜態(tài)圖片部署叶沛,采用獨(dú)立的域名,減輕服務(wù)器壓力忘朝,使用獨(dú)立的域名對(duì)瀏覽器進(jìn)行緩存灰署,加快訪問(wèn)速度,便于維護(hù)和擴(kuò)展
分布式數(shù)據(jù)和存儲(chǔ) 海量數(shù)據(jù)進(jìn)行分布式存儲(chǔ)局嘁,除了對(duì)傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)進(jìn)行分布式部署以外溉箕,一些NoSQL產(chǎn)品也是分布式的
分布式計(jì)算 應(yīng)用、服務(wù)悦昵、實(shí)時(shí)數(shù)據(jù)計(jì)算都是計(jì)算肴茄,一些業(yè)務(wù)后臺(tái)處理、網(wǎng)站和搜索引擎的構(gòu)建但指、數(shù)據(jù)分析和統(tǒng)計(jì)大多采用Hadoop和MapReduce分布式計(jì)算框架進(jìn)行批處理計(jì)算

服務(wù)器實(shí)時(shí)更新的分布式配置寡痰,分布式環(huán)境下實(shí)現(xiàn)并發(fā)和協(xié)同的分布式鎖,支持云存儲(chǔ)的分布式文件系統(tǒng)等棋凳。

  1. 集群

分布式將分層和分割的應(yīng)用獨(dú)立部署氓癌,但是用戶集中訪問(wèn)的模塊需要將獨(dú)立部署的服務(wù)器集群化,即多臺(tái)服務(wù)器部署相同應(yīng)用構(gòu)成一個(gè)集群贫橙,通過(guò)負(fù)載均衡對(duì)外提供服務(wù)贪婉。

集群是為了更好的提供并發(fā)性,用戶增多時(shí)卢肃,加入新的機(jī)器疲迂,某臺(tái)機(jī)器故障時(shí)轉(zhuǎn)移請(qǐng)求到其他服務(wù)器,提高可用性莫湘。

  1. 緩存

緩存是為了將數(shù)據(jù)放在距離計(jì)算更近的位置上以加快處理速度尤蒿。改善軟件性能的一種手段,比如CPU計(jì)算的cache緩存幅垮,頁(yè)面調(diào)度中的緩存

常見的緩存 特點(diǎn)
CDN 內(nèi)容分發(fā)網(wǎng)絡(luò)腰池,部署在距離終端用戶最近的網(wǎng)絡(luò)服務(wù)商,用戶請(qǐng)求先到達(dá)網(wǎng)絡(luò)服務(wù)商忙芒,以最快的速度發(fā)揮靜態(tài)資源
反向代理 屬于網(wǎng)站前端的一部分示弓,當(dāng)請(qǐng)求到達(dá)網(wǎng)站的數(shù)據(jù)中心時(shí),最先訪問(wèn)的就是反向代理服務(wù)器呵萨,這里緩存網(wǎng)站的靜態(tài)資源奏属,無(wú)需將請(qǐng)求繼續(xù)轉(zhuǎn)發(fā)給應(yīng)用服務(wù)器就能返回給用戶
本地緩存 應(yīng)用服務(wù)器本地緩存熱點(diǎn)數(shù)據(jù),可以直接通過(guò)內(nèi)存訪問(wèn)潮峦,無(wú)需訪問(wèn)數(shù)據(jù)庫(kù)
分布式緩存 當(dāng)網(wǎng)站龐大時(shí)囱皿,需要對(duì)本地緩存進(jìn)行擴(kuò)展勇婴,將數(shù)據(jù)緩存在一個(gè)專門的分布式集群中,通過(guò)網(wǎng)絡(luò)通信進(jìn)行訪問(wèn)

使用緩存的條件:

5.1 數(shù)據(jù)訪問(wèn)熱點(diǎn)不均衡嘱腥,某些數(shù)據(jù)被頻繁訪問(wèn)耕渴,數(shù)據(jù)應(yīng)該放在緩存中

5.2 某個(gè)時(shí)間段內(nèi)有效的數(shù)據(jù),不會(huì)很快過(guò)期齿兔,否則會(huì)造成臟讀

緩存可以加快訪問(wèn)速度橱脸,減少后端壓力和存儲(chǔ)壓力,需要按照數(shù)據(jù)的訪問(wèn)頻率合理設(shè)計(jì)愧驱。

  1. 異步

業(yè)務(wù)之間的消息傳遞不是同步進(jìn)行的慰技,而是將業(yè)務(wù)分成多個(gè)階段椭盏,每個(gè)階段通過(guò)共享數(shù)據(jù)的方式異步執(zhí)行组砚。
單一服務(wù)器可以通過(guò)多線程共享內(nèi)存隊(duì)列的方式實(shí)現(xiàn)異步,分布式系統(tǒng)中通過(guò)分布式消息隊(duì)列實(shí)現(xiàn)異步掏颊。
異步架構(gòu)是生產(chǎn)者消費(fèi)者模式糟红,二者不直接調(diào)用,從而進(jìn)行解耦乌叶,功能可以隨意變化不受影響盆偿,易于擴(kuò)展。

特點(diǎn):

6.1 提高系統(tǒng)的可用性

消費(fèi)者服務(wù)器異常后准浴,消息會(huì)隊(duì)列中堆積事扭,等回復(fù)之后再去消費(fèi)

6.2 加快網(wǎng)站的響應(yīng)速度

業(yè)務(wù)寫入消息隊(duì)列后不通過(guò)消費(fèi)者服務(wù)器即可返回結(jié)果,延遲小

6.3 消除并發(fā)訪問(wèn)高峰

出現(xiàn)突發(fā)事件或者促銷活動(dòng)時(shí)乐横,可以放入消息隊(duì)列中求橄,等到消費(fèi)者服務(wù)器依次處理

  1. 冗余

數(shù)據(jù)冗余備份,當(dāng)服務(wù)器宕機(jī)時(shí)葡公,可以快速切換罐农,實(shí)現(xiàn)高可用

數(shù)據(jù)庫(kù)定期備份,實(shí)現(xiàn)冷備份催什,為了保證在線的高可用涵亏,實(shí)現(xiàn)主從分離實(shí)現(xiàn)熱備份

為了抵御不可抗據(jù)力對(duì)機(jī)房的破壞,需要設(shè)置災(zāi)難備份的數(shù)據(jù)中心

  1. 自動(dòng)化

發(fā)布自動(dòng)化管理:自動(dòng)化代碼管理蒲凶、自動(dòng)化測(cè)試气筋、自動(dòng)化安全檢測(cè)、自動(dòng)化部署

監(jiān)控自動(dòng)化:自動(dòng)化監(jiān)控旋圆、自動(dòng)化報(bào)警裆悄、自動(dòng)化失效轉(zhuǎn)移、自動(dòng)化失效恢復(fù)臂聋、自動(dòng)化降級(jí)光稼、自動(dòng)化分配資源

  1. 安全性

密碼和手機(jī)校驗(yàn)碼進(jìn)行身份認(rèn)證或南,交易信息進(jìn)行加密,使用驗(yàn)證碼防止機(jī)器人攻擊艾君,對(duì)于SQL注入等進(jìn)行編碼轉(zhuǎn)換處理采够,對(duì)于垃圾信息進(jìn)行過(guò)濾,對(duì)交易模式和交易信息進(jìn)行風(fēng)險(xiǎn)控制

架構(gòu)模式的應(yīng)用

微博的系統(tǒng)架構(gòu)如下:

image.png

分為三個(gè)層次:

  1. 基礎(chǔ)服務(wù)層: 提供數(shù)據(jù)庫(kù)冰垄、緩存蹬癌、存儲(chǔ)、搜索等數(shù)據(jù)服務(wù)

  2. 中間層: 平臺(tái)服務(wù)和應(yīng)用服務(wù)層虹茶、將核心服務(wù)分割為獨(dú)立模塊逝薪,通過(guò)依賴調(diào)用共享數(shù)據(jù)

  3. 業(yè)務(wù)層API:通過(guò)各種客戶端(Web,APP)和第三方應(yīng)用構(gòu)成一個(gè)完整的生態(tài)系統(tǒng)

分割后的服務(wù)和技術(shù)模塊進(jìn)行分布式部署,每個(gè)模塊部署在獨(dú)立的集群上蝴罪,通過(guò)遠(yuǎn)程調(diào)用進(jìn)行訪問(wèn)董济。

早期架構(gòu)中,采用同步推模式要门,用戶發(fā)表微博之后虏肾,將這條微博插入數(shù)據(jù)庫(kù)所有粉絲的訂閱列表,后期采用推拉結(jié)合的模式欢搜,用戶寫入消息隊(duì)列后立即返回封豪,將當(dāng)前在線用戶進(jìn)行迅速推送,非在線用戶登錄后根據(jù)關(guān)注列表進(jìn)行拉取

由于微博頻繁刷新炒瘟,采用多級(jí)緩存策略吹埠,熱門微博緩存在所有服務(wù)器上,提高訪問(wèn)性能

為了保證整體性能疮装,采用多個(gè)數(shù)據(jù)中心缘琅,用戶就近訪問(wèn),加快訪問(wèn)速度斩个,同時(shí)也是數(shù)據(jù)冗余備份的一種方式胯杭,提高了可用性。

自動(dòng)化工具提高了系統(tǒng)的開發(fā)效率受啥,安全審核策略對(duì)垃圾內(nèi)容和僵尸粉進(jìn)行過(guò)濾做个。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市滚局,隨后出現(xiàn)的幾起案子居暖,更是在濱河造成了極大的恐慌,老刑警劉巖藤肢,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件太闺,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡嘁圈,警方通過(guò)查閱死者的電腦和手機(jī)省骂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門蟀淮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人钞澳,你說(shuō)我怎么就攤上這事怠惶。” “怎么了轧粟?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵策治,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我兰吟,道長(zhǎng)通惫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任混蔼,我火速辦了婚禮履腋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拄丰。我一直安慰自己府树,他們只是感情好俐末,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布料按。 她就那樣靜靜地躺著,像睡著了一般卓箫。 火紅的嫁衣襯著肌膚如雪载矿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天烹卒,我揣著相機(jī)與錄音闷盔,去河邊找鬼。 笑死旅急,一個(gè)胖子當(dāng)著我的面吹牛逢勾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播藐吮,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼溺拱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了谣辞?” 一聲冷哼從身側(cè)響起迫摔,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎泥从,沒(méi)想到半個(gè)月后句占,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡躯嫉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年纱烘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了杨拐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡擂啥,死狀恐怖戏阅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情啤它,我是刑警寧澤奕筐,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站变骡,受9級(jí)特大地震影響离赫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜塌碌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一渊胸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧台妆,春花似錦翎猛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至懊缺,卻和暖如春疫稿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鹃两。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工遗座, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俊扳。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓途蒋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親馋记。 傳聞我的和親對(duì)象是個(gè)殘疾皇子号坡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容