一、網站架構的模式
1、分層
分層是將軟件進行橫向切分。網站軟件系統分為應用層,服務層,數據層
分層架構對網站支持高併發向分佈式方向發展至關重要。因此在網站規模還很小的時候就應該採用分層的架構,這樣
將來網站做大時才能更好地應對。
2、分割
分割是將軟件進行縱向切分。將不同的功能和服務分割開來,包裝成高內聚低耦合的模塊單元。
3、分佈式
在網站應用中,常用的分佈式方案有以下幾種:
1)分佈式應用和服務
2)分佈式靜態資源:動靜分離
3)分佈式數據和存儲:關係數據庫和Nosql
4)分佈式計算:Hadoop,MapReduce分佈式計算框架
4、集羣
5、緩存
6、異步
異步架構是典型的的生產者消費者模式,兩者不存在直接調用。只要保持數據結構不變,彼此功能實現可以隨意變化而不受影響。
使用異步消息隊列有如下特性:
1)提高系統可用性
2)加快網站響應速度
3)消除併發訪問高峯
7、冗餘
8、自動化
目前自動化架構主要集中在發佈運維方面,如發佈過程自動化,自動化代碼管理,自動化部署,自動化監控等。
9、安全
二、核心架構要素
架構:最高層的規劃,難以改變的決定。
(一)、性能
1、性能優化的幾個方面:
1)瀏覽器端:瀏覽器緩存,頁面壓縮,合理佈局頁面,減少cookie傳輸
2)應用服務器端:服務器本地緩存和分佈式緩存,也可以將用户的請求發送的到消息隊列的等待後續任務處理,
而當前請求直接返回響應給用户
3)代碼層面:使用多線程,改善內存管理等手段
4)數據庫服務端:索引、緩存,sql優化,nosql使用
2、衡量網站性能的指標:響應時間、TPS、系統性能計數器
(二)、可用性
1、高可用的設計目標就是當服務器宕機時候,服務或者用於依然可用。
2、網站高可用的主要手段就是冗餘
1)應用服務器:負載均衡
2)存儲服務器:對數據進行實時備份
3、衡量一個系統架構設計是否高可用的目標,就是假設系統中任何一台或者多台服務器宕機時,
以及出現各種不可預期的問題時,系統整體是否依然可用。
(三)、伸縮性
1、伸縮性是指通過不斷向集羣中加入服務器的手段來緩解不斷上升的用户併發訪問壓力和不斷增長的數據存儲需求。
(四)、擴展性
網站可伸縮架構的主要手段時事件驅動架構和分佈式服務。
(五)、安全性