改善非功能需求的最佳實踐冗余負載均衡
方式有網絡切換、集群管理、基于DNS配置的切換
算法有隨機算法、選擇響應時間最快的算法、選擇負載最輕的算法、重型算法
失敗轉移
集群
將服務器組成一組,來統一進行管理,檢測軟、硬件的失敗,處理系統的失敗轉移,自動因失敗事件而重啟
集群配置方式
兩節點集群、集群對、Ring、N+1、N to N
改善性能性能有兩個關鍵點:
處理時間,從計算、數據調度、緩存和網絡傳輸
阻塞時間,來源于資源競爭和另一流程的依賴
處理措施使用好的算法或適用的技術
引入并行計算、限制并發請求以避免系統過度使用、TIME OUT措施
高可用可用是指隨時才能訪問,不能訪問的原因是硬件、網絡、服務器軟件、和應用組件的失敗;
如果一個應用組件不能提供足夠快的響應時間也是指不可用了,這是指系統正常運行情況下,由于正在同時處理很多任務而導致的延時。
改善措施集群中的復制,有活躍式的復制:發給所有節點,節點都同時進行運算,但只采用其中一個作為響應;被動式的復制,只有主節點響應請求,其他節點與主節點同步。
擴展性改善擴展的原因通常是因為需求的變更。最重要的目標是改善系統開發以適應快速的變化。
可采取的方法有:定義清晰的范圍、預知可能的變更(如果界面技術,隔離這一區域使其不能波及到其他地方)、使用高質量的對象模型(使用MVC模式來解耦界面組件和業務組件)
伸縮性的改善垂直伸縮:增加處理器或內存等,對系統是透明的;
水平伸縮:增加服務器,必須避免對服務器物理位置的依賴。
架構中的層
兩層結構的系統指C/S架構的程序。通常指包含了展示和業務邏輯的客戶端和服務器上的數據庫。展示和業務邏輯緊密結合。
優點安全是一點,由于這些系統是位于防火墻后面,員工不能使用不安全的的PC。性能通常比較好,如果公司不使用比較老的很少內存的電腦的話。
缺點可用性是一個缺點,因為如果一個元件不能工作的時候,整個系統就變得不可用。
伸縮性是一個問題,由于維一能夠增加的元件是數據庫。
為了能增加新功能,你很明顯會影響到其他元件,擴展性不行。
可管理性也是一個問題,監控所有正在運行客戶端的PC是不可能的。
可維護性和可擴展性一樣。
可靠性不是一個優點或缺點,由于請求增加時,所有的這些請求來到數據庫,所有的數據庫能處理增長的交易吞吐量。
三或多層架構的系統三層架構由WEB,業務邏輯和資源層組成。多層架構的系統有WEB,業務邏輯,整合和資源層。在非功能需求方面,三層和多層架構的系統擁有相同的優點和缺點。
優點當將展示層邏輯從PC客戶端移到服務器端,而能被集群時,伸縮性被改善了。
由于集群層能夠提供失敗轉移機制,可用性也有所改善。
由于功能被分解到不同的層中,擴展性也有所改善。你可以更改表現層又能使得對業務邏輯影響最小。
對于可維護性也是這樣。
由于各層是部署在服務器上,使得監控各個元件變得更容易,這樣可管理性也提高了。
分層對于安全性可以做得更多,但必須小心對性能造成影響。
性能可能是優點或缺點。主要還是優點,當分割線程到各服務器上時,如果你要在服務器間傳送大數據時,這時可能會變成缺點了。
缺點多層系統原生是比較復雜,多層架構的系統其實是沒有所謂的缺點。雖然這樣說,并不會由于你有了多層設計,你就有了很好的架構。必須記得不要過度使用層數。
小結
架構是一系列的使得系統能夠由一組具有自己的上下文的簡單的子系統組成的結構規則。
性能是指系統的響應時間,如必須在3秒內響應。
伸縮性是指當訪問量增加時可以增加冗余的組件,部署到增加的服務器上時,原系統無須作更改。C/S結構的系統,由于系統安裝在客戶端,就不能作這種伸縮。
擴展性,是指增加或修改功能時對現有的系統不會構成影響。如MODEL1的情形,系統沒有分層,所有代碼混在一起,更改時會互相影響。
可靠性,是指訪問量增加的時候,事務有保證。通常數據庫對增加的請求,事務的保證方面已經是有所處理了。
可用性,是指系統中的某個元件失敗時,系統還能訪問。如果是C/S架構的系統,無法分層,某個元件出現問題時,系統就不可用了。
可維護性,是指調整現有的系統流程,不會影響到其他元件。
可管理性,是指能監控系統伸縮能力,可靠性,可用性,性能和安全。
安全性,是指系統能夠阻擋非法訪問。