大型網站架構模式筆記
分層
分層是企業應用一種常見的架構模式,將系統在橫向維度上切分為幾個部分,每個部分負責一部分相對比較單一的職責,然後通過上層對下層的依賴和呼叫組成一個完整的系統。
應用層 | 負責具體業務和檢視展示,如搜尋輸入和結果展示 |
服務層 | 為應用層提供服務支援,如使用者管理服務,購物車服務 |
資料層 | 提供資料儲存訪問服務,如資料庫、快取、檔案、搜尋引擎等 |
在實際中,大的分層結構內部可以再次分層,如應用層可以分為檢視層和業務邏輯層;服務層可以細分為資料介面層(適配各種輸入和輸出資料格式)和邏輯處理層。進行分層的優點就是支援網站高併發向分散式發展。
分隔
分層是將軟體在橫向方面進行切分,那麼分隔就是在縱向方面對軟體劃分。按照功能和種類進行分隔,包裝為高內聚低耦合的模組單元。
分散式
對於大型網站,分層和分隔的一個主要目的是為了切分後的模組便於分散式部署,將不同的模組部署在不同的伺服器上,通過遠端呼叫協同工作。分散式意味著可以使用更多的計算機完成同樣的功能,計算機越多,能夠處理的併發和資料量越大
網站應用中,常用的分散式方案
分散式應用和服務: 將分層和分割後的應用和服務模組分散式部署,除了可以改善網站效能和併發性、加快開發和釋出速度、減少資料庫連線資源消耗外,還可以使不同應用複用共同的服務,便於業務功能擴充套件。
分散式靜態資源:網站的靜態資源如js、css等資源獨立分散式部署並採用獨立的域名,就是動靜分離。靜態資源分散式部署可以減輕應用伺服器的負載壓力。
分散式資料和儲存:將資料分散式儲存,除了傳統的關聯式資料庫進行分散式部署外,nosql也採用分散式
分散式計算,此外,還有支援網站線上伺服器配置實時更新的分散式配置;分散式環境下的分散式鎖,分散式檔案系統等。
叢集
使用分散式雖然將分層和分隔後的模組獨立部署,但是對於使用者訪問集中的模組,還需要將獨立部署的伺服器叢集化,即多臺伺服器部署相同應用構成一個叢集,通過負載均衡裝置共同對外提供服務。
伺服器叢集的優點,是能夠提供更好的併發特性,當有更多使用者訪問,只要向叢集中加入新的機器。
資料庫讀寫分離
配置主從資料庫,應用伺服器寫入資料,訪問主資料庫,主資料庫通過主從複製將資料拷貝到從資料庫,應用伺服器讀取資料時候訪問從資料庫,實現讀寫分離。
快取
快取就是將資料存放在距離計算最近的位置以加快處理速度。快取是改善軟體效能的第一手段。
CDN: 即內容分發網路,部署在距離終端使用者最近的網路服務商,使用者的網路請求總是先到達他的網路服務商,在這裡快取一些靜態資源,就可以最快的返回給使用者,如視訊網站和入口網站的熱點內容快取在CDN
反向代理: 反向代理屬於網站前端架構的一部分,部署在網站的前端,當使用者請求到達網路的資料中心,最先到達的就是反向代理伺服器,這裡快取網站的靜態資源,無需請求繼續轉發給伺服器直接返回到使用者。
本地快取:在應用伺服器本地快取著熱點資料,應用程式可以在本機記憶體中直接訪問資料,而無需訪問資料庫。
分散式快取:將資料快取在一個專門的分散式快取叢集中。
啟用快取的條件:一是資料訪問熱點不均衡,某些資料會被更頻繁的訪問,二是資料在某個時間段內有效,不會很快過期,否則快取的資料因為失效產生髒讀。
非同步
服務間的關係時同步的,不僅耦合性很強,而且效能較低,配置為非同步能降低服務間的耦合。
非同步架構通過佇列實現,佇列是典型的生產者消費者模型。處在業務操縱前面的執行緒將輸出寫入佇列,後面的執行緒從佇列中取出資料處理。
使用非同步的訊息佇列的特性:
1. 提高系統的可用性。消費者伺服器發生故障,資料會在訊息佇列伺服器中儲存,生產者伺服器可以繼續處理業務請求。消費者伺服器恢復正常了,有可以繼續處理訊息佇列中的資料
2. 加快網站的響應速度。生產者伺服器處理完業務後,將資料放入佇列,直接返回,不用等待消費者處理成功,延遲減少。
3. 消除併發訪問高峰。將突增的訪問請求放入佇列中,減少網站的負載。
冗餘
配置多餘的伺服器冗餘執行,為了防止伺服器出現故障,服務照常執行。即使是訪問和負載很小的服務,也至少配置兩個伺服器構成叢集。
資料庫處理定期備份,存檔儲存,實現冷備份外,還需要對資料庫進行主從分離,實時同時實現熱備份。
自動化
自動化架構設計主要集中在釋出運維方面(釋出過程自動化、自動化程式碼管理、自動化測試、自動化安全檢查、自動化部署等。)
安全
網站在安全架構方面積累了許多模式:通過密碼和手機校驗碼進行身份認證;登入、交易等操作對通訊加密;使用者資訊進行加密處理;防止機器人程式攻擊,使用驗證碼識別;對於常見的xss攻擊,sql注入進行編碼轉換等處理等。
相關文章
- 大型網站架構學習筆記網站架構筆記
- 大型網站技術架構——2. 網站架構模式網站架構模式
- 讀書筆記-大型網站技術架構筆記網站架構
- 《大型網站技術架構》讀書筆記網站架構筆記
- 大型網站技術架構(三)--架構模式網站架構模式
- 大型網站技術架構(二)--架構模式網站架構模式
- 大型網站技術架構(二)--大型網站架構演化網站架構
- 大型網站技術架構(一)--大型網站架構演化網站架構
- 大型網站架構網站架構
- 大型網站技術架構:核心原理與案例分析筆記網站架構筆記
- 大型網站架構演化網站架構
- 大型網站架構系列:電商網站架構案例(1)網站架構
- 大型網站架構系列:電商網站架構案例(2)網站架構
- 大型網站架構系列:電商網站架構案例(3)網站架構
- 《大型網站技術架構:核心原理與案例分析》讀書筆記 - 第4篇 架構師(附 大型網站架構技術一覽)網站架構筆記
- 大型網站技術架構(五)--網站高可用架構網站架構
- 漫談大型網站架構網站架構
- 《大型網站技術架構:核心原理與案例分析》讀書筆記網站架構筆記
- 大型網站技術架構(八)--網站的安全架構網站架構
- 讀書筆記 之《軟體架構設計: 大型網站技術架構與業務架構融合之道》筆記架構網站
- 《大型網站技術架構:核心原理與案例分析》讀書筆記 - 第2篇 架構網站架構筆記
- 大型網站架構之我見網站架構
- 大型網站架構演化歷程網站架構
- 大型網站--負載均衡架構網站負載架構
- 大型網站系統架構演化網站架構
- 大型網站技術架構(四)--網站的高效能架構網站架構
- 大型網站技術架構(六)--網站的伸縮性架構網站架構
- 《大型網站技術架構核心原理與案例分析》讀書筆記(二)網站架構筆記
- 《大型網站技術架構:核心原理與案例分析》讀書筆記系列網站架構筆記
- 大型網站技術架構(四)--核心架構要素網站架構
- 大型網站架構利器-CDN技術網站架構
- 大型網站架構技術一覽網站架構
- 淺析大型網站的架構(轉)網站架構
- 大型WEB網站架構深入分析Web網站架構
- 大型網站技術架構(三)--架構核心要素網站架構
- 大型網站技術架構(七)--網站的可擴充套件性架構網站架構套件
- 《大型網際網路企業安全架構》讀書筆記架構筆記
- 大型網站技術架構核心原理(1)網站架構