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

模式的定義:每一個(gè)模式描述了一個(gè)在我們周圍不斷重復(fù)發(fā)生的問(wèn)題及該問(wèn)題的解決方案的核心。這樣就能一次又一次地使用該方案而不必要做重復(fù)工作。

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

2.1.1分層

分層是系統(tǒng)在橫向維度切分成幾個(gè)部分,每個(gè)部分負(fù)責(zé)相對(duì)單一的職責(zé),通過(guò)上層對(duì)下層的依賴和調(diào)用組成一個(gè)完整的系統(tǒng)。


分層是邏輯上的,在物理部署上三層結(jié)構(gòu)可部署在同一個(gè)物理機(jī)器上,也可以分別部署在不同服務(wù)器。分層結(jié)構(gòu)對(duì)網(wǎng)站支持高并發(fā)向分布式方向發(fā)展至關(guān)重要,網(wǎng)站規(guī)模很小時(shí)就應(yīng)該采用分層結(jié)構(gòu)。

2.1.2分割

分割是縱向方面對(duì)軟件進(jìn)行切分,將不同的功能和服務(wù)分割開,包裝成高內(nèi)聚低耦合的模塊單元,有利于開發(fā)和維護(hù)也便于模塊的分布式部署。

2.1.3分布式

分層和分割的一個(gè)主要目的是為了切分后的模塊便于分布式部署。

常用的分布式方案如下幾種:

分布式應(yīng)用和服務(wù):將分層和分割后的應(yīng)用和服務(wù)模塊分布式部署。

分布式靜態(tài)資源:網(wǎng)站的靜態(tài)資源如JS,CSS,Logo圖片等資源獨(dú)立分布式部署,并采用獨(dú)立域名,即動(dòng)靜分離。

分布式數(shù)據(jù)和存儲(chǔ):大型網(wǎng)站要處理P級(jí)數(shù)據(jù),需要分布式存儲(chǔ),除了對(duì)傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)進(jìn)行分布式,為網(wǎng)站應(yīng)用而生的各種NoSQL產(chǎn)品幾乎都是分布式

分布式計(jì)算:網(wǎng)站普遍使用Hadoop及其MapReduce分布式計(jì)算框架進(jìn)行處理計(jì)算,特點(diǎn)是移動(dòng)計(jì)算而不是移動(dòng)數(shù)據(jù),將計(jì)算程序分發(fā)到數(shù)據(jù)所在地以加速計(jì)算和分布方式

此外還有支持網(wǎng)站線上服務(wù)器配置實(shí)時(shí)更新的分布式配置;分布式環(huán)境下實(shí)現(xiàn)并發(fā)和協(xié)同的分布式鎖;支持云存儲(chǔ)的分布式文件系統(tǒng)等

2.1.4集群

使用分布式雖然已經(jīng)將分層好分割后的模塊獨(dú)立部署,但是對(duì)于用戶訪問(wèn)集中模塊還需要獨(dú)立部署的服務(wù)器集群化,即多臺(tái)服務(wù)器部署相同應(yīng)用構(gòu)成一個(gè)集群,通過(guò)負(fù)載均衡設(shè)備共同對(duì)外提供服務(wù)。

服務(wù)器集群有更多服務(wù)器提供相同性能,可以提供更好的并發(fā)性,可靈活添加新機(jī)器應(yīng)付更多的用戶訪問(wèn)。某臺(tái)服務(wù)器故障時(shí),負(fù)載均衡設(shè)備的失效轉(zhuǎn)移機(jī)制將請(qǐng)求轉(zhuǎn)發(fā)到集群的其他服務(wù)器上,避免影響用戶。

2.1.5緩存

緩存是將數(shù)據(jù)存放在距離計(jì)算最近的位置以加快處理速度。緩存是改善軟件性能的第一手段,CPU越來(lái)越快的一個(gè)重要因素就是使用了更多緩存。

CSN:內(nèi)容分發(fā)網(wǎng)絡(luò),部署在離用戶最近的網(wǎng)絡(luò)服務(wù)商,用戶的網(wǎng)絡(luò)請(qǐng)求先到他那里,這里緩存網(wǎng)站的一些靜態(tài)資源,就可以最快速度返回給用戶。

反向代理:屬于網(wǎng)站前端構(gòu)架的一部分,部署在網(wǎ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ù),應(yīng)用程序可以在本機(jī)內(nèi)存中直接訪問(wèn)數(shù)據(jù)

分布式緩存:數(shù)據(jù)緩存在一個(gè)專門的分布式緩存集群中,應(yīng)用程序通過(guò)網(wǎng)絡(luò)通信訪問(wèn)緩存數(shù)據(jù)

2.1.6異步

大型網(wǎng)站架構(gòu)中,系統(tǒng)解耦的手段除了分層、分割、分布,還一個(gè)重要手段是異步,業(yè)務(wù)之間的消息傳遞不是同步調(diào)用,而是將一個(gè)業(yè)務(wù)操作分成多個(gè)階段,每個(gè)階段之間通過(guò)共享數(shù)據(jù)的方式異步執(zhí)行。

