天道不一定酬所有勤
但是,天道只酬勤

天津11选5(新)开奖结果:大型網站架構技術一覽

天津11选5蛋托玩法 www.ijudhr.com.cn 大型網站的挑戰主要來自龐大的用戶,高并發的訪問和海量數據,任何簡單的業務一旦需要處理數以P計的數據和面對數以億計的用戶,問題就會變得棘手。大型網站架構主要就是解決這類問題。更多內容也可以閱讀各大互聯網公司架構演進之路匯總、大型網站架構演化歷程兩篇文章。

本文內容大部分來自《大型網站技術架構》,這本書很值得一看,強烈推薦。

網站系統架構層次如下圖所示:

20150507171005663

1.前端架構

前端指用戶請求到達網站應用服務器之前經歷的環節,通常不包含網站業務邏輯,不處理動態內容。

瀏覽器優化技術

并不是優化瀏覽器,而是通過優化響應頁面,加快瀏覽器頁面的加載和顯示,常用的有頁面緩存、合并HTTP減少請求次數、使用頁面壓縮等。

CDN

內容分發網絡,部署在網絡運營商機房,通過將靜態頁面內容分發到離用戶最近最近的CDN服務器,使用戶可以通過最短路徑獲取內容。

動靜分離,靜態資源獨立部署

靜態資源,如JS、CSS等文件部署在專門的服務器集群上,和Web應用動態內容服務分離,并使用專門的(二級)域名。

圖片服務

圖片不是指網站Logo、按鈕圖標等,這些文件屬于上面提到的靜態資源,應該和JS、CSS部署在一起。這里的圖片指用戶上傳的圖片,如產品圖片、用戶頭像等,圖片服務同樣適用獨立部署的圖片服務器集群,并使用獨立(二級)域名。

反向代理

部署在網站機房,在應用服務器、靜態資源服務器、圖片服務器之前,提供頁面緩存服務。

DNS

域名服務,將域名解析成IP地址,利用DNS可以實現DNS負載均衡,配置CDN也需要修改DNS,使域名解析后指向CDN服務器。

2.應用層架構

應用層是處理網站主要業務邏輯的地方。

開發框架

網站業務是多變的,網站的大部分軟件工程師都是在加班加點開發網站業務,一個好的開發框架至關重要。一個號的開發框架應該能夠分離關注面,使美工、開發工程師可以各司其事,易于協作。同時還應該內置一些安全策略,防護Web用攻擊。

頁面渲染

將分別開發維護的動態內容和靜態頁面模板集成起來,組合成最終顯示給用戶的完整頁面。

負載均衡

將多臺應用服務器組成一個集群,通過負載均衡技術將用戶請求分發到不同的服務器上,以應對大量用戶同時訪問時產生的高并發負載壓力。

Session管理

為了實現高可用的應用服務器集群,應用服務器通常設計為無狀態,不保存用戶請求上下文信息,但是網站業務通常需要保持用戶會話信息,需要專門的機制管理Session,使集群內甚至跨集群的應用服務器可以共享Session。

動態頁面靜態化

對于訪問量特別大而更新又不很頻繁的動態頁面,可以將其靜態化,即生成一個靜態頁面,利用靜態頁面的優化手段加速用戶訪問,如反向代理、CDN、瀏覽器緩存等。

業務拆分

將復雜而龐大的業務拆分開來,形成多個規模較小的產品,獨立開發、部署、維護,除了降低系統耦合度,也便于數據庫業務分庫。按業務對關系數據庫進行拆分,技術難度相對較小,而效果又相對較好。

虛擬化服務器

將一臺物理服務器虛擬化成多態虛擬服務器,對于并發訪問較低的業務,更容易用較少的資源構架高可用的應用服務器集群。

3.服務層架構

提供基礎服務,供應用層調用,完成網站業務。

分布式消息

利用消息隊列機制,實現業務和業務、業務和服務之間的異步消息發送及低耦合的業務關系。

分布式服務

提供高性能、低耦合、易復用、易管理的分布式服務,在網站實現面向服務架構(SOA)。

分布式緩存

通過可伸縮的服務器集群提供大規模熱點數據的緩存服務,是網站性能優化的重要手段。

分布式配置

系統運行需要配置許多參數,如果這些參數需要修改,比如分布式緩存集群加入新的緩存服務器,需要修改應用程序客戶端的緩存服務器列表配置,并重啟應用程序服務器。分布式配置在系統運行期提供配置動態推送服務,將配置修改實時推送到應用系統,無需重啟服務器。

4.存儲層架構

提供數據、文件的持久化存儲訪問與管理服務。

分布式文件

