1. 程式人生 > >大型站點技術架構(三)--架構核心要素

大型站點技術架構(三)--架構核心要素

net 事件驅動 站點安全 伸縮性 不同 結構 改變 大型軟件 互聯網

大型站點技術架構(一)--大型站點架構演化

大型站點技術架構(二)--架構模式

?????? 所謂架構,一種通俗的說法就是“最高層次的規劃,難以改變的決定”,這些規劃和決定奠定了事物未來發展的方向和終於的藍圖。

?????? 而軟件架構即“有關軟件總體結構與組件的抽象描寫敘述,用於指導大型軟件系統各方面的設計”。一般來說軟件架構須要關註性能、可用性、伸縮性、擴展性和安全性這5個架構要素。

1、性能

????? 性能是站點架構設計的一個重要方面,不論什麽軟件架構設計方案都必須考慮可能帶來的性能問題。也正由於性能問題差點兒無處不在,所以優化站點性能的手段也非常多:

???? 瀏覽器端:能夠通過瀏覽器緩存、頁面壓縮傳輸、合理布局頁面、降低Cookie傳輸等手段,甚至能夠使用CDN加速功能。

???? 應用server端:能夠使用server本地緩存和分布式緩存,也能夠通過異步操作方式來加快響應,在高並發請求的情況下。能夠將多臺應用server組成一個集群共同對外服務,提高總體處理能力,改善性能。

???? 數據庫server端:可用使用索引、緩存、SQL性能優化等手段。還能夠使用NoSQL數據庫來優化數據模型、存儲結構等。

?????衡量站點性能有一系列指標。重要的有響應時間、TPS、系統性能計數器等,通過這些指標以確定系統設計是否達到目標。

2、可用性

???? 可用性即能夠不間斷提供服務的時間。差點兒全部站點都承諾7×24小時可用,但其實不論什麽站點都不可能達到全然的7×24。總會有一些故障時間。扣除這些故障時間。就是站點的可用時間。一些大型站點能夠做到4個9以上的可用性。也就是99.99%。

??? 站點高可用的主要手段就是冗余,應用部署在多臺server上同一時候提供服務。數據存儲在多臺server上相互備份,不論什麽一臺server都不會影響應用的總體能夠,通常的實現手段即把多臺server通過負載均衡設備組成一個集群。

??? 衡量一個系統架構設計是否滿足高可用的目標。就是如果系統中不論什麽一臺或者多臺server宕機時。以及出現各種不可預期的問題時,系統總體是否依舊可用。

3、伸縮性

?????? 大型站點須要面對大量用戶的高並發訪問和存儲海量數據,站點通過集群的方式將多臺server組成一個總體共同提供服務。

所謂伸縮性是指通過不斷向集群中增加server的手段來緩解不斷總體上市用戶並發訪問壓力和不斷增長的數據存儲需求。

?????? 衡量架構伸縮性的主要標準就是是否可用多臺server構建集群,是否easy向集群中增加新的server。

增加新的server後能否夠提供和原來的server無區別的服務。

集群中可容納的總server數量是否有限制。

4、擴展性

??????? 不同於其它架構要素主要關註非功能性需求。站點的擴展性架構直接關註站點的功能需求。

站點高速發展,功能不斷擴展,怎樣設計站點的架構使其能夠高速響應需求變化。是站點可擴展架構的主要目標。

??????? 衡量站點架構擴展性好壞的主要標準就是在站點增加新的業務產品時,能否夠實現對現有產品透明無影響,不同產品之間是否非常少耦合等。

??????? 站點可擴展架構的主要手段是事件驅動架構和分布式服務

??????? 事件驅動通常利用消息隊列實現,通過這樣的方式將消息生產和處理邏輯分隔開。

??????? server服務則是將業務和可復用服務分離開來,通過分布式服務框架調用。

新增加產品可用通過調用可復用的服務來實現自身的業務邏輯,而對現有產品沒有不論什麽影響。

5、安全性

????? 互聯網是開發的。不論什麽人在不論什麽地方都能夠訪問站點。

站點的安全架構就是保護站點不受惡意訪問和攻擊,保護站點的關鍵數據不被竊取。

????? 衡量站點安全架構的標準就是針對現存和潛在的各種攻擊和竊密手段,是否有可靠的應對策略。

?????

?

?

大型站點技術架構(三)--架構核心要素