異步消息隊(duì)列的特征:提高系統(tǒng)可用性、加快網(wǎng)站響應(yīng)速度、消除并發(fā)訪問(wèn)高峰

2.1.7冗余

為保證服務(wù)器宕機(jī)時(shí)網(wǎng)站依舊可以服務(wù),不丟失數(shù)據(jù),就需要一定程度的服務(wù)器冗余運(yùn)行,數(shù)據(jù)冗余備份,當(dāng)某臺(tái)服務(wù)器宕機(jī)時(shí),可將其服務(wù)和數(shù)據(jù)訪問(wèn)轉(zhuǎn)移到其他機(jī)器。

多個(gè)服務(wù)器構(gòu)成集群就是通過(guò)冗余實(shí)現(xiàn)服務(wù)高可用。數(shù)據(jù)庫(kù)處理定期備份,存檔保存,實(shí)現(xiàn)冷備份以外,為保證在線業(yè)務(wù)高可用,還需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行主從分離,實(shí)現(xiàn)熱備份。

2.1.8自動(dòng)化

發(fā)布過(guò)程自動(dòng)化:自動(dòng)化代碼管理->自動(dòng)化測(cè)試->自動(dòng)化安全檢查->自動(dòng)化部署->自動(dòng)化監(jiān)控->自動(dòng)化報(bào)警->自動(dòng)化失效轉(zhuǎn)移->自動(dòng)化失效恢復(fù)->自動(dòng)化降級(jí)->自動(dòng)化分配資源

2.1.9安全

密碼和手機(jī)校驗(yàn)碼進(jìn)行身份認(rèn)證;網(wǎng)絡(luò)通信加密;用戶信息加密;驗(yàn)證碼識(shí)別防止機(jī)器人濫用網(wǎng)絡(luò)資源攻擊網(wǎng)站;XSS攻擊、SQL注入、進(jìn)行編碼轉(zhuǎn)換等處理;過(guò)濾垃圾、敏感信息

2.2架構(gòu)模式在新浪微博的應(yīng)用

最初從簡(jiǎn)單的LAMP(Linux+Apache+MySQL+PHP)架構(gòu),支持初期的新浪微博,程序用PHP開發(fā)數(shù)據(jù)存儲(chǔ)在MySQL中。

重構(gòu)后系統(tǒng)分三個(gè)層次,最下層是基礎(chǔ)服務(wù)層,提供數(shù)據(jù)庫(kù)、緩存、存儲(chǔ)、搜索等數(shù)據(jù)服務(wù),以及其他基礎(chǔ)技術(shù)服務(wù)。這些服務(wù)支持海量數(shù)據(jù)和高并發(fā)訪問(wèn),是系統(tǒng)的技術(shù)基礎(chǔ)。

中間層是平臺(tái)服務(wù)和應(yīng)用服務(wù)層,核心服務(wù)是微博、關(guān)系、用戶,這些服務(wù)被分割成獨(dú)立的服務(wù)模塊,通過(guò)依賴調(diào)用和共享基礎(chǔ)數(shù)據(jù)構(gòu)成業(yè)務(wù)基礎(chǔ)。

最上層是API和業(yè)務(wù)層,各種客戶端和第三方應(yīng)用,通過(guò)調(diào)用API集成到系統(tǒng)中,組成生態(tài)系統(tǒng)。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 大型網(wǎng)站架構(gòu) 網(wǎng)站架構(gòu)包括:前端架構(gòu)+應(yīng)用層架構(gòu)+服務(wù)層架構(gòu)+存儲(chǔ)層架構(gòu)+后臺(tái)架構(gòu)+數(shù)據(jù)中心機(jī)房架構(gòu)+安全架構(gòu)+數(shù)...
    運(yùn)維開發(fā)筆記閱讀 1,210評(píng)論 0 7
  • 序 《大型網(wǎng)站技術(shù)架構(gòu)》是自己接觸的第一本架構(gòu)知識(shí)的書籍,還是在14年時(shí)買的實(shí)體書,前后讀了幾遍,頗有所得,后來(lái)實(shí)...
    高廣超閱讀 8,533評(píng)論 2 43
  • 概述 1 架構(gòu)演化大型網(wǎng)站的關(guān)注指標(biāo)高可用 高性能 易擴(kuò)展 可伸縮 安全 大型網(wǎng)站的特點(diǎn)高并發(fā),大流量 高可用 海...
    西西老師閱讀 2,881評(píng)論 0 12
  • 大型網(wǎng)站架構(gòu)演化 大型網(wǎng)站的關(guān)注指標(biāo) 高可用 高性能 易擴(kuò)展 可伸縮 安全 大型網(wǎng)站的特點(diǎn) 高并發(fā),大流量 高可用...
    技術(shù)修行者閱讀 2,605評(píng)論 1 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139

友情鏈接更多精彩內(nèi)容