網站在線業務需要存儲的文件大部分都是圖片、網頁、視頻等比較小的文件,但是這些文件的數量非常龐大,而且通常都在持續增加,需要伸縮性設計比較好的分布式文件系統。

關系數據庫

大部分萬丈的主要業務是基于關系數據庫開發的,但是關系數據庫對集群伸縮性的支持表較差。通過在應用程序的數據訪問層增加數據庫訪問的路由功能,根據業務配置將數據庫訪問路由到不同的物理數據庫上,可實現關系數據庫的分布式訪問。

NoSQL數據庫

目前各種NoSQL數據庫層出不窮,在內存管理、數據模型、集群分布式管理等方面各有優勢,不過從社區活動性角度看,HBase無疑是目前最好的。

數據同步

在支持全球范圍內數據共享的分布式數據庫技術成熟之前,擁有多個數據中心的網站必須在多個數據中心之間進行數據同步,以保證每個數據中心都擁有完整的數據。在實踐中,為了減輕數據庫壓力,將數據庫的事物日志(或者NoSQL的寫操作Log)同步到其他數據中心,根據Log進行數據重演,實現數據同步。

5.后臺架構

網站應用中,除了要處理用戶的實時訪問請求外,還有一些后臺非實時數據分析要處理。

搜索引擎

即使是網站內部的搜索引擎,也需要進行數據增量更新及全量更新、構建索引等。這些操作通過后臺系統定時執行。

數據倉庫

根據離線數據,提供數據分析與數據挖掘服務。

推薦系統

社交網站及購物網站通過挖掘人與人之間的關系,人和商品之間的關系,發展潛在的人際關系和購物興趣,為用戶提供個性化推薦服務。

6.數據采集與監控

監控網站訪問情況與系統運行情況,為網站運營決策和運維管理提供支持保障。

瀏覽器數據采集

通過在網站頁面中嵌入JS腳本采集用戶瀏覽器環境與操作記錄,分析用戶行為。

服務器業務數據采集

服務器業務數據包括兩種,一種是采集在服務器端記錄的用戶請求操作日志;一種是采集應用程序運行期業務數據,比如待處理消息數目等。

服務器性能數據采集

采集服務器性能數據,如系統負載、內存使用率、網卡流量等。

系統監控

將前述采集的數據以圖表的方式展示,以便運營和運維人員監控網站運行狀況,做到這一步僅僅是系統監視。更先進的做法是根據采集的數據進行自動化運維,自動處理系統異常狀況,是吸納自動化控制。

系統報警

如果采集來的數據超過預設的正常情況的閥值,比如系統負載過高,就通過郵件、短信、語音電話等方式發出警報信號,等待工程師干預。

7.安全架構

?;ね久庠夤セ骷懊舾行畔⑿孤?。

Web攻擊

以HTTP請求的方式發起的攻擊,危害最大的就是XSS和SQL注入攻擊。但是只要措施得當,這兩種攻擊都是比較容易防范的。

數據?;?/h3>

敏感信息加密傳輸與存儲,?;ね競陀沒ё什?。

8.數據中心機房架構

大型網站需要的服務器規模數以十萬計,機房物理架構也需要關注。

機房架構

對于一個擁有十萬臺服務器的大型網站,每臺服務器耗電(包括服務器本身耗電及空調耗電)每年大約需要人民幣2000元,那么網站每年機房電費就需要兩億人民幣。數據中心能耗問題日趨嚴重,Google、Facebook選擇數據中心地理位置的時候趨向選擇散熱良好,供電充裕的地方。

機柜架構

包括機柜大小,網線布局、指示燈規格、不間斷電源、電壓規格(是48V直流電還是220V民用交流電)等一系列問題。

服務器架構

大型網站由于服務器采購規模龐大,大都采用定制服務器的方式代替購買服務器整機。根據網站應用需求,定制硬盤、內存、甚至CPU,同時去除不必要的外設接口(顯示器輸出接口,鼠標、鍵盤輸入接口),并使空間結構利于散熱。

(全文完) 歡迎關注『Java之道』微信公眾號
贊(5)
如未加特殊說明,此網站文章均為原創,轉載必須注明出處。天津11选5蛋托玩法 » 大型網站架構技術一覽
分享到: 更多 (0)

評論 1

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址
  1. #1

    因為瀏覽器允許的并發請求資源數的限制,靜態資源除了動靜分離外,還可以通過域名打散來加速。
    當然,有些頁面元素由同步請求改為異步請求也是一個選擇。不過從SEO的角度考慮,同步和異步要權衡。
    對于一些敏感的信息,比如電商領域的價格,要做好價格防呆,還是要異步刷一下的,避免因為數據不一致導致客訴。

    Su4年前 (2016-05-08)回復

HollisChuang's Blog

聯系我關于我