大型網站技術架構(四)--核心架構要素


作者:13
GitHub:https://github.com/ZHENFENG13
版權聲明:本文為原創文章,未經允許不得轉載。
此篇已收錄至《大型網站技術架構:核心原理與案例分析》讀書筆記系列,點擊訪問該目錄獲取完整內容。

前言

所謂架構,一種通俗的說法就是“最高層次的規划,難以改變的決定”,這些規划和決定奠定了事物未來發展的方向和最終的藍圖。

而軟件架構即“有關軟件整體結構與組件的抽象描述,用於指導大型軟件系統各方面的設計”。

一般來說軟件架構需要關注性能、可用性、伸縮性、擴展性和安全性這5個架構要素。

1

性能

性能是網站架構設計的一個重要方面,任何軟件架構設計方案都必須考慮可能帶來的性能問題,也正因為性能問題幾乎無處不在,所以優化網站性能的手段也非常多。

  • 瀏覽器端:可以通過瀏覽器緩存、頁面壓縮傳輸、合理布局頁面、減少Cookie傳輸等手段,甚至可以使用CDN加速功能。
  • 應用服務器端:可以使用服務器本地緩存和分布式緩存,也可以通過異步操作方式來加快響應,在高並發請求的情況下,可以將多台應用服務器組成一個集群共同對外服務,提高整體處理能力,改善性能。
  • 數據庫服務器端:可用使用索引、緩存、SQL性能優化等手段,還可以使用NoSQL數據庫來優化數據模型、存儲結構等。

衡量網站性能有一系列指標,重要的有響應時間、TPS、系統性能計數器等,通過這些指標以確定系統設計是否達到目標。

2

可用性

可用性即能夠不間斷提供服務的時間。幾乎所有網站都承諾7×24小時可用,但事實上任何網站都不可能達到完全的7×24,總會有一些故障時間,扣除這些故障時間,就是網站的可用時間。一些大型網站可以做到4個9以上的可用性,也就是99.99%。

網站高可用的主要手段就是冗余,應用部署在多台服務器上同時提供服務,數據存儲在多台服務器上相互備份,任何一台服務器都不會影響應用的整體可以,通常的實現手段即把多台服務器通過負載均衡設備組成一個集群。

衡量一個系統架構設計是否滿足高可用的目標,就是假設系統中任何一台或者多台服務器宕機時,以及出現各種不可預期的問題時,系統整體是否依然可用。

3

伸縮性

大型網站需要面對大量用戶的高並發訪問和存儲海量數據,網站通過集群的方式將多台服務器組成一個整體共同提供服務。所謂伸縮性是指通過不斷向集群中加入服務器的手段來緩解不斷整體上市用戶並發訪問壓力和不斷增長的數據存儲需求。

衡量架構伸縮性的主要標准就是是否可用多台服務器構建集群,是否容易向集群中添加新的服務器。加入新的服務器后是否可以提供和原來的服務器無差別的服務。集群中可容納的總服務器數量是否有限制。

4

擴展性

不同於其他架構要素主要關注非功能性需求,網站的擴展性架構直接關注網站的功能需求。網站快速發展,功能不斷擴展,如何設計網站的架構使其能夠快速響應需求變化,是網站可擴展架構的主要目標。

衡量網站架構擴展性好壞的主要標准就是在網站增加新的業務產品時,是否可以實現對現有產品透明無影響,不同產品之間是否很少耦合等。

網站可擴展架構的主要手段是事件驅動架構和分布式服務。

  • 事件驅動通常利用消息隊列實現,通過這種方式將消息生產和處理邏輯分隔開。
  • 服務器服務則是將業務和可復用服務分離開來,通過分布式服務框架調用。新增加產品可用通過調用可復用的服務來實現自身的業務邏輯,而對現有產品沒有任何影響。

5

安全性

互聯網是開發的,任何人在任何地方都可以訪問網站。網站的安全架構就是保護網站不受惡意訪問和攻擊,保護網站的重要數據不被竊取。

衡量網站安全架構的標准就是針對現存和潛在的各種攻擊和竊密手段,是否有可靠的應對策略。

security

這個世界沒有絕對的安全,正如沒有絕對的自由一樣,很遺憾,這個世界上沒有固若金湯的網站安全架構,我們只能每天打起百分百的精神,預防可能的漏洞或者攻擊。

首發於我的個人博客,2017年5月18日。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM