http://blog.csdn.net/chaofanwei/article/details/27046795數據庫
所謂架構,一種通俗的說法就是「最高層次的規劃,難以改變的決定」,這些規劃和決定奠基了事物將來發展的方向和最終的藍圖。瀏覽器
而軟件架構即「有關軟件總體結構與組件的抽象描述,用於指導大型軟件系統各方面的設計」。通常來講軟件架構須要關注性能、可用性、伸縮性、擴展性和安全性這5個架構要素。緩存
性能是網站架構設計的一個重要方面,任何軟件架構設計方案都必須考慮可能帶來的性能問題。也正由於性能問題幾乎無處不在,因此優化網站性能的手段也很是多:安全
瀏覽器端:能夠經過瀏覽器緩存、頁面壓縮傳輸、合理佈局頁面、減小Cookie傳輸等手段,甚至可使用CDN加速功能。性能優化
應用服務器端:可使用服務器本地緩存和分佈式緩存,也能夠經過異步操做方式來加快響應,在高併發請求的狀況下,能夠將多臺應用服務器組成一個集羣共同對外服務,提升總體處理能力,改善性能。服務器
數據庫服務器端:可用使用索引、緩存、SQL性能優化等手段,還可使用NoSQL數據庫來優化數據模型、存儲結構等。架構
衡量網站性能有一系列指標,重要的有響應時間、TPS、系統性能計數器等,經過這些指標以肯定系統設計是否達到目標。併發
可用性即可以不間斷提供服務的時間。幾乎全部網站都承諾7×24小時可用,但事實上任何網站都不可能達到徹底的7×24,總會有一些故障時間,扣除這些故障時間,就是網站的可用時間。一些大型網站能夠作到4個9以上的可用性,也就是99.99%。負載均衡
網站高可用的主要手段就是冗餘,應用部署在多臺服務器上同時提供服務,數據存儲在多臺服務器上相互備份,任何一臺服務器都不會影響應用的總體能夠,一般的實現手段即把多臺服務器經過負載均衡設備組成一個集羣。框架
衡量一個系統架構設計是否知足高可用的目標,就是假設系統中任何一臺或者多臺服務器宕機時,以及出現各類不可預期的問題時,系統總體是否依然可用。
大型網站須要面對大量用戶的高併發訪問和存儲海量數據,網站經過集羣的方式將多臺服務器組成一個總體共同提供服務。所謂伸縮性是指經過不斷向集羣中加入服務器的手段來緩解不斷總體上市用戶併發訪問壓力和不斷增加的數據存儲需求。
衡量架構伸縮性的主要標準就是是否可用多臺服務器構建集羣,是否容易向集羣中添加新的服務器。加入新的服務器後是否能夠提供和原來的服務器無差異的服務。集羣中可容納的總服務器數量是否有限制。
不一樣於其餘架構要素主要關注非功能性需求,網站的擴展性架構直接關注網站的功能需求。網站快速發展,功能不斷擴展,如何設計網站的架構使其可以快速響應需求變化,是網站可擴展架構的主要目標。
衡量網站架構擴展性好壞的主要標準就是在網站增長新的業務產品時,是否能夠實現對現有產品透明無影響,不一樣產品之間是否不多耦合等。
網站可擴展架構的主要手段是事件驅動架構和分佈式服務。
事件驅動一般利用消息隊列實現,經過這種方式將消息生產和處理邏輯分隔開。
服務器服務則是將業務和可複用服務分離開來,經過分佈式服務框架調用。新增長產品可用經過調用可複用的服務來實現自身的業務邏輯,而對現有產品沒有任何影響。
互聯網是開發的,任何人在任何地方均可以訪問網站。網站的安全架構就是保護網站不受惡意訪問和攻擊,保護網站的重要數據不被竊取。
衡量網站安全架構的標準就是針對現存和潛在的各類攻擊和竊密手段,是否有可靠的應對策略。