大型網站系統架構設計主要要素:聊聊架構一

原標題是<不懂能夠問,可是不要裝逼>一:看系統架構,後來以爲不妥,仍是改改吧。前端

 

全部內容不涉及系統架構,只涉及設計架構中注意的要素,方向有了,架構天然就出來了。細節、代碼後續再貼出來,感謝大牛X-Ts提供後續代碼指導,此部份內容一樣借鑑以前的老師的指導。sql

從層次看網站系統架構:數據庫

1、前端架構瀏覽器

1. 瀏覽器優化技術:經過優化響應頁面,爲瀏覽器頁面的加載和現實提速,經常使用的有頁面緩存,合併HTTP減小請求次數、頁面壓縮等。緩存

2. 前端的分佈式:靜態資源,如JS、CSS等文件不是在專門的服務器集羣上(開發過程當中,可以使用公共的二級域名,前期並不是放在獨立的服務器上,爲後續的業務擴大化做擴展),和Web應用動態業務的相關內容作分離,經過最短路徑獲取內容。安全

3. 圖片資源服務:此處指用戶上傳的圖片,並不是網站的按鈕以及LOGO(這些文件屬於上段提到的靜態資源)。服務器

4. 反響代理:提供頁面緩存。架構

5. DNS:將域名解析成地址,利用dns能夠實現dns的負載均衡。負載均衡

 

2、應用層架構:業務邏輯的處理。框架

一、開發框架:一個好的開發框架是關注點分離的,各層各行其事,易於協做。頁面渲染,動態內容和靜態頁面模板集成起來,最終集合一塊兒顯示給用戶。一款優秀的模板引擎能在開發中乾淨、整潔、關注點分離透徹等。

二、負載均衡:將多臺應用服務器組成一個集羣,經過負載均衡將用戶請求分發到不一樣的服務器上,減小服務器壓力,經過冗餘技術,達到軟雙機熱備效果。

三、Seesion維護:此目的實現高可用的應用服務器集羣,應用服務器設置爲無狀態,不保存用戶請求的上下文,但須要保持用戶會話狀態,可以使用軟技術實現Seesion管理。。。

四、動態頁面靜態化:訪問量大而不頻繁更新的動態頁面,使其靜態化,根據請求HTTP的請求原理,到達優化加速的手段,此處反向代理,CDN,瀏覽器緩存等。

五、業務拆分:業務增多,子系統新增,造成了規模小的子產品,獨立開發、實施、維護,下降系統的耦合度,便於系統中數據庫分庫。

六、虛擬化服務器:將一臺物理機虛擬化多臺虛擬服務器,利用較少的資源構建高可用的應用服務器集羣。微軟提供了Hyper-V

 

3、服務層架構:

一、分佈式消息:利用消息隊列,實現業務之間,業務、服務之間的異步消息的傳遞,同時解決業務間低耦合的關係。

二、分佈式服務:SOA

三、分佈式緩存:軟分佈式緩存,不必定要從集羣上解決,要儘量的利用軟件、應用程序。

四、分佈式配置:動態配置分佈式緩存等,例如,加入可配置參數列表,便可添加分佈式緩存服務器。

 

4、存儲層架構:數據、文件持久化的存儲訪問與管理服務。

一、分佈式文件:圖片或其餘資源數量較大,如圖片,網頁,視頻,伸縮性設計分佈式文件系統,當前有很成熟的相關的軟系統架構。

二、關係型數據庫:經過在應用程序的數據庫訪問層增長數據庫訪問路由功能,經過業務配置將數據庫的訪問路由到不一樣的物理數據庫上,爲後續分佈式也打下基礎。

三、NoSql:其讀寫速度很是快,遠優越於關係型數據庫,固然各版本在內存管理,數據模型等各有優缺點,作緩存等毋庸置疑。

四、數據同步:數據庫同步技術已經很成熟,多數據庫之間同步也存在不少的壓力。可經過DB的事務日誌或者Nosql寫Log,同步到其餘數據點,根據Log進行重演。

5、後臺框架:

一、搜索引擎:網站內部引擎,若對數據增量及全量更新、構建索引,可經過後臺系統定時執行,同時能夠借鑑第三方成熟的框架,如Lucene.Net、HubbleDotNet等

二、數據倉庫:提供完整的離線數據,提供數據分析以及數據挖掘服務。

三、數據採集與監控: 採集的數據以圖表的形式展現,對網站的監控運做情況有及時的瞭解,固然還有更先進的運維方式。

四、瀏覽器數據採集:在網頁中嵌入JS腳本或經過其餘手段獲取採集用戶瀏覽器的環境以及操做行爲,分析其行爲,對用戶的友好度以及系統的安全性等作數據採集。

五、服務器業務數據採集:採集服務端用戶的操做日誌。

六、系統監控:採集的數據以圖表的形式展現,對網站的監控運做情況有及時的瞭解,固然還有更先進的運維方式。

七、系統預警:數據未正常採集,超過了系統的閾值,系統承載的負載太高,經過郵件、短信、語音電話等發出相關的信號。

6、安全架構:

Web攻擊:當前,以Http請求的方式發起的攻擊,最大危害是XSS和SQL注入。代碼的規範性有待注意。

固然仍是有其餘的一些CSRF攻擊、Error Code、HTML註釋、文件上傳、路徑遍歷、表單Token、

數據保護:敏感信息加密傳送。

相關文章
相關標籤/搜索