大型網站架構前期最容易被忽略的非功能性需求的4大核心特性

我們在設計一個網站的時候,特別是大型網站的時候,往往考慮的最多的是業務實現,業務需求,實現成本,技術選型,團隊技能,這是無可非議的。但是網站架構在除了關注功能性需求外,其實更重要是不要忽略非功能性需求,因為一旦架構決定下來,一般難以改變,如果要改變,就要付出巨大的代價,所以要求我架構師從一開始就要設計一個可以滿足性能,可用性,可伸縮性,可擴展性的架構,這四大特性往往剛開始的時候,容易被我們忽略掉。

性能(Performance)

性能是一個網站能夠同時處理用戶請求的表現能力。 不同的視覺,有不同的表現形式,性能的指標通常包括,響應時間,併發數,吞吐量,以及性能計數器等。

其中吞吐量和性能計數器比較難理解一些,

  • 吞吐量其實指的就是單位時間內,系統處理的請求數量。 TPS(每秒的事務數),HPS(每秒的HTTP請求數),QPS(每秒的查詢數)等等。性能一般通過緩存來解決。

  • 性能計數器,它描述的是服務器或者操作系統的一組指標,包括,對象與線程數,內存使用,CPU使用,磁盤和網絡的I/O等等。

提高網站的性能,很多的手段,比如,瀏覽器訪問優化,CDN加速,反向代理,分佈式緩存,使用集群,代碼和數據結構的優化,存儲性能的優化等。

大型網站架構前期最容易被忽略的非功能性需求的4大核心特性

可用性(Availability)

可用性是在某個考察時間,系統能夠正常運行的概率或時間佔有率期望值。考察時間為指定瞬間,則稱瞬時可用性;考察時間為指定時段,則稱時段可用性;考察時間為連續使用期間的任一時刻,則稱固有可用性。它是衡量設備在投入使用後實際使用的效能,是設備或系統的可靠性、可維護性和維護支持性的綜合特性。在大型網站應用系統中,衡量的指標一般是服務的可用性用幾個9來表示。

高可用性一般通過負載均衡,數據備份,失效轉移,提高軟件質量,特別是發佈時的質量來實現和保證的。

大型網站架構前期最容易被忽略的非功能性需求的4大核心特性

可伸縮性(Scalability)

可伸縮性,是一種對軟件系統計算處理能力的設計指標,高可伸縮性代表一種彈性,在系統擴展成長過程中,軟件能夠保證旺盛的生命力,通過很少的改動甚至只是硬件設備的添置,就能實現整個系統處理能力的線性增長,實現高吞吐量和低延遲高性能。

  • 縱向的可伸縮性——在同一個邏輯單元內增加資源來提高處理能力。這樣的例子包括在現有服務器上增加CPU,或者在現有的RAID/SAN存儲中增加硬盤來提高存儲量。

  • 橫向的可伸縮性——增加更多邏輯單元的資源,並令它們像是一個單元一樣工作。大多數集群方案、分佈式文件系統、負載平衡都是在幫助你提高橫向的可伸縮性

可伸縮性,一般通過DNS域名解析負載均衡,反向代理負載均衡,IP負載均衡,數據鏈路層負載均衡,改進和提高分佈式緩存的算法,利用NOSQL數據庫的可伸縮性等等。

大型網站架構前期最容易被忽略的非功能性需求的4大核心特性

可擴展性(Extensibility)

可擴展性,通常和可伸縮性混為一談.在軟件範疇上,是軟件系統本身的屬性,或者進一步說是設計的屬性,代碼的屬性。因為我們經常說設計的可擴展性,代碼的可擴展性.也可以說是系統設計的松耦合性。實現方式:一般通過事件驅動架構和分佈式架構來實現一個網站系統的可擴展性。

大型網站架構前期最容易被忽略的非功能性需求的4大核心特性

總結

關於大型網站的架構,如果你還想有進一步的詳細瞭解,請閱讀李智慧大師寫的<

  • 如果你有任何疑問需要探討,歡迎在文章末尾留言,我儘量在第一時間個大家回覆。


分享到:


相關文章: