所謂架構,一種通俗的說法就是「最高層次的規劃,難以改變的決定」,這些規劃和決定奠定了事物未來發展的方向和最終的藍圖。
而軟體架構即「有關軟體整體結構與元件的抽象描述,用於指導大型軟體系統各方面的設計」。 一般來說軟體架構需要關注性能、可用性、伸縮性、擴充性和安全性這5個架構要素。
1、性能
性能是網站架構設計的一個重要方面,任何軟體架構設計方案都必須考慮可能帶來的性能問題。 也正因為性能問題幾乎無處不在,所以優化網站性能的手段也非常多:
瀏覽器端:可以通過瀏覽器緩存、頁面壓縮傳輸、合理佈局頁面、減少Cookie傳輸等手段,甚至可以使用CDN加速功能。
應用伺服器端:可以使用伺服器本機快取和分散式緩存,也可以通過非同步作業方式來加快回應,在高併發請求的情況下,可以將多台應用伺服器組成一個集群共同對外服務,提高整體處理能力,改善性能。
資料庫伺服器端:可用使用索引、緩存、SQL性能優化等手段,還可以使用NoSQL資料庫來優化資料模型、存儲結構等。
衡量網站性能有一系列指標,重要的有回應時間、TPS、系統效能計數器等,通過這些指標以確定系統設計是否達到目標。
2、可用性
可用性即能夠不間斷提供服務的時間。 幾乎所有網站都承諾7×24小時可用,但事實上任何網站都不可能達到完全的7×24,總會有一些故障時間,扣除這些故障時間,就是網站的可用時間。 一些大型網站可以做到4個9以上的可用性,也就是99.99%。
網站高可用的主要手段就是冗余,應用部署在多台伺服器上同時提供服務,資料存儲在多台伺服器上相互備份,任何一台伺服器都不會影回應用的整體可以,通常的實現手段即把多台伺服器通過負載均衡設備組成一個集群。
衡量一個系統架構設計是否滿足高可用的目標,就是假設系統中任何一台或者多台伺服器宕機時,以及出現各種不可預期的問題時,系統整體是否依然可用。
3、伸縮性
大型網站需要面對大量使用者的高併發訪問和存儲海量資料,網站通過集群的方式將多台伺服器組成一個整體共同提供服務。 所謂伸縮性是指通過不斷向集群中加入伺服器的手段來緩解不斷整體上市使用者併發訪問壓力和不斷增長的資料存儲需求。
衡量架構伸縮性的主要標準就是是否可用多台伺服器構建集群,是否容易向集群中添加新的伺服器。 加入新的伺服器後是否可以提供和原來的伺服器無差別的服務。 集群中可容納的總伺服器數量是否有限制。
4、擴充性
不同于其他架構要素主要關注非功能性需求,網站的擴充性架構直接關注網站的功能需求。 網站快速發展,功能不斷擴展,如何設計網站的架構使其能夠快速回應需求變化,是網站可擴展架構的主要目標。
衡量網站架構擴充性好壞的主要標準就是在網站增加新的業務產品時,是否可以實現對現有產品透明無影響,不同產品之間是否很少耦合等。
網站可擴展架構的主要手段是事件驅動架構和分散式服務。
事件驅動通常利用訊息佇列實現,通過這種方式將消息生產和處理邏輯分隔開。
伺服器服務則是將業務和可複用服務分離開來,通過分散式服務框架調用。 新增加產品可用通過調用可複用的服務來實現自身的業務邏輯,而對現有產品沒有任何影響。
5、安全性
互聯網是開發的,任何人在任何地方都可以訪問網站。 網站的安全架構就是保護網站不受惡意訪問和攻擊,保護網站的重要資料不被竊取。
衡量網站安全架構的標準就是針對現存和潛在的各種攻擊和竊密手段,是否有可靠的應對策略。
原文連結:HTTP://blog.csdn.net/chaofanwei/article/details/27046795