天天看點

網站架構核心要素

軟體架構的核心5要素:性能、可用性、伸縮性、擴充性和安全性。

  1. 性能

性能是網站的一個重要名額。對于網站、應用app來說,現在的使用者無法忍受一個響應緩慢的網站或者app。網站的打開緩慢将會嚴重導緻使用者流失,對于app來說可能甚至影響使用者直接解除安裝app,很多時候好性能問題也是網站架構更新優化的觸發器,是以性能是網站架構設計的一個重要設計名額。 衡量網站性能有一系列名額,有響應時間、TPS、系統性能計數器等。網站在長期運作期間,無法預知網站可能面臨的通路壓力,還必須保證系統在持續運作且通路壓力不均勻的情況下保持穩定的性能。 優化網站性能的手段比較多,常見手段,一般從使用者浏覽器到資料庫,影響使用者請求的所有環節都可以進行性能優化。

  • 在浏覽器用戶端,可以通過浏覽器緩存、使用頁面壓縮、合理布局、減少cookie請求、異步加載頁面、多張圖檔合并一張,減少圖檔請求次數等等,還可以使用CDN,将網站的靜态資源與動态資源分離,讓使用者從最近的網絡服務商擷取資料,也可以在網站機房部署反向代理緩存熱點檔案、資料。、
  • 在應用伺服器端,可以使用伺服器本地緩存和分布式緩存,通過記憶體存儲熱點資料。也可以通過消息隊列異步處理任務。
  • 在代碼層面,通過使用多線程、改善記憶體管理,減少線程間同步等手段優化。
  • 在資料庫服務端,索引、緩存、sql優化、分表、分庫等,如果遇到大資料量的,可以使用成熟的NOSQL技術。

2. 可用性 可用性就是網站有效通路的特性,網站的可用性非網站的功能需要,但是網站可用可有效保證使用者的正常使用,尤其一些電商網站、金融交易平台、支付系統、銀行系統等,可用性尤為重要,如果網站不可用,可能損失公司的收益。 網站高可用的主要手段是備援加故障轉移,應用部署在多台伺服器上同時提供服務,資料存儲在多台服務互相備份,任何一台機器脫機都不造成資料丢失,網站不可通路。網站除了運作時出現故障,網站的上線更新也是最容易引起故障,網站的開發過程釋出過程也需一些工具軟體保證品質,通過預釋出驗證、自動化測試、自動化釋出、灰階釋出等手段,減少上線更新引起故障。 網站可用性度量: 網站故障時間 = 故障恢複時間點 - 故障發現時間點 網站年度可用性名額 = (1 - 網站不可用時間 / 年度營運總時間) X 100 % 網站年度可用性名額業界經常有2個9、3個9、4個9,假如年度營運時間為365年,2個9基本可用,年度不可用時間小于87.6小時;3個9較可用,年度不用時間小于8.76小時;4個9網站具有自動恢複的高可用能力,年度不可用時間小于5分鐘。

3.伸縮性 伸縮性指系統能夠通過增加或者減少自身資源(機器、記憶體、CPU、帶寬等)規模的方式增強或者減少自身計算處理的能力。如果這種增減成比列的,稱為線性伸縮性。在網站架構中,通常利用叢集的方式增加伺服器數量、提高系統的整體處理事務吞吐能力,稱為伸縮性。 衡量架構伸縮性的标準就是是否可以用多台伺服器建構叢集,是否容易向叢集中添加新的機器,加入伺服器後系統是否可以提供和原來的伺服器無差别的服務,或者減少伺服器資料量,使用者量在一定通路量下降的條件下,系統同樣能夠提供和原來的服務無差别的服務。 網站的伸縮性設計有根據功能進行實體分離實作伸縮,或者單一功能通過叢集實作伸縮性,前者采用不同的伺服器提供不同的服務,不同的功能;後者叢集内的多台伺服器部署相同的服務,提供相同的功能。大多數網站都采用兩者并用。

4.擴充性 擴充性是指對現有系統影響最小的情況下,系統功能可持續擴充或者提升的能力。在系統基礎設施穩定不需要經常變更,應用之間較少依賴和耦合,對需求變更更加靈活快速響應。它是系統架構設計層面的開閉原則(對擴充開放,對修改關閉),架構設計考慮未來功能擴充,當系統增加新功能或者需求時,不需要對現有系統的結構和代碼進行修改,是以經常聽到高内聚低耦合,就是擴充性一種設計原則。對于創業公司來說,前期在探索業務模式,随時都有可能增加新功能,快速上線,對研發人員有極高的要求,如果有良好的擴充性設計尤為重要。 擴充性一般設計方式,采用子產品化,并在此基礎上,降低子產品間的耦合性,提供子產品的複用性。将業務進行縱向拆分和橫向拆分,縱向面向業務子產品,橫向面向基礎技術子產品,及可服用子產品。

5.安全性 網站是面相網際網路的開放,任何人任何地方都可以通路的,網站随時都有可能被惡意攻擊和惡意通路,竊取網站重要的資料。衡量網站安全架構的标準就是針對現存和潛在的各種攻擊與竊密手段,是否有可靠的應對政策。對于大多數公司都沒有安全部門,對架構師來說安全的設計尤其重要。一些常見的網站竊取手段,例如:SQL注入、XSS跨站點腳本攻擊、struts漏洞、DOSS攻擊。作為架構師應具有安全性意識,在設計架構師面面考慮到。

個人公衆号,謝謝關注,一起探讨技術:

網站架構核心要素

繼續閱讀