網(wǎng)站系統(tǒng)架構(gòu)層次:前端架構(gòu)、應(yīng)用層架構(gòu)、服務(wù)層架構(gòu),、存儲層架構(gòu),、后臺架構(gòu),、數(shù)據(jù)采集與監(jiān)控、安全架構(gòu),、數(shù)據(jù)中心機房架構(gòu),。 1.前端架構(gòu)(瀏覽器優(yōu)化技術(shù),、CDN,、動靜分離,,靜態(tài)資源獨立部署、圖片服務(wù),、反向代理,、DNS) 前端指用戶請求到達(dá)網(wǎng)站應(yīng)用服務(wù)器之前經(jīng)歷的環(huán)節(jié),通常不包含網(wǎng)站業(yè)務(wù)邏輯,,不處理動態(tài)內(nèi)容,。 瀏覽器優(yōu)化技術(shù) 并不是優(yōu)化瀏覽器,而是通過優(yōu)化響應(yīng)頁面,,加快瀏覽器頁面的加載和顯示,,常用的有頁面緩存,、合并HTTP減少請求次數(shù),、使用頁面壓縮等。 CDN 內(nèi)容分發(fā)網(wǎng)絡(luò),部署在網(wǎng)絡(luò)運營商機房,通過將靜態(tài)頁面內(nèi)容分發(fā)到離用戶最近最近的CDN服務(wù)器,使用戶可以通過最短路徑獲取內(nèi)容。 動靜分離,靜態(tài)資源獨立部署 靜態(tài)資源,,如JS、CSS等文件部署在專門的服務(wù)器集群上,,和Web應(yīng)用動態(tài)內(nèi)容服務(wù)分離,,并使用專門的(二級)域名。 圖片服務(wù) 圖片不是指網(wǎng)站Logo,、按鈕圖標(biāo)等,,這些文件屬于上面提到的靜態(tài)資源,應(yīng)該和JS,、CSS部署在一起,。這里的圖片指用戶上傳的圖片,如產(chǎn)品圖片,、用戶頭像等,,圖片服務(wù)同樣適用獨立部署的圖片服務(wù)器集群,并使用獨立(二級)域名,。 反向代理 部署在網(wǎng)站機房,,在應(yīng)用服務(wù)器、靜態(tài)資源服務(wù)器,、圖片服務(wù)器之前,,提供頁面緩存服務(wù)。 DNS 域名服務(wù),將域名解析成IP地址,,利用DNS可以實現(xiàn)DNS負(fù)載均衡,,配置CDN也需要修改DNS,使域名解析后指向CDN服務(wù)器,。 2.應(yīng)用層架構(gòu)(開發(fā)框架,、頁面渲染、負(fù)載均衡,、Session管理,、動態(tài)頁面靜態(tài)化、業(yè)務(wù)拆分,、虛擬化服務(wù)器) 應(yīng)用層是處理網(wǎng)站主要業(yè)務(wù)邏輯的地方,。 開發(fā)框架 網(wǎng)站業(yè)務(wù)是多變的,網(wǎng)站的大部分軟件工程師都是在加班加點開發(fā)網(wǎng)站業(yè)務(wù),,一個好的開發(fā)框架至關(guān)重要,。一個號的開發(fā)框架應(yīng)該能夠分離關(guān)注面,使美工,、開發(fā)工程師可以各司其事,,易于協(xié)作。同時還應(yīng)該內(nèi)置一些安全策略,,防護(hù)Web用攻擊。 頁面渲染 將分別開發(fā)維護(hù)的動態(tài)內(nèi)容和靜態(tài)頁面模板集成起來,,組合成最終顯示給用戶的完整頁面,。 負(fù)載均衡 將多臺應(yīng)用服務(wù)器組成一個集群,通過負(fù)載均衡技術(shù)將用戶請求分發(fā)到不同的服務(wù)器上,,以應(yīng)對大量用戶同時訪問時產(chǎn)生的高并發(fā)負(fù)載壓力,。 Session管理 為了實現(xiàn)高可用的應(yīng)用服務(wù)器集群,應(yīng)用服務(wù)器通常設(shè)計為無狀態(tài),,不保存用戶請求上下文信息,,但是網(wǎng)站業(yè)務(wù)通常需要保持用戶會話信息,需要專門的機制管理Session,,使集群內(nèi)甚至跨集群的應(yīng)用服務(wù)器可以共享Session,。 動態(tài)頁面靜態(tài)化 對于訪問量特別大而更新又不很頻繁的動態(tài)頁面,可以將其靜態(tài)化,,即生成一個靜態(tài)頁面,,利用靜態(tài)頁面的優(yōu)化手段加速用戶訪問,如反向代理,、CDN,、瀏覽器緩存等。 業(yè)務(wù)拆分 將復(fù)雜而龐大的業(yè)務(wù)拆分開來,形成多個規(guī)模較小的產(chǎn)品,,獨立開發(fā),、部署、維護(hù),,除了降低系統(tǒng)耦合度,,也便于數(shù)據(jù)庫業(yè)務(wù)分庫。按業(yè)務(wù)對關(guān)系數(shù)據(jù)庫進(jìn)行拆分,,技術(shù)難度相對較小,,而效果又相對較好。 虛擬化服務(wù)器 將一臺物理服務(wù)器虛擬化成多態(tài)虛擬服務(wù)器,,對于并發(fā)訪問較低的業(yè)務(wù),,更容易用較少的資源構(gòu)架高可用的應(yīng)用服務(wù)器集群。 3.服務(wù)層架構(gòu)(分布式消息,、分布式服務(wù),、分布式緩存、分布式配置) 提供基礎(chǔ)服務(wù),,供應(yīng)用層調(diào)用,,完成網(wǎng)站業(yè)務(wù)。 分布式消息 利用消息隊列機制,,實現(xiàn)業(yè)務(wù)和業(yè)務(wù),、業(yè)務(wù)和服務(wù)之間的異步消息發(fā)送及低耦合的業(yè)務(wù)關(guān)系。 分布式服務(wù) 提供高性能,、低耦合,、易復(fù)用、易管理的分布式服務(wù),,在網(wǎng)站實現(xiàn)面向服務(wù)架構(gòu)(SOA),。 分布式緩存 通過可伸縮的服務(wù)器集群提供大規(guī)模熱點數(shù)據(jù)的緩存服務(wù),是網(wǎng)站性能優(yōu)化的重要手段,。 分布式配置 系統(tǒng)運行需要配置許多參數(shù),,如果這些參數(shù)需要修改,比如分布式緩存集群加入新的緩存服務(wù)器,,需要修改應(yīng)用程序客戶端的緩存服務(wù)器列表配置,,并重啟應(yīng)用程序服務(wù)器。分布式配置在系統(tǒng)運行期提供配置動態(tài)推送服務(wù),,將配置修改實時推送到應(yīng)用系統(tǒng),,無需重啟服務(wù)器。 4.存儲層架構(gòu)(分布式文件,、關(guān)系數(shù)據(jù)庫,、NoSQL數(shù)據(jù)庫,、數(shù)據(jù)同步) 提供數(shù)據(jù)、文件的持久化存儲訪問與管理服務(wù),。 分布式文件 網(wǎng)站在線業(yè)務(wù)需要存儲的文件大部分都是圖片,、網(wǎng)頁、視頻等比較小的文件,,但是這些文件的數(shù)量非常龐大,,而且通常都在持續(xù)增加,需要伸縮性設(shè)計比較好的分布式文件系統(tǒng),。 關(guān)系數(shù)據(jù)庫 大部分萬丈的主要業(yè)務(wù)是基于關(guān)系數(shù)據(jù)庫開發(fā)的,,但是關(guān)系數(shù)據(jù)庫對集群伸縮性的支持表較差。通過在應(yīng)用程序的數(shù)據(jù)訪問層增加數(shù)據(jù)庫訪問的路由功能,,根據(jù)業(yè)務(wù)配置將數(shù)據(jù)庫訪問路由到不同的物理數(shù)據(jù)庫上,,可實現(xiàn)關(guān)系數(shù)據(jù)庫的分布式訪問。 NoSQL數(shù)據(jù)庫 目前各種NoSQL數(shù)據(jù)庫層出不窮,,在內(nèi)存管理,、數(shù)據(jù)模型、集群分布式管理等方面各有優(yōu)勢,,不過從社區(qū)活動性角度看,,HBase無疑是目前最好的。 數(shù)據(jù)同步 在支持全球范圍內(nèi)數(shù)據(jù)共享的分布式數(shù)據(jù)庫技術(shù)成熟之前,,擁有多個數(shù)據(jù)中心的網(wǎng)站必須在多個數(shù)據(jù)中心之間進(jìn)行數(shù)據(jù)同步,,以保證每個數(shù)據(jù)中心都擁有完整的數(shù)據(jù)。在實踐中,,為了減輕數(shù)據(jù)庫壓力,,將數(shù)據(jù)庫的事物日志(或者NoSQL的寫操作Log)同步到其他數(shù)據(jù)中心,根據(jù)Log進(jìn)行數(shù)據(jù)重演,,實現(xiàn)數(shù)據(jù)同步。 5.后臺架構(gòu)(搜索引擎,、數(shù)據(jù)倉庫,、推薦系統(tǒng)) 網(wǎng)站應(yīng)用中,除了要處理用戶的實時訪問請求外,,還有一些后臺非實時數(shù)據(jù)分析要處理,。 搜索引擎 即使是網(wǎng)站內(nèi)部的搜索引擎,也需要進(jìn)行數(shù)據(jù)增量更新及全量更新,、構(gòu)建索引等,。這些操作通過后臺系統(tǒng)定時執(zhí)行。 數(shù)據(jù)倉庫 根據(jù)離線數(shù)據(jù),,提供數(shù)據(jù)分析與數(shù)據(jù)挖掘服務(wù),。 推薦系統(tǒng) 社交網(wǎng)站及購物網(wǎng)站通過挖掘人與人之間的關(guān)系,,人和商品之間的關(guān)系,發(fā)展?jié)撛诘娜穗H關(guān)系和購物興趣,,為用戶提供個性化推薦服務(wù),。 6.數(shù)據(jù)采集于監(jiān)控(瀏覽器數(shù)據(jù)采集、服務(wù)器業(yè)務(wù)數(shù)據(jù)采集,、服務(wù)器性能數(shù)據(jù)采集,、系統(tǒng)監(jiān)控、系統(tǒng)報警) 監(jiān)控網(wǎng)站訪問情況與系統(tǒng)運行情況,,為網(wǎng)站運營決策和運維管理提供支持保障,。 瀏覽器數(shù)據(jù)采集 通過在網(wǎng)站頁面中嵌入JS腳本采集用戶瀏覽器環(huán)境與操作記錄,分析用戶行為,。 服務(wù)器業(yè)務(wù)數(shù)據(jù)采集 服務(wù)器業(yè)務(wù)數(shù)據(jù)包括兩種,,一種是采集在服務(wù)器端記錄的用戶請求操作日志;一種是采集應(yīng)用程序運行期業(yè)務(wù)數(shù)據(jù),,比如待處理消息數(shù)目等,。 服務(wù)器性能數(shù)據(jù)采集 采集服務(wù)器性能數(shù)據(jù),如系統(tǒng)負(fù)載,、內(nèi)存使用率,、網(wǎng)卡流量等。 系統(tǒng)監(jiān)控 將前述采集的數(shù)據(jù)以圖表的方式展示,,以便運營和運維人員監(jiān)控網(wǎng)站運行狀況,,做到這一步僅僅是系統(tǒng)監(jiān)視。更先進(jìn)的做法是根據(jù)采集的數(shù)據(jù)進(jìn)行自動化運維,,自動處理系統(tǒng)異常狀況,,是吸納自動化控制。 系統(tǒng)報警 如果采集來的數(shù)據(jù)超過預(yù)設(shè)的正常情況的閥值,,比如系統(tǒng)負(fù)載過高,,就通過郵件、短信,、語音電話等方式發(fā)出警報信號,,等待工程師干預(yù)。 7.安全架構(gòu)(Web攻擊,、數(shù)據(jù)保護(hù)) 保護(hù)網(wǎng)站免遭攻擊及敏感信息泄露,。 Web攻擊 以HTTP請求的方式發(fā)起的攻擊,危害最大的就是XSS和SQL注入攻擊,。但是只要措施得當(dāng),,這兩種攻擊都是比較容易防范的。 數(shù)據(jù)保護(hù) 敏感信息加密傳輸與存儲,,保護(hù)網(wǎng)站和用戶資產(chǎn),。 8.數(shù)據(jù)中心機房架構(gòu)(機房架構(gòu),、機柜架構(gòu)、服務(wù)器架構(gòu)) 大型網(wǎng)站需要的服務(wù)器規(guī)模數(shù)以十萬計,,機房物理架構(gòu)也需要關(guān)注,。 機房架構(gòu) 對于一個擁有十萬臺服務(wù)器的大型網(wǎng)站,每臺服務(wù)器耗電(包括服務(wù)器本身耗電及空調(diào)耗電)每年大約需要人民幣2000元,,那么網(wǎng)站每年機房電費就需要兩億人民幣,。數(shù)據(jù)中心能耗問題日趨嚴(yán)重,Google,、Facebook選擇數(shù)據(jù)中心地理位置的時候趨向選擇散熱良好,,供電充裕的地方。 機柜架構(gòu) 包括機柜大小,,網(wǎng)線布局,、指示燈規(guī)格、不間斷電源,、電壓規(guī)格(是48V直流電還是220V民用交流電)等一系列問題,。 服務(wù)器架構(gòu) 大型網(wǎng)站由于服務(wù)器采購規(guī)模龐大,大都采用定制服務(wù)器的方式代替購買服務(wù)器整機,。根據(jù)網(wǎng)站應(yīng)用需求,,定制硬盤、內(nèi)存,、甚至CPU,,同時去除不必要的外設(shè)接口(顯示器輸出接口,鼠標(biāo),、鍵盤輸入接口),,并使空間結(jié)構(gòu)利于散熱。 |
|