1.大型網站軟體系統的特點:
- 高併發,大流量
- 高可用
- 海量資料
- 使用者分佈廣泛,網路情況複雜
- 安全環境惡劣
- 需求快速變更,釋出頻繁
- 漸進式發展
2.大型網站演變架構
1)初步應用:資料(資料庫,檔案伺服器)和應用程式跑在單一伺服器上
2)資料與應用分離:資料庫伺服器,檔案伺服器,應用程式伺服器
3)快取改善效能:(應用程式(帶有本地快取)-->外接分散式快取)-->資料庫伺服器以及檔案伺服器對接
4)應用程式叢集:使用負載均衡策略來進行請求分佈
負載均衡排程器--->(多個飲用程式分散式部署)--->外接分散式快取--->資料庫伺服器以及檔案伺服器對接
5)資料庫讀寫分離:當單一資料庫IO量達到極限時候,需要對資料庫進行叢集
將資料庫伺服器進行分散式
資料庫伺服器(主庫(寫資料庫)--->多個從庫用於資料select)
6)CDN加速
在負載均衡前面新增一層反向代理伺服器和Cdn加速器,將一些快取資料儘早返回給伺服器,讓頁面反應速度加快
Cdn加速器-->反向代理->負載均衡排程器--->(多個飲用程式分散式部署)--->外接分散式快取--->資料庫伺服器以及檔案伺服器對接
7)分散式資料庫以及分散式檔案伺服器
當資料庫中資料量非常大的時候,可以將這個不同業務的資料放在不同的物理機上。
當檔案資料量比較大時候,單一檔案伺服器不能承載時候,可以將單一檔案伺服器改為分散式檔案伺服器
8)NOSQL和搜尋引擎
當大資料量大檔案量的時候,必定會涉及到檔案資料的搜尋,此時需要的是NOSQL以及搜尋引擎伺服器給其提供搜尋服務,減輕資料來源管理的麻煩
9)業務拆分:
將一個巨大的應用分為不同的業務模組進行開發,將每一個不同模組的應用進行分佈在不同的伺服器中進行使用,不同模組與模組之間採用訊息佇列進行通訊
3.架構模式:
1.單一應用(初期應用):應用層,服務層,資料層整合在一起;
2.資料分層:將應用分為:應用層,服務層,資料層
3.分割:根據業務進行模組分割,將一個大應用分割成一個一個的小模組進行開發
4.分散式部署:
分散式應用和服務
分散式靜態資源
分散式資料和儲存
分散式計算
5.叢集:單一伺服器不能承擔該任務時候,需要對其進行叢集部署
6.快取:
CDN
反向代理
本地快取
分散式快取
7.非同步呼叫
當資料量巨大時候,可以採用非同步呼叫策略進行排程。
其實現原理相當於是和生產者和消費者模式差不多采用訊息佇列實現的非同步
8冗餘:
對資料進行冷熱備份
9.自動化
自動化運維方面,自動化監控
10安全化:
通過驗證碼機制以及防止SQL隱碼攻擊問題
4.TPS,HPS,QPS
TPS:每秒事物數
HPS:每秒的HTTP請求數
QPS:每秒的查詢數