將站點分爲應用層、服務層、數據訪問層, 經過分層,可以將一個龐大的系統切分紅不一樣的部分,便於分工合做開發和維護。各層之間具備必定的獨立性,僅僅要維持調用接口不變。各層可以依據詳細的業務變化獨立演變發展而不影響其它的層。
在分層架構中。必須合理劃分層次邊界和接口,嚴禁跨越層次調用。css
大的分層機構內部還可以繼續分層,比方應用層可以分爲視圖層、業務邏輯層等。sql
分層結構是邏輯上的。在物理部署上,三層結構可以部署在同一個物理機器上,但是隨着站點業務的增大,可能需要將已經分層的 模塊進行分離部署,以便站點可以應用不少其它的資源來應對不少其它用戶的訪問。數據庫
分層結構的最開始是爲了使得軟件模塊劃分清晰和easy維護,在站點的不斷髮展演變過程當中。分層結構對於站點從單機部署到分佈式方向發展是相當重要,所以在站點的演變初期就應該使用分層結構,未來的站點才幹更好的演變。瀏覽器
二、切割:
分層結構是在橫向維度上進行切分的,而切割是在縱向維度上進行切割。隨着站點愈來愈大,功能愈來愈複雜,這個時候可以把不一樣功能的業務切割開來進行獨立的部署,一方面可以簡化維護,還有一方面可以使得在整個站點中併發量最大的業務分離開來獨立享受資源。網絡
三、分佈式:
分層和切割的主要目的是爲了對切分後的模塊便於分佈式部署,也就是將不一樣的模塊部署在不一樣的機器上面。經過遠程調用完畢對應的業務。架構
分佈式意味着站點可以使用不少其它的計算機資源來應對高併發的訪問。爲更過的用戶提供訪問。
但是分佈式也帶來了很是多的弊端。處在同一分佈式中的機器互相訪問必須要經過網絡做爲中間介質,假如說爲了完畢某個業務,須要經過多臺機器來進行計算處理。那麼在計算的過程當中必須要依賴網絡的質量。可能會影響計算處理的速度。併發
再者,server越多,server宕機的機率也大。 某臺機器上的服務不可用使得站點的可用性減小。還有就是在分佈式中,分佈式事務也難保證一致。這對站點的業務會形成很是嚴重的 影響。負載均衡
分佈式致使站點以來錯綜複雜。提升了站點開發維護的難度。
分佈式方案可以分爲下面幾種:
分佈式應用和服務:將分層和切割後的業務進行分佈式部署,可以使得站點應對更大的併發量。
分佈式靜態資源:也就是將站點的靜態資源(js、image、css、logo等)獨立部署,並採用獨立的域名,這也就是人們常說的"動靜分離"。這樣可以減輕業務server的訪問壓力,可以使瀏覽器高速的響應。nosql
分佈式數據和存儲:單臺機器沒法存儲大數據。所以需要不少其它地機器來聯合存儲,除了對傳統的關係型數據庫進行分佈式部署以外,爲站點的大數據存儲應運而生的nosql產品差點兒都是分佈式的。
分佈式計算:站點某些部分處理的數據量很之大,這個時候就需要把計算程序分發到各臺機器上一邊加速計算和響應。
四、集羣:使用分佈式儘管已經將分層和切割後的模塊進行部署,但是對於大型站點的首頁(訪問量巨大)還需要獨立部署,即多臺機器部署一樣的應用構成一個集羣,同一時候經過負載均衡設備共同對外提供服務。分佈式
當需要應對更大的併發時,僅僅需要向集羣中增長機器就能夠。
本文內容摘自李智慧《大型站點技術架構 核心原理與案例分析》