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

涵s發表於2018-05-18

作者: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日。

相關文章