閱讀《大型網站技術架構:核心原理與案例分析》第五、六、七章,結合《河北省重大技術需求征集系統》,列舉實例分析采用的可用性和可修改性戰術
網站的可用性描述網站可有效訪問的特性,網站的頁面能完整呈現在用戶面前,需要經過很多個環節,任何一個環節出了問題,都可能導致網站頁面不可訪問。可用性指標是網站架構設計的重要指標,對外是服務承諾,對內是考核指標。對公司而言,可用性關系網站的生死存亡。對個人而言,可用性關系到自己的績效升遷。工程師對架構做了許多優化、對代碼做了很多重構,對性能、擴展性、伸縮性做了很多改善,但別人未必能直觀地感受到,也許你的直接領導都不知道你做的這些意義何在。但如果你負責的產品出現了重大故障,就很難說了。事物總是先求生存,然後求發展。保證網站可用,萬無一失,任重而道遠。
伸縮性架構設計能力是網站架構師必須具備的能力。伸縮性架構設計是簡單的,因為幾乎所有稍有規模的網站都必須是可伸縮的,有很多案例可供借鑒,同時又有大量商業的、開源的提供伸縮性能力的軟硬件產品可供選用。然而伸縮性設計又是復雜的,沒有通用的、完美的解決方案和產品,網站伸縮性往往和可用性、正確性、性能等耦合在一起,改善伸縮性可能會影響一些網站的其他特性,網站架構師必須對網站的商業目標、歷史演化、技術路線了然於胸,甚至還需要綜合考慮技術團隊的知識儲備和結構、管理層的戰略願景和規劃,才能最終做出對網站伸縮性架構最合適的決策。
一個具有良好伸縮性架構設計的網站,其設計總是走在業務發展的前面,在業務需要處理更多訪問和服務之前,就已經做好充足準備,當業務需要時,只需要購買或者租用服務器簡單部署就可以了,技術團隊亦可高枕無憂。反之,設計和技術走在業務的後面,采購來的機器根本就沒辦法加入集群,勉強加了進去,卻發現瓶頸不在這裏,系統整體處理能力依然上不去。技術團隊每天加班,卻總是拖公司發展的後腿。架構師對網站伸縮性的把握總是在一線之間。
為什麽有的網咋必須規定系統發布日,一到發布日就如臨大敵,整個技術部加班通宵達旦;而有的網站就可以隨時發布,新功能可以隨時快速上線。這些都有賴於網站的擴展性架構設計,就是在對現有系統影響最小的情況下,系統功能可持續擴展及提升的能力。擴展性指對現有系統影響最小的情況下,系統功能可持續擴展或提升的能力。表現在系統基礎設施穩定不需要經常變更,應用之間較少依賴和耦合,對需求變更可以敏捷相應。它是系統架構設計層面的開閉原則,架構設計考慮未來功能擴展,當系統增加新功能時,不需要對現有系統的結構和代碼進行修改。伸縮性指系統能夠通過增加自身資源規模的方式增強自己計算處理事務的能力。如果這種增減是成比例的,就被稱作線性伸縮性。在網站架構中,通常指利用集群的方式增加服務器數量,提高系統的整體事務吞吐能力。可修改性的目標是控制實現、測試和部署變更的時間和成本。主要分為局部化修改、防止連鎖反應、推遲綁定時間。
關於《河北省重大技術需求征集》系統中對用戶的需求管理是可用的,該系統能完整錄入需求,能把提交的需求進行展示、查看。其中征集模塊以及分類瀏覽、樹形結構能是能夠切合可用性的原則, 但是對錯誤的恢復還是不夠完善,當用戶的需求在各種外界因數幹擾下沒有提交成功,系統對數據的恢復還是做不到。由於該系統采用的MVC模型開發模式,對局部化的修改不會產生連鎖反應,對修改後的內容也能夠正常使用,並不會影響其他功能,因此,系統的可修改性也還說的過去。
閱讀《大型網站技術架構:核心原理與案例分析》第五、六、七章,結合《河北省重大技術需求征集系統》,列舉實例分析采用的可用性和可修改性戰術