性能基礎之大型網站技術架構模式
前言
概述
分層
概念
目的
舉例
前言
概述
分層
概念
目的
舉例
分割
概念
目的
舉例
分布式
概念
目的
缺點
舉例
集群
概念
目的
舉例
緩存
概念
目的
舉例
異步
概念
目的
冗余
概念
目的
舉例
自動化
概念
目的
舉例
安全
舉例
前言
本文整理自《大型網站技術架構 核心原理與案例分析》一書,這本書應該算一本很強的內功秘籍,雖然沒有實戰教學,但是基礎理論扎實了是很重要的,書中觀點明確,設計的問題域有針對性和全面性,對知識點的廣度和深度都進行了拓展,包含了架構設計的方方面面。
概述
模式: 每一個模式描述了一個在我們周圍不斷重復發生的問題及該問題解決方案的核心。這樣,你就能一次又一次地使用該方案而不必做重復工作。
網站架構模式: 大型互聯網公司在實踐中提出了許多解決方案,以實現網站高性能、高可用、易伸縮、可擴展、安全等各種技術框架目標。這些解決方案又被更多網站重復使用,從而逐漸形成大型網站架構模式。
分層
概念
分層是企業應用系統中最常見的一種架構模式,將系統在橫向維度上切分成幾個部分,每個部分負責一部分相對簡單并比較單一的職責,然后通過上層對下層的依賴和調度組成一個完整的系統。
實踐中,大的分層結構內部還可以繼續分層。
目的
便于分工合作開發和維護;
各層獨立,只要維持調用接口不變,各層可根據具體問題獨立演化發展而無需其他層必須相應調整;
物理部署上,三層結構可部署在同一物理機器上,隨著網站業務發展,必然要分離部署,其三層結構分別部署在不同服務器,使網站擁有更多計算資源應對更多用戶訪問。
舉例
在網站的分層架構中,常見的為3層,即應用層、服務層、數據層。
雖然分層架構模式最初的目的是規劃軟件清晰的邏輯結構以便于開發維護,但在網站的發展過程中,分層結構對網站支持高并發向分布式方向的發展至關重要。
分割
概念
從縱向方面對軟件進行切分,將不同功能和服務分割開來,包裝成高內聚低耦合的模塊單元。
大型網站分割粒度可能會很小。
目的
有助于軟件開發和維護;
便于不同模塊的分布式部署,提供網站的并發處理能力和功能擴展能力。
舉例
在應用層,按業務分割為購物、論壇、搜索、廣告不同的應用,獨立團隊負責,部署在不同服務器;
同一應用內部,如果規模龐大業務復雜,會繼續分割,比如購物業務分割為機票酒店業務、3C業務、小商品業務等更細小的粒度。
分布式
概念
對于大型網站,分層和分隔的一個主要目的是為了切分后的模塊便于分布式部署,即將不同模塊部署在不同的服務器上,通過遠程調用協同工作。
目的
可使用更多的計算機完成同樣的功能,計算機越多,CPU、內存、存儲資源也越多,處理并發訪問和數據量就越大。
缺點
分布式服務調用必須通過網絡,可能會影響性能;
服務器越多,服務器宕機概率就越大;
分布式環境數據一致性非常困難,分布式事務也難以保證;
分布式導致網站依賴錯綜復雜,開發管理維護困難。
舉例
分布式應用和服務:將分層和分割后的應用和服務模塊分布式部署。
分布式靜態資源:網站的靜態資源如JS、CSS、Logo圖片等資源獨立分布式部署,并采用獨立域名,即動靜分離。
分布式數據和存儲:大型網站需處理以P為單位的海量數據,單臺計算機無法提供如此大的存儲空間,此時需分布式存儲。
分布式計算:嚴格來說,應用、服務、實時數據處理都是計算,網站除了要處理這些在線業務,還有很大一部分后臺業務,包括搜索引擎的索引構建、數據倉庫的數據分析統計等。目前網站普遍使用 Hadoop和MapReduce 分布式計算框架進行此類批處理計算,其特點是移動計算而不是移動數據,將計算程序分發到數據所在的位置以加速計算和分布式計算。
集群
概念
對于用戶訪問集中的模塊需要將獨立部署的服務器集群化,即通過負載均衡技術為一個應用構建一個多臺服務器組成的集群,共同對外提供服務。
目的
提高系統可用性。
舉例
服務器集群能夠為相同的服務提供更多的并發支持,因此當有更多的用戶訪問時,只需要向集群中加入新的機器即可;
可以實現當其中的某臺服務器發生故障時,可以通過負載均衡的失效轉移機制將請求轉移至集群中其他的服務器上,因此可以提高系統的可用性。
緩存
概念
將數據存放在距離計算最近的位置。
目的
緩存目的就是減輕服務器的計算,使數據直接返回給用戶,加快處理速度。
舉例
CDN
反向代理
本地緩存
分布式緩存
使用緩存有兩個條件:
訪問數據熱點不均衡,即某些頻繁訪問的數據需要放在緩存中;
數據在某個時間段內有效,不過很快過期,否在會因為數據過期而臟讀,影響數據的正確性。
異步
概念
單一服務器內部可通過多線程共享內部隊列方式實現異步,業務操作前面的線程將輸出寫入隊列,后面的線程從隊列讀取數據處理。
分布式系統中,多個服務器集群通過分布式消息隊列實現異步。
目的
提高系統可用性:消費者服務器發生故障,數據會在消息隊列服務器存儲堆積,生產服務器可以繼續處理業務請求,系統整體表現無故障。消費者服務器恢復正常后,繼續處理消息隊列中的數據。
加快網站響應速度:業務處理前端的生產著服務器將數據寫入消息隊列,無需等待消費者服務器處理就可以返回,響應延遲減少。
消除并發訪問高峰:用戶訪問網站是隨機的,雖然存在高峰和低谷,但突發事件(促銷活動、微博熱點事件)會造成網站并發訪問突然增大。使用消息隊列將突然增加的訪問請求數據放入消息隊列,等待消費者服務器依次處理,減小網站負載壓力。
解耦,提升擴展性。
缺點:消費者服務器處理(如業務校驗、寫數據庫)失敗,以訂單提交為例,可在成功提交后Email或短信通知用戶訂單成功,避免交易糾紛。
使用異步,業務之間的消息傳遞不是同步調用,而是將一個業務操作分成多個階段,每個階段之間通過共享數據的方法異步執行進行協作。
異步架構的典型就是生產者消費者方式,兩者不存在直接調用。
冗余
概念
任何服務都必須部署至少兩臺服務器構成的一個集群。
目的
網站需要7×24小時連續運行,那么就得有相應的冗余機制,以防某臺機器宕掉時無法訪問,而冗余則可以通過部署至少兩臺服務器構成一個集群實現服務高可用。
舉例
冷備份:定期備份,存檔保存。
熱備份:主從分離,實時同步
全球范圍內部署災備數據中心
自動化
概念
是指機器設備、系統或過程(生產、管理過程)在沒有人或較少人的直接參與下,按照人的要求,經過自動檢測、信息處理、分析判斷、操縱控制,實現預期的目標的過程。
目的
減少人為干預,減少故障。
舉例
自動化發布。
自動化代碼管理:代碼版本控制、代碼分支創建合并等過程自動化,開發工程師只要提交自己參與開發的產品代號,系統自動為其創建開發分支,后期自動合并代碼。
自動化測試:代碼開發完成,提交測試后,系統自動將代碼部署到測試環境,啟動自動化測試用例測試,向相關人員發送測試報告,向系統反饋測試結果。
自動化安全檢測:安全檢測工具對代碼靜態安全掃描及部署到安全測試環境進行安全攻擊測試,評估安全性。
自動化部署:將工程代碼自動部署到線上生產環境。
自動化監控。
自動化報警:對線上生產環境自動化監控,對服務器心跳檢測,及各項性能指標和應用程序的關鍵數據指標。如果發現異常、超出預設閥值,自動化向相關人員發送報警,警告故障可能發生。
自動化失效轉移:檢測到故障發生后,系統自動化將失效服務器從集群隔離,不再處理請求。
自動化失效恢復:待故障消除后,系統自動化重新啟動服務,同步數據保證數據一致性。
自動化降級:網站遇到訪問高峰,超出網站最大處理能力時,為保證整個網站安全可用,會自動化拒絕部分請求及關閉部分不重要服務將系統負載降至安全水平。
自動化分配資源:將空閑資源分配給重要服務,擴大部署規模。
安全
舉例
通過密碼和手機驗證碼身份認證。
登錄、交易等操作需網絡通信加密,網站服務器上存儲的敏感數據也加密處理。
使用驗證碼識別,防止機器人程序濫用網絡資源攻擊網站。
對常見的用于攻擊網站的XSS攻擊、SQL注入進行編碼轉換等處理。
對垃圾信息、敏感信息過濾。
對交易轉賬等重要操作根據交易模式和交易信息進行風險控制。
分布式 網站
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。