閱讀《大型網站技術架構:核心原理與案例分析》第5、6、七章,結合咱們的系統,分析如何增長相應的功能,提升系統的可用性和易用性。算法
這三章主要講述的是網站的可用性、伸縮性和可擴展性。服務器
高可用架構是萬無一失的。要保證一個網站永遠徹底可用幾乎是一件不可能完成的任務。咱們經過一個神奇的數字9來度量網站可用性,採用故障分來考覈網站可用性。可用性指標是網站架構設計的重要指標,網站可用性看得見,摸得着,跟技術、運營、相關各方的績效考覈息息相關。一個典型的網站設計遵循基本分層架構模型即應用層、服務層、數據層。應用層主要負責具體業務邏輯處理;服務層負責提供可複用的服務;數據層負責數據的存儲和訪問。網站的可用性架構設計不但考慮實際的硬件故障引發的宕機,還要考慮網站升級發佈引發的宕機。高可用的服務策略包括分級管理、超時設置、服務降級(關閉非核心服務)等。高可用的數據是最寶貴的資產,保證數據存儲高可用的手段主要是數據備份和失效轉換機制。數據備份能夠實現數據徹底的持久化,失效轉換機制是爲了保證系統可用。保證網站高可用,萬無一失,是一個艱難的過程,還須要更多努力。架構
對於咱們的系統來講,友好的界面風格,簡單便捷的操做,合理的結構佈局,良好的提示是必要的,對提升易用性非常有幫助。表格的設計須要提供給使用者好的視覺效果,減小給操做者帶來視覺疲勞,操做提示應易於理解,使用準確恰當的語言。三級菜單的實現算法要以時間複雜度爲標準,顯示快,無需等待。負載均衡
網站的伸縮性永無止境。所謂網站的伸縮性,指不須要改變網站的軟硬件設計,僅僅經過改變部署的服務器數量就能夠擴大或者縮小網站的服務處理能力。要實現網站的可伸縮性,關鍵技術就在於如何構建良好的服務器集羣。要達到良好的目標,就要求每次擴容和減小服務器時,對整個網站的影響是最小的。CAP原理就是選擇強化分佈式存儲系統的可用性和伸縮性,而在某種程度上放棄一致性。CAP原理對於可伸縮的分佈式系統設計具備重要意義,不恰當地迎合各類需求,可能會使設計進入兩難境地,難覺得繼。咱們的系統有大量的統計數據。咱們的網站隨時都有可能進行修改,好比發佈新功能,這時就須要在服務器上關閉原有的應用,從新部署新的應用,整個過程要求不影響用戶的使用。爲了把對用戶的影響下降到最小,一般使用發佈腳原本完成發佈。通過嚴格的測試,軟件部署到服務器仍是會出現問題,主要緣由就是測試環境和線上環境並不相同,因此咱們在網站發佈時,要把測試經過的代碼先發布到預發佈機器上,確認系統沒有問題後才正式發佈。分佈式
咱們的系統面向的用戶多,範圍廣,經過不斷地向集羣中添加服務器來加強整個集羣的處理能力,這就是網站系統的伸縮性架構,網站以此手段不斷提高本身的規模,這個演化過程整體來講是漸進式的。網站的伸縮性設計可分爲兩類,一類是根據功能進行物理分離實現伸縮、一類是單一功能經過集羣實現伸縮。其中HTTP請求分發配置即負載均衡服務器,實現負載均衡的基礎技術主要有HTTP重定向、DNS域名解析、反向代理、IP、數據鏈路層負載均衡。伸縮性和可用性、正確性、性能等耦合在一塊兒。伸縮性是複雜的,沒有通用的、完美的解決方案和產品,但有不少這方面的案例可供借鑑。一個具備良好伸縮性的網站,其設計老是走在業務發展的前面,在業務須要處理更多訪問和處理以前,就已經作好了充分的準備,當業務須要時,只須要增長服務器並簡單部署就能夠了,技術團隊即可輕鬆應對了。模塊化
可擴展架構是隨需而變的。有的網站能夠隨時發佈,新功能隨時快速上線,而有的必須規定發佈日,究其緣由,則依賴於網站的擴展性架構設計。擴展性和伸縮性不一樣。擴展性是指對現有系統影響最小的狀況下,系統功能可持續擴展或提高的能力。它是系統架構設計層面的開閉原則,架構設計考慮將來功能擴展,當系統增長新功能時,不須要對現有系統的結構和代碼進行修改。設計網站可擴展架構的核心思想是模塊化,並在此基礎上,下降模塊間的耦合性,提供模塊的複用性。模塊經過分佈式部署,獨立的模塊部署在獨立的服務器上集羣從物理上分離模塊之間的耦合關係。佈局