1. 程式人生 > >架構:大型oa信用盤網站搭建網站核心架構要素

架構:大型oa信用盤網站搭建網站核心架構要素

關於什麼是架構,一種比較通俗的說法是“最高層次的規劃,難以改變的決定”,這些規劃oa信用盤網站搭diguaym.com和決定奠定了事務未來發展的方向和最終的藍圖。
具體到軟體架構,維基百科是這樣定義的:“有關軟體整體結構與元件的抽象描述,用於指導大型軟體系統各個方面的設計”。系統的各個重要組成部分及其關係構成了系統的架構,這些組成部分可以是具體的功能模組,也可以是非功能的設計與決策,他們相互關係組成一個整體,共同構成了軟體系統的架構。
一般說來,除了當前的系統功能需求外,軟體架構還需要關注效能、可用性、伸縮性、擴充套件性和安全性這5個架構要素,架構設計過程中需要平衡這5個要素之間的關係以實現需求和架構目標,也可以通過考察這些架構要素來衡量一個軟體架構設計的優劣,判斷其是否滿足期望。

效能

效能是網站的一個重要指標,除非沒得選擇(比如只能到www.12306.cn這一個網站上買火車票),否則使用者無法忍受一個響應緩慢的網站。一個開啟緩慢的網站會導致嚴重的使用者流失,很多時候網站效能是網站架構升級優化的觸發器。可以說效能是網站架構設計的一個重要方面,任何軟體架構設計方案都必須考慮可能會帶來效能問題。
也正是因為效能問題幾乎無處不在,所以優化網站效能的手段也非常多,從使用者瀏覽器到資料庫,影響使用者請求的所有環節都可以進行效能優化。
在瀏覽器端,可以通過瀏覽器快取、使用頁面壓縮、合理佈局頁面、減少Cookie傳輸等手段改善效能。
還可以使用CDN,將網站靜態內容分發至離使用者最近的網路服務商機房,使使用者通過最短訪問路徑獲取資料。可以在網站機房部署反向代理伺服器,快取熱點檔案,加快請求響應速度,減輕應用伺服器負載壓力。
在應用伺服器端,可以使用伺服器本地快取和分散式快取,通過快取在記憶體中的熱點資料處理使用者請求,加快請求處理過程,減輕資料庫負載壓力。
也可以通過非同步操作將使用者請求傳送至訊息佇列等待後續任務處理,而當前請求直接返回響應給使用者。
在網站有很多使用者高併發請求的情況下,可以將多臺應用伺服器組成一個叢集共同對外服務,提高整體處理能力,改善效能。
在程式碼層面,也可以通過使用多執行緒、改善記憶體管理等手段優化效能。
在資料庫伺服器端,索引、快取、SQL優化等效能優化手段都已經比較成熟。而方興未艾的NoSQL資料庫通過優化資料模型、儲存結構、伸縮特性等手段在效能方面的優勢也日趨明顯。
衡量網站效能有一系列指標,重要的有響應時間、TPS、系統性能計數器等,通過測試這些指標以確定系統設計是否達到目標。這些指標也是網站監控的重要引數,通過監控這些可以分析系統瓶頸,預測網站容量,並對異常指標進行報警,保障系統可用性。
對於網站而言,效能符合預期僅僅是必要條件,因為無法預知網站可能會面臨的訪問壓力,所以必須要考察系統在高併發訪問情況下,超出負載設計能力的情況下可能會出現的效能問題。網站需要長時間持續執行,還必須保證系統在持續執行且訪問壓力不均勻的情況下保持穩定的效能特性。

可用性

對於大型網站而言,特別是知名網站,網站宕掉、服務不可用是一個重大的事故,輕則影響網站名譽,重則可能會攤上官司。對於電子商務類網站,網站不可用還意味著損失金錢和使用者。因此幾乎所有網站都承諾7×24可用,但事實上任何網站都不可能達到完全的7×24可用,總會有一些故障時間,扣除這些故障時間,就是網站的總可用時間,這個時間可以換算成網站的可用性指標,以此衡量網站的可用性,一些知名大型網站可以做到4個9以上的可用性,也就是可用性超過99.99%。
因為網站使用的伺服器硬體通常是普通的商用伺服器,這些伺服器的設計目標本身並部保證高可用,也就是說,很有可能會出現伺服器硬體故障,也就是俗稱的伺服器宕機。大型網站通常都會有上萬條伺服器,每天都必定會有一些伺服器宕機,因此網站高可用架構設計的前提是必然會出現伺服器宕機,而高可用設計的目標就是當伺服器宕機的時候,服務或者應用依然可用。
網站高可用的主要手段是冗餘,應用部署在多型伺服器上同時提供訪問,資料儲存在多臺伺服器上互相備份,任何一臺伺服器宕機都不會影響應用的整體可用,也不會導致資料丟失。
對於應用伺服器而言,多臺應用伺服器通過負載均衡裝置組成一個叢集共同對外提供服務,任何一臺伺服器宕機,只需把請求切換到其他伺服器就可實現應用的高可用,但是一個前提條件是應用伺服器上不能儲存請求的會話資訊。否則伺服器宕機,會話丟失,即使將使用者請求轉發到其他伺服器上也無法完成業務處理。
對於儲存伺服器,由於其上儲存著資料,需要對資料進行實時備份,當伺服器宕機時需要將資料訪問轉移到可用的伺服器上,並進行資料恢復以保證繼續有伺服器宕機的時候資料依然可用。
除了執行環境,網站的高可用還需要軟體開發過程的質量保證。通過預釋出驗證、自動化測試、自動化釋出、灰度釋出等手段,減少將故障引入線上環境的可能,避免故障範圍擴大。
衡量一個系統架構設計是否滿足高可用的目標,就是假設系統中任何一臺或者多型伺服器宕機時,以及出現各種不可預期的問題時,系統整體