




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、軟件架構(gòu)風(fēng)格軟件架構(gòu)風(fēng)格是描述某一類特定應(yīng)用領(lǐng)域中軟件系統(tǒng)組織方式和慣用方式。組織方式描述了系統(tǒng)的組成構(gòu)件和這些構(gòu)件的組織方式,慣用模式則反映眾多系統(tǒng)共有的結(jié)構(gòu)和語義。面向?qū)ο蠹軜?gòu)風(fēng)格的特征是將數(shù)據(jù)表示和基本操作封裝在對象中。這種模式的構(gòu)件是對象,對象維護自身表示的完整性,對象之間通過消息機制進行通信,對象交互時需要知道彼此的標(biāo)識,通過對象之間的協(xié)作完成計算過程??刂骗h(huán)路架構(gòu)風(fēng)格是將過程輸出的指定屬性維護在一個特定的參考值(設(shè)定點)??刂骗h(huán)路風(fēng)格包括過程變量、被控變量、 輸入變量、操縱變量和設(shè)定點等構(gòu)件,通過收集實際和理想的過程狀態(tài)信息,并能調(diào)整過程變量使得實際狀態(tài)趨于理想狀態(tài)。主程序 - 子
2、程序架構(gòu)風(fēng)格中,所有的計算構(gòu)件作為子程序協(xié)作工作,并由一個主程序順序地調(diào)用這些子程序,構(gòu)件通過共享存儲區(qū)交換數(shù)據(jù)。管道 - 過濾器架構(gòu)風(fēng)格中,每個構(gòu)件都有一組輸入和輸出,構(gòu)件接受數(shù)據(jù)輸入,經(jīng)過內(nèi)部處理, 然后產(chǎn)生數(shù)據(jù)輸出。這里的構(gòu)件稱為過濾器,構(gòu)件之間的連接件稱為數(shù)據(jù)流傳輸?shù)墓艿馈1容^因素管道 - 過濾器風(fēng)格數(shù)據(jù)倉儲風(fēng)格交互方式順序結(jié)構(gòu)或有限的循環(huán)結(jié)構(gòu)星型數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)流文件或模型控制結(jié)構(gòu)數(shù)據(jù)流驅(qū)動業(yè)務(wù)功能驅(qū)動擴展方法接口適配模型適配軟件質(zhì)量屬性常見的軟件質(zhì)量屬性有多種,例如性能(performance) 、可用性( availability)、可靠性 (reliability)、 健壯性(ro
3、bustness) 、 安全性(security)、 可修改性(modification)、可 變 性 (changeability)、 易 用 性 (usability)、 可 測 試 性 (testability)、 功 能 性(functionality) 和互操作性( inter-operation)等。這些質(zhì)量屬性的具體含義是:(1) 性能是指系統(tǒng)的響應(yīng)能力,即要經(jīng)過多長時間才能對某個事件做出響應(yīng),或者在某段時間內(nèi)系統(tǒng)所能處理事件的個數(shù)。(2) 可用性是系統(tǒng)能夠正常運行的時間比例。(3) 可靠性是指軟件系統(tǒng)在應(yīng)用或錯誤面前,在意外或錯誤使用的情況下維持軟件系統(tǒng)功能特性的基本能力。(4
4、) 健壯性是指在處理或環(huán)境中,系統(tǒng)能夠承受壓力或變更的能力。(5) 安全性是指系統(tǒng)向合法用戶提供服務(wù)的同時能夠阻止非授權(quán)用戶使用的企圖或拒絕服務(wù)的能力。(6) 可修改性是指能夠快速地以較高的性能價格比對系統(tǒng)進行變更的能力。(7) 可變性是指體系結(jié)構(gòu)經(jīng)擴充或變更成為新體系結(jié)構(gòu)的能力。(8) 易用性是衡量用戶使用一個軟件產(chǎn)品完成指定任務(wù)的難易程度。(9) 可測試性是指軟件發(fā)現(xiàn)故障并隔離、定位其故障的能力特性,以及在一定的時間和成本前提下,進行測試設(shè)計、測試執(zhí)行的能力。(10) 功能性是系統(tǒng)所能完成所期望工作的能力。(11) 互操作性是指系統(tǒng)與外界或系統(tǒng)與系統(tǒng)之間的相互作用能力。質(zhì)量屬性的架構(gòu)設(shè)計策
5、略(1) 在線交易平臺必須在is 內(nèi)完成客戶的交易請求。該要求主要對應(yīng)性能,可以采用的架構(gòu)設(shè)計策略有增加計算資源、改善資源需求(減少計算復(fù)雜度等) 、資源管理(并發(fā)、數(shù)據(jù)復(fù)制等)和資源調(diào)度(先進先出隊列、優(yōu)先級隊列等)。(2) 該平臺必須嚴(yán)格保證客戶個人信息和交易信息的保密性和安全性。該要求主要對應(yīng)安全性, 可以采用的架構(gòu)設(shè)計策略有抵御攻擊(授權(quán)、 認證和限制訪問等)、攻擊檢測 (入侵檢測等 )、從攻擊中恢復(fù)(部分可用性策略)和信息審計等。(3) 當(dāng)發(fā)生故障時, 該平臺的平均故障恢復(fù)時間必須小于10s。 該要求主要對應(yīng)可用性,可以采用的架構(gòu)設(shè)計策略有ping/edio、心跳、異常和主動冗余等。
6、(4) 由于企業(yè)業(yè)務(wù)發(fā)展較快,需要經(jīng)常為該平臺添加新功能或進行硬件升級。添加新功能或進行平臺升級必須在6 小時內(nèi)完成。 該要求主要對應(yīng)可修改性,可以采用的架構(gòu)設(shè)計策略有軟件模塊泛化、限制模塊之間通信、使用中介和延遲綁定等。系統(tǒng)架構(gòu)設(shè)計中的非功能性需求系統(tǒng)性能需求(performance requirements) :指響應(yīng)時間、吞吐量、準(zhǔn)確性、有效性、資源利用率等與系統(tǒng)完成任務(wù)效率相關(guān)的指標(biāo)。可靠性、可用性等指標(biāo)歸為此類。安全性需求(security requirements) :系統(tǒng)向合法用戶提供服務(wù)并阻止非授權(quán)用戶使用服務(wù)方面的系統(tǒng)需求。操作性需求(operational requirem
7、ents): 與用戶操作使用系統(tǒng)相關(guān)的一些需求。文化需求( cultural requirements) :帶有文化背景因素的系統(tǒng)需求。系統(tǒng)架構(gòu)風(fēng)險、敏感點和權(quán)衡點的定義系統(tǒng)架構(gòu)風(fēng)險是指架構(gòu)設(shè)計中潛在的、存在問題的架構(gòu)決策所帶來的隱患。敏感點是指為了實現(xiàn)某種特定的質(zhì)量屬性,一個或多個系統(tǒng)組件所具有的特性。權(quán)衡點是指影響多個質(zhì)量屬性,并對多個質(zhì)量屬性來說都是敏感點的系統(tǒng)屬性。質(zhì)量效用樹( utility tree)在架構(gòu)評估過程中,質(zhì)量屬性效用樹(utility tree)是對系統(tǒng)質(zhì)量屬性進行識別和優(yōu)先級排序的重要工具。效用樹主要關(guān)注性能、可修改性、可用性和安全4 個方面系統(tǒng)可靠性系統(tǒng)在規(guī)定的時
8、間內(nèi)及規(guī)定的環(huán)境條件下,完成規(guī)定功能的能力,就是系統(tǒng)無故障運行的概率。根據(jù)國家標(biāo)準(zhǔn) 軟件工程產(chǎn)品質(zhì)量第1 部分:質(zhì)量模型 (gb/t16260.1 2006) 的規(guī)定,系統(tǒng)可靠性包括:成熟性、容錯性、易恢復(fù)性和可靠性的依從性4 個子特性。提高系統(tǒng)可靠性一般采用以下4 類技術(shù):(1) 冗余技術(shù);(2) 軟件容錯技術(shù);(3) 雙機容錯技術(shù);(4) 集群技術(shù)。軟件的可靠性設(shè)計主要包括了恢復(fù)塊和n 版本程序設(shè)計兩種方法?;謴?fù)塊方法是一種反向恢復(fù)的方法,其核心原理是:對于可靠性要求高的軟件,在程序運行的某時刻,將數(shù)據(jù)或程序進行備份,一旦發(fā)現(xiàn)主程序塊有異常發(fā)生時,可將已備份的數(shù)據(jù)或程序進行恢復(fù),保證程序的
9、正確性。1. 恢復(fù)塊方法:(1) 主塊(2) 驗證測試(3) 輸出正確結(jié)果(4) 異常處理2. 恢復(fù)塊方法與n版本程序設(shè)計的比較(5) 表決(6) 反向恢復(fù)(7) 差(8) 好動態(tài)冗余和 n版本程序設(shè)計技術(shù)動態(tài)冗余又稱為主動冗余,它是通過故障檢測、故障定位及故障恢復(fù)等手段達到容錯的目的。 其主要方式是多重模塊待機儲備,當(dāng)系統(tǒng)檢測到某工作模塊出現(xiàn)錯誤時,就用一個備用的模塊來替代它并重新運行。各備用模塊在其待機時,可與主模塊一樣工作,也可以不工作。前者叫熱備份系統(tǒng)(雙重系統(tǒng)),后者叫冷備份系統(tǒng)(雙工系統(tǒng)、雙份系統(tǒng))。n版本程序設(shè)計是一種靜態(tài)的故障屏蔽技術(shù),其設(shè)計思想是用n 個具有相同功能的程序同時
10、執(zhí)行一項計算, 結(jié)果通過多數(shù)表決來選擇。其中 n個版本的程序必須由不同的人獨立設(shè)計,使用不同的方法、 設(shè)計語言、 開發(fā)環(huán)境和工具來實現(xiàn),目的是減少n個版本的程序在表決點上相關(guān)錯誤的概率。m2采用動態(tài)冗余后的可靠度為:r=1- (1-0.99) 3 = 0.999999 李工給出的方案同時采用了串聯(lián)和并聯(lián)方式,其計算方法為首先計算出中間m2和 m3兩個并聯(lián)系統(tǒng)的可靠度,再按照串聯(lián)系統(tǒng)的計算方法計算出整個系統(tǒng)的可靠度。r = 0.99 * 0.999999 * 0.999999 * 0.99 = 0.98 檢錯技術(shù)的優(yōu)缺點,常見的實現(xiàn)方式和處理方式。檢錯技術(shù)實現(xiàn)的代價一般低于容錯技術(shù)和冗余技術(shù),但
11、有一個明顯的缺點,就是不能自動解決故障,出現(xiàn)故障后如果不進行人工干預(yù),將最終導(dǎo)致軟件系統(tǒng)不能正常運行。檢錯技術(shù)常見的實現(xiàn)方式:最直接的一種實現(xiàn)方式是判斷返回結(jié)果,如果返回結(jié)果超出正常范圍, 則進行異常處理;計算運行時間也是一種常用技術(shù),如果某個模塊或函數(shù)運行時間超過預(yù)期時間,可以判斷出現(xiàn)故障;還有置狀態(tài)標(biāo)志位等多種方法,自檢的實現(xiàn)方式需要根據(jù)實際情況來選用。檢錯技術(shù)的處理方式,大多數(shù)都采用“査出故障- 停止軟件運行- 報警”的處理方式。但根據(jù)故障的不同情況,也有采用不停止或部分停止軟件系統(tǒng)運行的情況,這一般由故障是否需要實時處理來決定。可靠性是實時系統(tǒng)的關(guān)鍵特性之一,區(qū)分軟件的錯誤(error
12、)、缺陷( defect ) 、故障(fault)和失效 (failure)概念是軟件可靠性設(shè)計工作的基礎(chǔ)。請簡要說明錯誤、缺陷、故障和失效的定義軟件錯誤:軟件錯誤是指在軟件生存期內(nèi)的不希望或不可接受的人為錯誤,其結(jié)果是導(dǎo)致軟件缺陷的產(chǎn)生。軟件缺陷:軟件缺陷是存在于軟件(文檔、數(shù)據(jù)、程序)之中的那些不希望或不可接受的偏差。軟件故障:軟件故障是指軟件運行過程中出現(xiàn)的一種不希望或不可接受的內(nèi)部狀態(tài)。軟件失效:軟件失效是指軟件運行時產(chǎn)生的一種不希望或不可接受的外部行為結(jié)果。設(shè)計模式創(chuàng)建型模式主要用于創(chuàng)建對象,為設(shè)計類實例化新對象提供指南。1.單例( singleton)模式 :某個類只能生成一個實例
13、,該類提供了一個全局訪問點供外部獲取該實例,其拓展是有限多例模式。2.原型( prototype)模式 :將一個對象作為原型,通過對其進行復(fù)制而克隆出多個和原型類似的新實例。3.工廠方法( factorymethod )模式 :定義一個用于創(chuàng)建產(chǎn)品的接口,由子類決定生產(chǎn)什么產(chǎn)品。4.抽象工廠( abstractfactory)模式 :提供一個創(chuàng)建產(chǎn)品族的接口,其每個子類可以生產(chǎn)一系列相關(guān)的產(chǎn)品。5.建造者( builder)模式 :將一個復(fù)雜對象分解成多個相對簡單的部分,然后根據(jù)不同需要分別創(chuàng)建它們,最后構(gòu)建成該復(fù)雜對象。結(jié)構(gòu)型模式主要用于處理類或?qū)ο蟮慕M合,對類如何設(shè)計以形成更大的結(jié)構(gòu)提供指
14、南。1.代理( proxy )模式 :為某對象提供一種代理以控制對該對象的訪問。即客戶端通過代理間接地訪問該對象,從而限制、增強或修改該對象的一些特性。2.適配器( adapter )模式 :將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口,使得原本由于接口不兼容而不能一起工作的那些類能一起工作。3.橋接( bridge )模式 :將抽象與實現(xiàn)分離,使它們可以獨立變化。它是用組合關(guān)系代替繼承關(guān)系來實現(xiàn)的,從而降低了抽象和實現(xiàn)這兩個可變維度的耦合度。4.裝飾( decorator )模式 :動態(tài)地給對象增加一些職責(zé),即增加其額外的功能。5.外觀(facade)模式 :為多個復(fù)雜的子系統(tǒng)提供一個一致的接
15、口,使這些子系統(tǒng)更加容易被訪問。6.享元( flyweight)模式 :運用共享技術(shù)來有效地支持大量細粒度對象的復(fù)用。7.組合( composite )模式 :將對象組合成樹狀層次結(jié)構(gòu),使用戶對單個對象和組合對象具有一致的訪問性。行為型模式主要用于描述類或?qū)ο蟮慕换ヒ约奥氊?zé)的分配,對類之間交互以及分配責(zé)任的方式提供指南。1.模板方法( template method )模式 :定義一個操作中的算法骨架,將算法的一些步驟延遲到子類中, 使得子類在可以不改變該算法結(jié)構(gòu)的情況下重定義該算法的某些特定步驟。2.策略( strategy)模式 :定義了一系列算法,并將每個算法封裝起來,使它們可以相互替換
16、,且算法的改變不會影響使用算法的客戶。3.命令( command )模式 :將一個請求封裝為一個對象,使發(fā)出請求的責(zé)任和執(zhí)行請求的責(zé)任分割開。4.職責(zé)鏈( chain of responsibility)模式 :把請求從鏈中的一個對象傳到下一個對象,直到請求被響應(yīng)為止。通過這種方式去除對象之間的耦合。5.狀態(tài)( state )模式 :允許一個對象在其內(nèi)部狀態(tài)發(fā)生改變時改變其行為能力。6.觀察者 (observer )模式 :多個對象間存在一對多關(guān)系,當(dāng)一個對象發(fā)生改變時,把這種改變通知給其他多個對象,從而影響其他對象的行為。7.中介者 (mediator )模式 :定義一個中介對象來簡化原有對
17、象之間的交互關(guān)系,降低系統(tǒng)中對象間的耦合度,使原有對象之間不必相互了解。8.迭代器 (iterator)模式 :提供一種方法來順序訪問聚合對象中的一系列數(shù)據(jù),而不暴露聚合對象的內(nèi)部表示。9.訪問者( visitor)模式 :在不改變集合元素的前提下,為一個集合中的每個元素提供多種訪問方式,即每個元素有多個訪問者對象訪問。10.備忘錄( memento )模式 :在不破壞封裝性的前提下,獲取并保存一個對象的內(nèi)部狀態(tài),以便以后恢復(fù)它。11.解釋器( interpreter)模式 :提供如何定義語言的文法,以及對語言句子的解釋方法,即解釋器。 (1) 策略模式解決方案:在具有公共接口的獨立類中定義每
18、個計算??梢岳迷撃J絼?chuàng)建各種促銷類,它們從同一個超類繼承。 每個類都有相同名稱的標(biāo)準(zhǔn)接口方法,用于根據(jù)訂單編號計算將要折扣的金額總數(shù)。(2) 適配器模式解決方案:增加一個類作為適配器, 轉(zhuǎn)換類的接口到客戶端類期望的另一個接口。實現(xiàn)一個適配器類,這個類為系統(tǒng)的其他部分提供了一個不變的方法供調(diào)用,為了集成不同商品供應(yīng)商提供的稅率計算類, 編寫一個適配器類的子類, 包含調(diào)用購買類所需的代碼。 該子類將系統(tǒng)的調(diào)用映射到某個供應(yīng)商的稅率計算類。如果要更換供應(yīng)商, 那么只需要寫一個新的適配器子類,其他保持不變。工廠設(shè)計模式的優(yōu)點和應(yīng)用場景,在數(shù)據(jù)訪問層中的應(yīng)用。工廠模式分抽象工廠與工廠方法,題目中的場景
19、適合采用抽象工廠設(shè)計模式。抽象工廠設(shè)計模式提供一個接口,可以創(chuàng)建一系列相關(guān)或相互依賴的對象,而無需指定它們具體的類。 其優(yōu)點是可以非常方便的創(chuàng)建一系列的對象,其使用場景也是創(chuàng)建系列對象的情況。在本題中,可以針對oracle 、mysql 、sqlserver 分別建立抽象工廠,若指定當(dāng)前工廠為 oracle 工廠,則創(chuàng)建出來的數(shù)據(jù)庫連接,數(shù)據(jù)集等一系列的對象都是符合oracle 操作要求的。這樣便于數(shù)據(jù)庫之間的切換。mvc 模式軟件體系結(jié)構(gòu)設(shè)計中,層次設(shè)計是一種常見的架構(gòu)設(shè)計方法,使設(shè)計的系統(tǒng)結(jié)構(gòu)清晰,便于提高復(fù)用能力和產(chǎn)品維護能力。mvc 是一種目前廣泛流行的軟件設(shè)計模式。mvc 強制性地將
20、一個應(yīng)用處理流程按照模型、視圖、控制的方式進行分離,形成了控制器、模型、視圖三個核心模塊。(1) 控制器: 接受用戶的輸入并調(diào)用模型和視圖去完成用戶的請求。一方面接受視圖的輸入, 將其轉(zhuǎn)為對模型特定方法的調(diào)用;一方面處理來自模型的事件,調(diào)用適當(dāng)?shù)囊晥D反饋給用戶。(2) 模型: 應(yīng)用程序的主體部分, 表示業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯,可以為多個視圖提供數(shù)據(jù)。(3) 、見圖:用戶看到并與之交互的界面。視圖可以向模型查詢業(yè)務(wù)狀態(tài),接收模型的數(shù)據(jù)更新事件,同步更新界面。三者協(xié)作關(guān)系如圖4-3 所示。使用 mvc 設(shè)計表現(xiàn)層,具有以下優(yōu)點:(1) 允許多種用戶界面的擴展。在 mvc 模式中, 視圖與模型沒有必然的
21、聯(lián)系,都是通過控制器發(fā)生聯(lián)系,如果增加新類型的用戶界面,只需修改響應(yīng)的控制器和視圖即可,模型無需變動;(2) 易于維護。 控制器和視圖隨著模型的擴展而擴展,只要保持公共接口,控制器和視圖的舊版本可以繼續(xù)使用;(3) 支持功能強大的用戶界面。用戶界面與模型方法調(diào)用組合起來,使程序的使用更清晰,可將友好的界面發(fā)布給用戶。mvc架構(gòu)風(fēng)格最初是smalltalk-80中用來構(gòu)建用戶界面時采用的架構(gòu)設(shè)計風(fēng)格。其中m代表模型( model) ,v代表視圖( view) ,c代表控制器( controller)。在該風(fēng)格中,模型表示待展示的對象,視圖表示模型的展示,控制器負責(zé)把用戶的動作轉(zhuǎn)成針對模型的操作。
22、模型通過更新視圖的數(shù)據(jù)來反映自身的變化。視圖( view) :視圖是用戶看到并與之交互的界面。視圖向用戶顯示相關(guān)的數(shù)據(jù),并能接收用戶的輸入數(shù)據(jù),但是它并不進行任何實際的業(yè)務(wù)處理??刂破鳎?controller) :控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。該部分是用戶界面與model 的接口。 一方面它解釋來自于視圖的輸入,將其解釋成為系統(tǒng)能夠理解的對象,同時它也識別用戶動作,并將其解釋為對模型特定方法的調(diào)用;另一方面,它處理來自于模型的事件和模型邏輯執(zhí)行的結(jié)果,調(diào)用適當(dāng)?shù)囊晥D為用戶提供反饋。模型( model) :模型是應(yīng)用程序的主體部分。模型表示業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯。一個模型能為
23、多個視圖提供數(shù)據(jù)。請從設(shè)計模式的角度,簡要說明設(shè)計方案采用xml作為 gui描述語言的機制。從設(shè)計模式的角度來說,整個xml表現(xiàn)層解柝的機制是一種策略模式。在調(diào)用顯示gui時,不是直接調(diào)用特定的表現(xiàn)技術(shù)的api, 而是裝載gui 對應(yīng)的 xml配置文件,然后根據(jù)特定的表現(xiàn)技術(shù)的解析器解析xml ,得到 gui 視圖實例對象。這樣,對于gui 開發(fā)人員來說,gui視圖只需要維護一套xml文件即可。界面定制是對用戶界面的動態(tài)修改過程,在軟件運行過程中,用戶可按照需求和使用習(xí)慣,對界面元素的屬性進行修改。軟件運行結(jié)束后,界面定制的結(jié)果被保存。界面動態(tài)生成是系統(tǒng)通過domapi 讀取 xml配置文件的
24、表示層信息,通過數(shù)據(jù)存取類讀取數(shù)據(jù)庫中的數(shù)據(jù)層信息,運行時由界面元素動態(tài)生成界面。界面配置和定制模塊在軟件運行前后修改配置文件、更改界面內(nèi)容。界面配置是對用戶界面的靜態(tài)定義,通過讀取配置文件的初始值對界面配置。由界面配置對軟件功能進行裁剪、重組和擴充,以實現(xiàn)特殊需求。基于xml 的界面管理技術(shù)實現(xiàn)的管理信息系統(tǒng)實現(xiàn)了用戶界面描述信息與功能實現(xiàn)代碼的分離, 可針對不同用戶需求進行界面配置和定制,能適應(yīng)一定程度的數(shù)據(jù)結(jié)構(gòu)改動。只需要對 xml文件稍加修改,即可實現(xiàn)系統(tǒng)的移植。數(shù)據(jù)庫分區(qū)數(shù)據(jù)分區(qū)是一種物理數(shù)據(jù)庫的設(shè)計技術(shù),它的目的是為了在特定的sql操作中減少數(shù)據(jù)讀寫的總量以縮減響應(yīng)時間。分區(qū)并不是
25、生成新的數(shù)據(jù)表,而是將表的數(shù)據(jù)均衡分攤到不同的硬盤,系統(tǒng)或是不同服務(wù)器存儲介子中,實際上還是一張表。另外,分區(qū)可以做到將表的數(shù)據(jù)均衡到不同的地方,提高數(shù)據(jù)檢索的效率,降低數(shù)據(jù)庫的頻繁io 壓力值,分區(qū)的優(yōu)點如下:1、相對于單個文件系統(tǒng)或是硬盤,分區(qū)可以存儲更多的數(shù)據(jù);2、數(shù)據(jù)管理比較方便,比如要清理或廢棄某年的數(shù)據(jù),就可以直接刪除該日期的分區(qū)數(shù)據(jù)即可;3、精準(zhǔn)定位分區(qū)查詢數(shù)據(jù),不需要全表掃描查詢,大大提高數(shù)據(jù)檢索效率;4、可跨多個分區(qū)磁盤查詢,來提高查詢的吞吐量;5、在涉及聚合函數(shù)查詢時,可以很容易進行數(shù)據(jù)的合并;采用 水平分區(qū) 機制可根據(jù)用戶標(biāo)識將用戶數(shù)據(jù)進行水平分割,用戶操作時先將請求分發(fā)
26、到不同數(shù)據(jù)庫分區(qū),再進行具體數(shù)據(jù)庫操作,以提高數(shù)據(jù)庫訪問效率。垂直分區(qū) 方式一般來說是通過對表的垂直劃分來減少目標(biāo)表的寬度,使某些特定的列被劃分到特定的分區(qū),每個分區(qū)都包含了其中的列所對應(yīng)的行。主從復(fù)制機制的好處。避免數(shù)據(jù)庫單點故障:主服務(wù)器實時、 異步復(fù)制數(shù)據(jù)到從服務(wù)器,當(dāng)主數(shù)據(jù)庫宕機時,可在從數(shù)據(jù)庫中選擇一個升級為主服務(wù)器,從而防止數(shù)據(jù)庫單點故障。提高査詢效率:根據(jù)系統(tǒng)數(shù)據(jù)庫訪問特點,可以使用主數(shù)據(jù)庫進行數(shù)據(jù)的插入、刪除及更新等寫操作, 而從數(shù)據(jù)庫則專門用來進行數(shù)據(jù)査詢操作,從而將査詢操作分擔(dān)到不同的從服務(wù)器以提高數(shù)據(jù)庫訪問效率。引入 memcached 后系統(tǒng)訪問數(shù)據(jù)庫的基本過程為:系統(tǒng)
27、需要讀取后臺數(shù)據(jù)時,先檢査數(shù)據(jù)是否存在于memcached中,若存在則直接從memcached中讀取,或不存在則從數(shù)據(jù)庫中讀取并保存在memcached中;當(dāng)系統(tǒng)數(shù)據(jù)庫中數(shù)據(jù)發(fā)生更新時,需要將更新后的內(nèi)容同步到memcached緩存實例中。與 mysql 查詢緩存相比,使用 memcached機制存在以下優(yōu)勢:(1) 緩存架構(gòu):數(shù)據(jù)庫查詢緩存通常每個數(shù)據(jù)庫只有一個實例,因此存儲內(nèi)容受數(shù)據(jù)庫服務(wù)器可用內(nèi)存限制,可緩存數(shù)據(jù)有限;而memcached可采用高速分布式緩存服務(wù)器結(jié)構(gòu),不受數(shù)據(jù)庫服務(wù)器約束,可擴展性更好。(2) 緩存有效性:數(shù)據(jù)庫查詢緩存只要在發(fā)生寫操作時就會失效,即使更新的是數(shù)據(jù)庫中的
28、其他行;而memcached可通過鍵值將數(shù)據(jù)進行散列緩存,有效降低緩存的更新頻率,從而提高緩存的有效性。(3) 緩存數(shù)據(jù)類型:數(shù)據(jù)庫杏詢緩存只能緩存數(shù)據(jù)庫行,對社交網(wǎng)站好友動態(tài)顯示等典型業(yè)務(wù)所需要的組合數(shù)據(jù)緩存缺乏有效支持,而memcached理論上可緩存任何內(nèi)容,因此可以將分散在數(shù)據(jù)庫中的關(guān)系或者列表組合后進行緩存,以提高緩存數(shù)據(jù)的針對性和效率。關(guān)系型數(shù)據(jù)庫管理系統(tǒng)和文件系統(tǒng)文件系統(tǒng)具有以下特點:?針對特定應(yīng)用系統(tǒng)設(shè)計,難度較??;?數(shù)據(jù)冗余較大,可能在多個文件中復(fù)制相同的數(shù)據(jù)屬性;?以應(yīng)用系統(tǒng)為中心組織、管理數(shù)據(jù);?符合特定應(yīng)用系統(tǒng)要求的文件數(shù)據(jù)很難在不同的應(yīng)用系統(tǒng)之間共享。關(guān)系型數(shù)據(jù)庫具有
29、以下特點。?數(shù)據(jù)結(jié)構(gòu)需要符合關(guān)系模式,設(shè)計難度較大;?遵守數(shù)據(jù)庫范式,數(shù)據(jù)冗余較少;?以數(shù)據(jù)庫為中心組織、管理數(shù)據(jù);?數(shù)據(jù)獨立于應(yīng)用系統(tǒng),很容易在不同的應(yīng)用系統(tǒng)之間共享數(shù)據(jù)。內(nèi)存數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫sql語句設(shè)計時,影響查詢效率的設(shè)計原則是:?查詢時盡量不要返回不需要的行、列;?需要進行多表連接?xùn)嗽儠r,盡量使用連接查詢,避免使用子查詢結(jié)構(gòu);?盡量避免采用notin 、notexist 、like 等使用全表查詢的操作;?盡量避免使用distinct關(guān)鍵字。增加數(shù)據(jù)訪問層的原因:(1)由于涉及到多種異構(gòu)數(shù)據(jù)庫平臺,數(shù)據(jù)訪問復(fù)雜性增加,不宜與業(yè)務(wù)邏輯混合在一起(2)數(shù)據(jù)管理變復(fù)雜之后,需要使用的代碼
30、量增加,分單獨層次有利于讓邏輯更清晰。(3) 業(yè)務(wù)邏輯應(yīng)以相同的方式應(yīng)對異構(gòu)的數(shù)據(jù)庫,此時需要單獨的數(shù)據(jù)訪問層屏蔽差異性。什么是數(shù)據(jù)持久層,使用數(shù)據(jù)持久層能夠為項目開發(fā)帶來哪些好處?數(shù)據(jù)持久層是根據(jù)分層思想,通過建立邏輯數(shù)據(jù)操作接口,采取一定的對象/ 關(guān)系映射策略, 隱藏數(shù)據(jù)庫訪問代碼細節(jié),向業(yè)務(wù)開發(fā)人員提供透明的對象持久化操作機制。能夠為項目開發(fā)帶來的好處:(1) 分離業(yè)務(wù)邏輯層和數(shù)據(jù)層,降低兩者之間的耦合;(2) 通過對象 /關(guān)系映射向業(yè)務(wù)邏輯提供面向?qū)ο蟮臄?shù)據(jù)訪問;(3) 簡化數(shù)據(jù)層訪問,隱藏數(shù)據(jù)庫鏈接、數(shù)據(jù)讀寫命令和事務(wù)管理細節(jié)。hibernate和 ibatis是輕量級javaee
31、框架中兩種數(shù)據(jù)持久層技術(shù),兩者都是優(yōu)秀的開源項目。 ibatis相對簡單易學(xué)而且更靈活,但開發(fā)工作量較大,數(shù)據(jù)之間是關(guān)聯(lián)關(guān)系;hibernate框架相對復(fù)雜,所生成的持久化對象能夠表達面向?qū)ο笾械睦^承和聚合等關(guān)系,開發(fā)工作量較小,hibernate使用更廣泛更成熟,能夠適應(yīng)目前所有主流的關(guān)系型數(shù)據(jù)庫。項目組應(yīng)該采用hibernate框架的原因:(1) hibernate支持多種不同類型數(shù)據(jù)庫,滿足項目組數(shù)據(jù)庫移植需求;(2) hibernate相對于 ibatis減少了 sql語句開發(fā)的工作量;(3) ibatis生成的 p0 是扁平化的,無法像hibernate 樣支持對象的繼承和聚合等立體
32、化關(guān)系。數(shù)據(jù)庫程序在線訪問方式和orm 方式的優(yōu)缺點數(shù)據(jù)庫程序在線訪問方式優(yōu)點:1、性能比直接sql好2、可以處理復(fù)雜查詢語句數(shù)據(jù)庫程序在線訪問方式缺點:1、要求程序員懂sql語句2、修改與維護相對困難orm 優(yōu)點:1、使用 orm 可以大大降低學(xué)習(xí)和開發(fā)成本。2、程序員不用再寫sql來進行數(shù)據(jù)庫操作。3、減少程序的代碼量。4、降低由于sql代碼質(zhì)量差而帶來的影響。orm 缺點1、不太容易處理復(fù)雜查詢語句。2、性能較直接用sql差。本題中的場景之所以選擇orm ,主要考慮的是程序缺數(shù)據(jù)庫開發(fā)經(jīng)驗,這樣sql語句質(zhì)量有很大風(fēng)險。同時學(xué)習(xí)成本很高。此外應(yīng)用簡單,不也擔(dān)心orm 對性能的影響。(a)
33、 web 應(yīng)用層(b) 界面層(c) 負載均衡層(d) cdn 內(nèi)容分發(fā)(e) 主數(shù)據(jù)庫(f) 緩存服務(wù)器集群(g) 從數(shù)據(jù)庫(h) 寫操作(i) 讀操作(j) 文件服務(wù)器集群(1) (d)(2) (c)(3) (f )(4) (a)(5) (6) (e) (h)(7) (8) (g) (i )引入主從復(fù)制機制好處1、提升性能交易平臺要求高并發(fā),主從復(fù)制方式一主多從,不同的用戶請求可以從不同的從數(shù)據(jù)庫讀取數(shù)據(jù),提高并發(fā)度。2、可擴展性更優(yōu)如果采用單臺數(shù)據(jù)庫服務(wù)器,則訪問量持續(xù)增加時,數(shù)據(jù)庫瓶頸暴露,且無法迅速解決問題。而主從結(jié)構(gòu)可以快速增加從服務(wù)器數(shù)量,以滿足需求。3、提升可用性一主多從,一臺
34、從服務(wù)器出現(xiàn)故障不影響整個系統(tǒng)正常工作。4、相當(dāng)于負載均衡一主多從分擔(dān)任務(wù),相當(dāng)于負載均衡5、提升數(shù)據(jù)安全性系統(tǒng)中的數(shù)據(jù)冗余存放多份,不會因為某臺機器硬件故障而導(dǎo)致數(shù)據(jù)丟失。memcache redis 數(shù)據(jù)類型簡單 key/value結(jié)構(gòu)key/value,list, set ,hash,sorted 持久性不支持支持分布式存儲不支持多種方式、主從、sentinel、cluster 多線程支持支持不支持內(nèi)存管理有無事務(wù)支持不支持有限支持(1)memcache沒有持久化功能,所以掉電數(shù)據(jù)會全部丟失,而且無法直接恢復(fù),這存在可靠性問題。(2)memcache不支持事務(wù),所以操作過程中可能產(chǎn)生數(shù)據(jù)
35、的不一致性。同步方案:讀取數(shù)據(jù)時,先讀取redis 中的數(shù)據(jù),如果redis 沒有,則從原數(shù)據(jù)庫中讀取,并同步更新redis 中的數(shù)據(jù),寫回時,寫入到原數(shù)據(jù)庫中,并同步更新至redis中。redis 分布式存儲的 2 種常見方案:1. 主從2.cluster redis 集群切片的常見方式:1. 客戶端切片,即在客戶端就通過key 的 hash 值對應(yīng)到不同的服務(wù)器。2. 對數(shù)據(jù)根據(jù)key 散列到不同的slot上,不同的slot對應(yīng)到不同服務(wù)器。數(shù)據(jù)庫建模中的反規(guī)范化技術(shù),優(yōu)缺點。規(guī)范化設(shè)計后, 數(shù)據(jù)庫設(shè)計者希望犧牲部分規(guī)范化來提髙性能,這種從規(guī)范化設(shè)計的回退方法叫做反規(guī)范化技術(shù)。反規(guī)范化設(shè)計
36、允許保留或者新增一些冗余數(shù)據(jù),從而減少數(shù)據(jù)查詢中表連接的數(shù)目或簡化計算過程,提高數(shù)據(jù)訪問效率。采用反規(guī)范化技術(shù)的益處:能夠減少數(shù)據(jù)庫查詢時sql連接的數(shù)目,從而減少磁盤i/o數(shù)據(jù)量,提高查詢效率??赡軒淼膯栴}:數(shù)據(jù)的重復(fù)存儲,浪費了磁盤空間;為了保障數(shù)據(jù)的一致性,增加了數(shù)據(jù)維護的復(fù)雜性。常見的反規(guī)范化技術(shù)有哪些。常見的反規(guī)范化技術(shù)包括:(1) 增加冗余列: 在多個表中保留相同的列,通過增加數(shù)據(jù)冗余減少或避免查詢時的連接操作;(2) 增加派生列: 在表中增加可以由本表或其他表中數(shù)據(jù)計算生成的列,減少查詢時的連接操作并避免計算或使用集合函數(shù);(3) 表水平分割: 根據(jù)一列或多列數(shù)據(jù)的值,把數(shù)據(jù)放
37、到多個獨立的表中,主要用于表數(shù)據(jù)規(guī)模很大、表中數(shù)據(jù)相對獨立或數(shù)據(jù)需要存放到多個介質(zhì)上時使用;(4) 表垂直分割: 對表進行分割, 將主鍵與部分列放到一個表中,主鍵與其他列放到另一個表中,在查詢時減少i/o 次數(shù)。從數(shù)據(jù)獲取方式、數(shù)據(jù)交互方式和數(shù)據(jù)訪問的上下文無關(guān)性三個方面對王工和李工的方案進行比較,并用500 字以內(nèi)的文字說明為什么沒有采用王工的方案。(公司的架構(gòu)師王工提出采用面向服務(wù)的系統(tǒng)架構(gòu),首先將各種待集成的第三方軟件和異構(gòu)數(shù)據(jù)源統(tǒng)一進行包裝,然后將數(shù)據(jù)訪問功能以標(biāo)準(zhǔn)web服務(wù)接口的形式對外暴露,從而支持系統(tǒng)進行數(shù)據(jù)的分析與處理,前端則采用css等技術(shù)實現(xiàn)瀏覽器數(shù)據(jù)的渲染與展示。架構(gòu)師李
38、工則認為該系統(tǒng)的核心在于數(shù)據(jù)的定位、匯聚與轉(zhuǎn)換, 更適合采用面向資源的架構(gòu),即首先為每種數(shù)據(jù)元素確定地址,然后將各種數(shù)據(jù)格式統(tǒng)一轉(zhuǎn)換為json 格式,通過對json數(shù)據(jù)的組合支持數(shù)據(jù)的分析與處理任務(wù),處理結(jié)果經(jīng)過渲染后在瀏覽器的環(huán)境中進行展示。在架構(gòu)評估會議上,專家對這兩種方案進行綜合評價,最終采用了李工的方案。)從數(shù)據(jù)獲取方式看,王工的方案需要將現(xiàn)有的多個系統(tǒng)和異構(gòu)的數(shù)據(jù)源包裝為服務(wù),采用 web服務(wù)暴露數(shù)據(jù)接口,客戶端需要通過服務(wù)調(diào)用獲取數(shù)據(jù),這種方法工作量大,復(fù)雜度較高。李工的方案則繞開了復(fù)雜的功能封裝,只需要明確數(shù)據(jù)的位置與標(biāo)識,通過特定的網(wǎng)絡(luò)協(xié)議直接使用標(biāo)識定位并獲取數(shù)據(jù),與王工的方
39、案相比工作量小,實現(xiàn)簡單。從數(shù)據(jù)交互方式看,王工的方案采用遠程過程調(diào)用和異步xml 消息等模式實現(xiàn)數(shù)據(jù)交互,這種方式適合于系統(tǒng)之間功能調(diào)用時進行的少量數(shù)據(jù)傳輸,而在進行單純的數(shù)據(jù)訪問時效率不高, 穩(wěn)定性也較差。 李工的方案則以數(shù)據(jù)資源為核心,在對數(shù)據(jù)資源進行標(biāo)識的基礎(chǔ)上,通過標(biāo)識符直接對數(shù)據(jù)資源進行訪問與交互,實現(xiàn)簡單且效率較高。從數(shù)據(jù)訪問的上下文無關(guān)性看,王工的方案中數(shù)據(jù)訪問是與上下文有關(guān)的,具體表現(xiàn)在每次客戶端進行數(shù)據(jù)請求都需要附加唯一的請求標(biāo)識,并且服務(wù)端需要區(qū)分不同的客戶端請求,效率較低。李工的方案中數(shù)據(jù)訪問是與上下文無關(guān)的,客戶端通過全局唯一的統(tǒng)一資源標(biāo)識符( uri) 請求對應(yīng)的數(shù)
40、據(jù)資源,服務(wù)端不需要區(qū)分不同的客戶端請求。用例用例建模用來描述待開發(fā)系統(tǒng)的功能需求,主要元素是用例和參與者。請根據(jù)題目所述需求,說明教學(xué)服務(wù)系統(tǒng)中有哪些參與者。參與者是指系統(tǒng)以外的,需要使用系統(tǒng)或與系統(tǒng)交互的事物,包括:人或組織、設(shè)備、外部系統(tǒng)等。在本題中,較為容易識別的參與者包括:學(xué)生、教師、管理員,比較隱晦的參與者包括:時間、打印機。用例之間的關(guān)系包括:包含、擴展、泛化。類圖主要用來描述系統(tǒng)的靜態(tài)結(jié)構(gòu),是組件圖和配置圖的基礎(chǔ)。類之間的關(guān)系有哪幾種類型?類之間的關(guān)系包括:關(guān)聯(lián)、聚合、組合、依賴、泛化、實現(xiàn)(可寫可不寫,因為實現(xiàn)是接口與類之間的關(guān)系,而接口是一種特殊的類)。類 universi
41、ty與類 student 之間的關(guān)系是:聚合關(guān)系。類 university與類 department 之間的關(guān)系是:組合關(guān)系。類 student 與類 course 之間的關(guān)系是:關(guān)聯(lián)關(guān)系。依賴關(guān)系:一個事物發(fā)生變化影響另一個事物。泛化關(guān)系:特殊/ 一般關(guān)系。關(guān)聯(lián)關(guān)系:描述了一組鏈,鏈?zhǔn)菍ο笾g的連接。聚合關(guān)系:整體與部分生命周期不同。組合關(guān)系:整體與部分生命周期相同。實現(xiàn)關(guān)系:接口與類之間的關(guān)系。在面向?qū)ο蠓椒ㄖ型ǔ2捎糜美╱se case)來捕獲系統(tǒng)的功能需求。用例可以按照不同的層次來進行劃分,其中的essential use cases 和 real use cases 有哪些區(qū)別 ?
42、 essential use cases 可翻譯為抽象用例,而real use cases可翻譯為基礎(chǔ)用例。他們是區(qū)別在于: 基礎(chǔ)用例是實實在在與用戶需求有對應(yīng)關(guān)系的用例,是從用戶需求獲取的渠道得到的, 而抽象用例是從基礎(chǔ)用例中抽取的用例的公共部分,是為了避免重復(fù)工作,優(yōu)化結(jié)構(gòu)而提出的用例。流程圖與數(shù)據(jù)流圖的含義及其區(qū)別數(shù)據(jù)流圖作為一種圖形化工具,用來說明業(yè)務(wù)處理過程、系統(tǒng)邊界內(nèi)所包含的功能和系統(tǒng)中的數(shù)據(jù)流。流程圖以圖形化的方式展示應(yīng)用程序從數(shù)據(jù)輸入開始到獲得輸出為止的邏輯過程,描述處理過程的控制流。兩者的區(qū)別主要包括:(1) 數(shù)據(jù)流圖中的處理過程可并行;流程圖在某個時間點只能處于一個處理過程
43、。(2) 數(shù)據(jù)流圖展現(xiàn)系統(tǒng)的數(shù)據(jù)流;流程圖展現(xiàn)系統(tǒng)的控制流。(3) 數(shù)據(jù)流圖展現(xiàn)全局的處理過程,過程之間遵循不同的計時標(biāo)準(zhǔn);流程圖中處理過程遵循一致的計時標(biāo)準(zhǔn)。(4) 數(shù)據(jù)流圖適用于系統(tǒng)分析中的邏輯建模階段;流程圖適用于系統(tǒng)設(shè)計中的物理建模階段。數(shù)據(jù)流圖中常見的錯誤分為兩種類型:一類是語法錯誤,包括外部實體之間、數(shù)據(jù)存儲之間或外部實體與數(shù)據(jù)存儲之間不經(jīng)過加工而存在直接數(shù)據(jù)流;另一類是邏輯錯誤,包括數(shù)據(jù)黑洞(只有輸入沒有產(chǎn)生輸出)、灰洞(輸入不足以產(chǎn)生輸出)和無輸入。髙質(zhì)量數(shù)據(jù)流圖設(shè)計時應(yīng)考慮的三個原則:(1) 復(fù)雜性最小化原則。dfd分層結(jié)構(gòu)就是把信息劃分為小的且相對獨立的一大批子集例子,這樣
44、就可以單獨考查每一個dfd 。如果要了解某個過程更加詳細的信息,可以跳轉(zhuǎn)到該過程的下一層; 如果要知道一個dfd如何與其他dfd相關(guān)聯(lián), 可以跳轉(zhuǎn)到上一層的dfd進行考査。(2) 接口最小化原則。接口最小化是復(fù)雜性最小化的一種具體規(guī)則,在設(shè)計模型時, 應(yīng)使得模型中各個元素之間的接口數(shù)或連接數(shù)最小化。(3) 數(shù)據(jù)流一致性原則。一個過程和它的過程分解在數(shù)據(jù)流內(nèi)容中是否有差別?是否存在有數(shù)據(jù)流出但沒有相應(yīng)的數(shù)據(jù)流入的加工?是否存在有數(shù)據(jù)流入但沒有相應(yīng)的數(shù)據(jù)流出的加工?狀態(tài)圖和活動圖的含義及其區(qū)別。狀態(tài)圖主要用于描述一個對象在其生存期間的動態(tài)行為,表現(xiàn)一個對象所經(jīng)歷的狀態(tài)序列,引起狀態(tài)轉(zhuǎn)移的事件(ev
45、ent ) ,以及因狀態(tài)轉(zhuǎn)移而伴隨的動作(action ) ?;顒訄D可以用于描述系統(tǒng)的工作流程和并發(fā)行為。活動圖其實可看作狀態(tài)圖的特殊形式,活動圖中一個活動結(jié)束后將立即進入下一個活動(在狀態(tài)圖中狀態(tài)的轉(zhuǎn)移可能需要事件的觸發(fā)) 。兩者最大的區(qū)別是:狀態(tài)圖側(cè)重于描述行為的結(jié)果,而活動圖側(cè)重描述行為的動作。其次活動圖可描述并發(fā)行為,而狀態(tài)圖不能。數(shù)據(jù)流圖 (data flow diagram)的基本元素及其作用。四種元素:(1) external agent(實體 / 外部代理 ) :定義位于項目范圍之外,但與正在被研發(fā)的系統(tǒng)有交互關(guān)系的人、部門、外部系統(tǒng)或組織。(2) process( 加工 /
46、處理 ):在輸入數(shù)據(jù)流或條件上執(zhí)行,或者對輸入數(shù)據(jù)流或條件做出響應(yīng)的工作。(3) data store(數(shù)據(jù)存儲 ) :靜止的數(shù)據(jù),表示系統(tǒng)中需要保存的數(shù)據(jù)。(4) data flow(數(shù)據(jù)流 ) :運動中的數(shù)據(jù),表示到一個過程的數(shù)據(jù)輸入,或者來自一個過程的數(shù)據(jù)輸出。數(shù)據(jù)流圖中的錯誤包括兩類:第一類是邏輯錯誤, 加工節(jié)點輸入輸出不平衡,包括黑洞、灰洞和無輸入三種類型;第二類是語法錯誤,比如數(shù)據(jù)存儲不完整、在數(shù)據(jù)存儲與外部代理之間或者各自之間沒有經(jīng)過加工之間發(fā)生數(shù)據(jù)流等。軟件系統(tǒng)數(shù)據(jù)架構(gòu)建模數(shù)據(jù)架構(gòu)定義了信息系統(tǒng)中文件和數(shù)據(jù)庫的分布結(jié)構(gòu)。數(shù)據(jù)架構(gòu)建模是以數(shù)據(jù)為中心,建模業(yè)務(wù)數(shù)據(jù)類型和結(jié)構(gòu),以及設(shè)
47、計滿足應(yīng)用需求的數(shù)據(jù)庫系統(tǒng)。傳統(tǒng)以主機為中心的信息系統(tǒng)開發(fā)中, 利用單個的數(shù)據(jù)庫系統(tǒng)實現(xiàn)數(shù)據(jù)的集中式存儲,物理上所有的數(shù)據(jù)位于同一個位置, 構(gòu)成的是一種集中式的數(shù)據(jù)架構(gòu);現(xiàn)代基于網(wǎng)絡(luò)的分布式系統(tǒng)開發(fā)中,很少有組織會將其全部的數(shù)據(jù)存儲在單個的數(shù)據(jù)庫中,通常需要多個數(shù)據(jù)庫系統(tǒng)組成,數(shù)據(jù)在這些數(shù)據(jù)庫系統(tǒng)之間可以傳送,由多個不同的數(shù)據(jù)庫管理系統(tǒng)控制,構(gòu)成的是一種分布式的數(shù)據(jù)架構(gòu)。集中式數(shù)據(jù)架構(gòu)中, 一個或多個局域網(wǎng)中的客戶共享一個單獨計算機系統(tǒng)中的單個數(shù)據(jù)庫。系統(tǒng)提供數(shù)據(jù)處理能力,用戶可以在同樣的站點上操作,也可以在地理位置隔開的其他站點上通過遠程終端來操作。系統(tǒng)及其數(shù)據(jù)管理被某個或中心站點集中控制。
48、單個數(shù)據(jù)庫服務(wù)器結(jié)構(gòu)的主要優(yōu)點就是簡單、易維護開發(fā)及運行成本低;但由于所有的客戶直接請求服務(wù)器,容易發(fā)生性能瓶頸,如果服務(wù)失敗,單個服務(wù)器不能提供備份和恢復(fù),所有依賴的應(yīng)用程序都將不能工作。分布式數(shù)據(jù)架構(gòu)中,使用多個計算機系統(tǒng)以及用戶能夠訪問遠程系統(tǒng)的數(shù)據(jù),數(shù)據(jù)可以在多個不同的數(shù)據(jù)庫中進行傳送,由不同的數(shù)據(jù)庫管理系統(tǒng)軟件進行管理,運行在多種不同的計算機上,支持多種不同的操作系統(tǒng)。這些機器位于(或分布在)不同的地理位置并通過多種通信網(wǎng)絡(luò)連接在一起。企業(yè)數(shù)據(jù)可以分布在不同的計算機上,一個應(yīng)用程序可以操作位于不同地理位置的機器上的數(shù)據(jù)。多個數(shù)據(jù)庫服務(wù)器結(jié)構(gòu)的主要優(yōu)點就是系統(tǒng)的容錯能力和對廣域網(wǎng)容量的
49、需求有所降低,可以采用多種策略提升整個系統(tǒng)的服務(wù)質(zhì)量;由于多個數(shù)據(jù)庫系統(tǒng)分布在不同的網(wǎng)絡(luò)節(jié)點上,位于不同位置的數(shù)據(jù)之間需要同步和協(xié)作,系統(tǒng)結(jié)構(gòu)復(fù)雜、運行成本高并且維護困難。如何建立 crss的數(shù)據(jù)庫系統(tǒng); 對于數(shù)據(jù)的讀取、 添加、更改和刪除操作分別如何實現(xiàn)。讀寫分離架構(gòu)利用了數(shù)據(jù)庫的復(fù)制技術(shù),將數(shù)據(jù)的讀和寫分布在不同的處理節(jié)點上,從而達到提高可用性和擴展性的目的。crss的分布式數(shù)據(jù)庫系統(tǒng)需要由多個局部數(shù)據(jù)庫系統(tǒng)、多個熱備份數(shù)據(jù)庫系統(tǒng)和多個數(shù)據(jù)緩存組成。 局部數(shù)據(jù)庫負責(zé)數(shù)據(jù)的寫入,多個熱備份數(shù)據(jù)庫系統(tǒng)用以解決單點故障的問題,數(shù)據(jù)緩存負責(zé)為應(yīng)用提供所讀取的數(shù)據(jù)。(1) 讀取數(shù)據(jù): 應(yīng)用訪問緩存,
50、 如果命中則返回,否則從局部數(shù)據(jù)庫系統(tǒng)中讀取數(shù)據(jù)并將數(shù)據(jù)加載到緩存后返回。(2) 添加數(shù)據(jù):采用延遲加載策略,應(yīng)用將數(shù)據(jù)直接寫入局部數(shù)據(jù)庫。(3) 更改數(shù)據(jù):應(yīng)用更改局部數(shù)據(jù)庫中的數(shù)據(jù),將緩存中的數(shù)據(jù)標(biāo)記為失效。(4) 刪除數(shù)據(jù):應(yīng)用刪除局部數(shù)據(jù)庫中的數(shù)據(jù),將緩存中的數(shù)據(jù)標(biāo)記為失效。說明在集中式和分布式數(shù)據(jù)架構(gòu)下,可以釆用哪些方法提升系統(tǒng)的可擴展性。集中式數(shù)據(jù)架構(gòu)通過向上擴展(scale up) 提升系統(tǒng)的可擴展性。具體的實現(xiàn)方式包括硬件擴容(增加cpu數(shù) ft 、內(nèi)存容童、磁盤數(shù)量)和硬件升級(更換為高端主機或髙速磁盤等 ) 。分布式數(shù)據(jù)架構(gòu)通過向外擴展(scale out) 提升系統(tǒng)的可擴
51、展性。具體的實現(xiàn)方式包括數(shù)據(jù)復(fù)制、數(shù)據(jù)垂直切分或/ 和水平切分、緩存和全文搜索。信息工程方法中的“實體 (entity) ”與面向?qū)ο蠓椒ㄖ械摹邦?(class ) ”之間有哪些不同之處?實體用于數(shù)據(jù)建模,而類用于面向?qū)ο蠼?。實體只有屬性,而類有屬性和操作。esb的主要功能esb 的主要功能包括:(1) 應(yīng)用程序的位置透明性(2) 傳輸協(xié)議轉(zhuǎn)換(3) 消息格式轉(zhuǎn)換(4) 消息路由(5) 消息增強(6) 安全支持(7) 監(jiān)控和管理采用 esb作為集成框架,能夠?qū)崿F(xiàn)靈活的部署結(jié)構(gòu),包括cs結(jié)構(gòu)、 p2p結(jié)構(gòu)等。采用esb作為集成框架,待集成系統(tǒng)只需要和總線進行聯(lián)系,彼此之間不需要互相通信,這樣就
52、大大降低了系統(tǒng)的耦合程度。采用 esb作為集成框架, 在加入新的待集成系統(tǒng)時,只需要采用插件的方式實現(xiàn)傳輸協(xié)議和數(shù)據(jù)格式的適配即可,系統(tǒng)的可擴展性較強。需求:(1) 目前使用的系統(tǒng)設(shè)計與開發(fā)工具的運行平臺和開發(fā)語言差異較大,集成框架應(yīng)無縫集成各個工具的功能;(2) 目前使用的系統(tǒng)設(shè)計與開發(fā)工具所支持的通信協(xié)議和數(shù)據(jù)格式各不相同,集成框架應(yīng)實現(xiàn)工具之間的靈活通信和數(shù)據(jù)格式轉(zhuǎn)換:(3) 集成框架需要根據(jù)實際的開發(fā)流程靈活、動態(tài)地定義系統(tǒng)工具之間的協(xié)作關(guān)系:(4) 集成框架應(yīng)能集成一些常用的第三方實用工具,如即時通信、郵件系統(tǒng)等。根據(jù) 4 個需求,說明每個需求應(yīng)該采用何種具體的集成方式或架構(gòu)風(fēng)格最為
53、合適。對于需求( 1) 來說,由于需要共享系統(tǒng)的功能,并且系統(tǒng)的運行平臺與語言差異較大,應(yīng)該采用面向服務(wù)的方式進行功能集成,可以將工具的功能包裝為服務(wù),實現(xiàn)跨語言與跨平臺訪問。對于需求 (2)來說, 工具所支持的通信協(xié)議和數(shù)據(jù)格式各不相同,并需要賣現(xiàn)工具之間的靈活通信協(xié)議和數(shù)據(jù)格式交換,因此應(yīng)該基于消息總線,以協(xié)議及數(shù)據(jù)適配器的方式實現(xiàn)靈活的通信協(xié)議和數(shù)據(jù)格式轉(zhuǎn)換。對于需求( 3) 來說, 集成框架需要根據(jù)實際的軟件系統(tǒng)開發(fā)流程,靈活、動態(tài)地定義系統(tǒng)設(shè)計與開發(fā)工具之間的協(xié)作關(guān)系,因此應(yīng)該引入工作流定義語言及其引擎來動態(tài)描述工具之間的協(xié)作關(guān)系。對于需求 (4)來說, 應(yīng)該采用界面集成的方法對第三
54、方工具進行集成,繞過工具內(nèi)部的復(fù)雜處理邏輯。在實現(xiàn)工具之間數(shù)據(jù)格式的靈活轉(zhuǎn)換時,通常采用的設(shè)計模式是什么,并對實現(xiàn)過程進行簡要描述。在實現(xiàn)工具之間數(shù)據(jù)格式的靈活轉(zhuǎn)換時,通常采用適配器設(shè)計模式。即應(yīng)首先定義一個統(tǒng)一的數(shù)據(jù)轉(zhuǎn)換接口類,然后針對不同的數(shù)據(jù)格式轉(zhuǎn)換需求定義對應(yīng)的實際轉(zhuǎn)換類,實際轉(zhuǎn)換類需要繼承數(shù)據(jù)轉(zhuǎn)換接口類,并實現(xiàn)接口轉(zhuǎn)換類定義的接口。在系統(tǒng)可靠性中,可靠度和失效率是兩個非常關(guān)鍵的指標(biāo),請分別解釋其含義??煽啃允侵府a(chǎn)品在規(guī)定的條件下和規(guī)定的時間內(nèi)完成規(guī)定功能的能力??紤]到軟件本身的復(fù)雜性, 軟件可靠性的定義是:在規(guī)定的條件下,在規(guī)定的時間內(nèi),軟件不引起系統(tǒng)失效的概率。可靠度就是系統(tǒng)在規(guī)定
55、的條件下、規(guī)定的時間內(nèi)不發(fā)生失效的概率。失效率又稱風(fēng)險函數(shù),也可以稱為條件失效強度,是指運行至此刻系統(tǒng)未出現(xiàn)失效的情況下,單位時間系統(tǒng)出現(xiàn)失效的概率。php與 java比較1、php只能實現(xiàn)簡單的分布式兩層或三層的架構(gòu),而java在這方面就比較強大,可以實現(xiàn)多層的網(wǎng)絡(luò)架構(gòu)。數(shù)據(jù)庫層( 持久化層 ) 、應(yīng)用 ( 業(yè)務(wù) ) 邏輯層、表示邏輯層彼此分開,而且現(xiàn)在不同的層都已經(jīng)有一些成熟的開發(fā)框架的支持。2、php是面向過程的語言,java 是面向?qū)ο蟮?,面向過程語言開發(fā)的程序只要業(yè)務(wù)流程發(fā)生變化,修改工作量很大,所以可修改性差,同時可復(fù)用性也差。3、php語言在可靠性方面比j2ee 平臺差, j2e
56、e 平臺有大量增強可靠性的成熟解決方案,而 php只是一種簡單的腳本語言,在可靠性方面缺乏成熟解決方案。4、php對于不同的數(shù)據(jù)庫采用不同的數(shù)據(jù)庫訪問接口,而java 通過 jdbc來訪問數(shù)據(jù)庫,通過不同的數(shù)據(jù)庫廠商提供的數(shù)據(jù)庫驅(qū)動方便地訪問數(shù)據(jù)庫,訪問數(shù)據(jù)庫的接口比較統(tǒng)一。所以原架構(gòu)在數(shù)據(jù)庫連接方面修改起來工作量也是很大的。5、php適合于小型項目,所以本項目中以前采用php是合適的,但目前大量功能需要增加, php在穩(wěn)定性方面也達不到要求。6、php比 java 的可維護性差。7、php比 java 的擴展性差。8、php比 java 的安全性差。應(yīng)用服務(wù)器的概念,并重點說明應(yīng)用服務(wù)器如何
57、來保障系統(tǒng)在大負荷和長時間運行下的穩(wěn)定性以及可擴展性。應(yīng)用服務(wù)器是指通過各種協(xié)議把商業(yè)邏輯曝露給客戶端的程序。1、若系統(tǒng)負荷很大,可以布署多臺應(yīng)用服務(wù),多臺應(yīng)用服務(wù)器分擔(dān)任務(wù),以達到性能要求。2、應(yīng)用服務(wù)器可以通過靈活的增加服務(wù)器完成擴展,所以可擴展性很好。3、應(yīng)用服務(wù)器可長時間穩(wěn)定運行。因為當(dāng)一臺應(yīng)用服務(wù)器出現(xiàn)故障時,可以將當(dāng)前運行的事務(wù)轉(zhuǎn)移至正常應(yīng)用服務(wù)器上完成執(zhí)行,不影響業(yè)務(wù)正常執(zhí)行,從而保障高可靠性與穩(wěn)定性。j2ee的 n層體系結(jié)構(gòu)ejb構(gòu)件中的 bean ( 構(gòu)件)分為哪三種類型ejb中的 bean分三種類型:session bean 、entity beans 和 message-
58、driven bean。session bean的職責(zé)是:維護一個短暫的會話entity beans 的職責(zé)是:維護一行持久穩(wěn)固的數(shù)據(jù)message-driven bean的職責(zé)是:異步接受消息什么是面向服務(wù)架構(gòu)( soa )以及 esb在 soa 中的作用與特點。soa是一個組件模型,它將應(yīng)用程序的不同功能單元(稱為服務(wù))通過這些服務(wù)之間定義良好的接口和契約聯(lián)系起來。接口是采用中立的方式進行定義的,它應(yīng)該獨立于實現(xiàn)服務(wù)的硬件平臺、操作系統(tǒng)和編程語言。這使得構(gòu)建在各種這樣的系統(tǒng)中的服務(wù)可以一種統(tǒng)一和通用方式進行交互。esb作用于特點:1、soa的一種實現(xiàn)方式,esb在面向服務(wù)的架構(gòu)中起到的是總
59、線作用,將各種服務(wù)進行連接與整合;2、描述服務(wù)的元數(shù)據(jù)和服務(wù)注冊管理;3、在服務(wù)請求者和提供者之間傳遞數(shù)據(jù),以及對這些數(shù)據(jù)進行轉(zhuǎn)換的能力,并支持由實踐中總結(jié)出來的一些模式如同步模式、異步模式等;4、發(fā)現(xiàn)、路由、匹配和選擇的能力,以支持服務(wù)之間的動態(tài)交互,解耦服務(wù)請求者和服務(wù)提供者。高級一些的能力,包括對安全的支持、服務(wù)質(zhì)量保證、可管理性和負載平衡等?;?soa的信息系統(tǒng)架構(gòu)設(shè)計什么是 rest, 并指出在 rest 中將哪三種關(guān)注點進行分離。rest從資源的角度來定義整個網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu),分布在各處的資源由統(tǒng)一資源標(biāo)識符(uri) 確定,客戶端應(yīng)用程序通過uri 獲取資源的表現(xiàn), 并通過獲得資源
60、表現(xiàn)使得其狀態(tài)發(fā)生改變。rest 中將資源、資源的表現(xiàn)和獲取資源的動作三者進行分離。什么是 響應(yīng)式 web 設(shè)計,響應(yīng)式 web設(shè)計的實現(xiàn)方式。響應(yīng)式web 設(shè)計是指我們設(shè)計與開發(fā)的頁面可以根據(jù)用戶的行為和不同的設(shè)備環(huán)境做出相應(yīng)的響應(yīng)來調(diào)整頁面的布局,以提供用戶可感知的、流暢的閱讀和操作體驗。實現(xiàn)方式:(1)流式布局(2)彈性布局加媒體查詢列舉 3 種可實現(xiàn)信息系統(tǒng)安全保障的措施。1、引入 https協(xié)議或采用加密技術(shù)對數(shù)據(jù)先加密再傳輸2、采用信息摘要技術(shù)對重要信息進行完整性驗證3、交易類敏感信息采用數(shù)字簽名機制信息系統(tǒng)面臨哪些方面的安全威脅信息系統(tǒng)面臨的安全威脅來自于物理環(huán)境、通信鏈路、網(wǎng)絡(luò)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供銷酒水合同范例
- 保潔門窗合同范例
- 兼職平面模特合同范例
- 涼菜開店加工合同范例
- 養(yǎng)殖用地流轉(zhuǎn)合同范例
- 別墅裝修付款合同范例
- 企業(yè)代理意向合同范例
- 買賣石油合同范例范例
- 辦公家具供貨合同范本
- 出租中醫(yī)診所合同范例
- 2024年南通職業(yè)大學(xué)高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 《無人機操控技術(shù)》 課件 項目 2 無人機模擬操控技術(shù)
- 新疆維吾爾自治區(qū)示范性普通高中評估指標(biāo)體系
- 血透高磷個案護理
- 2024年新蘇教版六年級下冊科學(xué)全冊知識點(精編版)
- 征地拆遷律師服務(wù)方案
- 朗格漢斯細胞組織細胞增生癥課件
- GB/T 43585-2023一次性衛(wèi)生棉條
- 小區(qū)老樓電梯加裝鋼結(jié)構(gòu)工程施工方案全套
- 食堂遇特殊天氣應(yīng)急預(yù)案
- 礦山機電專業(yè)課程標(biāo)準(zhǔn)范本
評論
0/150
提交評論