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