Nginx源碼初探之基礎架構-web服務器的約束

        軟件設計一方面是功能設計,一方面是架構設計。功能設計主要就是滿足軟件需要提供的功能,支撐的服務。比如Nginx是一款Web服務器,那麼他的功能就必須滿足Web傳輸協議的各種約束,實現Web服務具有的各種功能。架構設計主要是解決如何提高更高效的服務,如何更低成本的維護,如何讓服務更穩定健碩這些問題。他有一系列的規則和約束,本文旨在梳理Nginx服務器在架構設計方面(基本上也是軟件設計方面)需要滿足的各種約束和規則,以便在後續學習中能結合這些規則更好的體會Nginx在架構設計方面的出彩之處。
1.性能
      Web服務器的主體性能體現在三個方面;網絡性能(吞吐量),單次請求的延遲性(響應時效),網絡效率(信息量)。簡單都說就是希望web服務器能支撐的請求更數量高,響應的時間更短,傳遞的信息更多。
2.可伸縮性
        可伸縮性指系統功能提供服務的難易程度。包括組件的複雜度,耦合度,交互方式,加載方式等條件制約。常規方法中的接口化,模塊化,動態加載,異步處理等方式都可以很好的提高系統的可伸縮性。
3.簡單性
      簡單是組件本身的簡單程度,每個組件越簡單就會越容易理解和實現,也越容易被驗證。常規措施,我們通過分離關注點原則(我稱之爲單一功能原則,就是一個組件只幹一件事,幹好了就行)來設計組件。在整體架構上使用統一接口原則,比如Nginx中的模塊化。
4.可修改性
       可修改性是在當前架構下系統變更的難易程度,對於Web服務器而言最常見的就是熱部署,在不停機的情況下,更新修復功能。可修改性分開理解可以包括可進化性,可擴展性,可定製性,可配置性和可重用性。
5.可見性
       可見性指系統運行狀態可監控。例如網絡連接數,CPU使用情況,緩存使用情況,請求處理時效,請求成功率(可靠性)等
6.可移植性
          也即系統平臺兼容性,是指軟件在不做修改的情況下跨平臺運行能力。
7.可靠性
         可靠性是系統出現系統層面故障影響後提供可靠不間斷服務能力。可以通過避免單點故障,冗餘部署,實時監控等方式來縮小故障範圍。

        Nginx在架構設計中格外重視這7個關鍵點,參照這7個關鍵點可以更好的理解Nginx在架構中的機巧。

發佈了27 篇原創文章 · 獲贊 1 · 訪問量 2232
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章