系分論文:論軟件三層結(jié)構(gòu)的設(shè)計(范文一)
我所在的單位是國內(nèi)主要的商業(yè)銀行之一。眾所周知,銀行的業(yè)務(wù)存在一個“二八定理”:即銀行的百分之八十的利潤是由百分之二十的客戶所創(chuàng)造。為了更好地服務(wù)大客戶,適應(yīng)我國對外貿(mào)易的蓬勃發(fā)展態(tài)勢,促進我國對外貿(mào)易的發(fā)展,2003年1月,我行開展了遠(yuǎn)期結(jié)售匯業(yè)務(wù)。
所謂的遠(yuǎn)期結(jié)售匯就是企業(yè)在取得中國外匯管理局的批準(zhǔn)后,根據(jù)對外貿(mào)易的合同等憑證與銀行制定合約,銀行根據(jù)制定合約當(dāng)天的外匯匯率,通過遠(yuǎn)期匯率公式,計算出交割當(dāng)天的外匯匯率,并在那天以該匯率進行成交的外匯買賣業(yè)務(wù)。遠(yuǎn)期結(jié)售匯系統(tǒng)是我行綜合業(yè)務(wù)系統(tǒng)XX2000的一個子系統(tǒng),它主要包括了聯(lián)機部分﹑批量部分﹑清算部分和通兌部分,具有協(xié)議管理﹑合約管理﹑報價管理﹑外匯敞口管理﹑帳務(wù)管理﹑數(shù)據(jù)拆分管理﹑報表管理﹑業(yè)務(wù)縮微和事后監(jiān)督等功能。
我作為單位的主要技術(shù)骨干之一,主持并參與了遠(yuǎn)期結(jié)售匯系統(tǒng)的項目計劃﹑需求分析﹑設(shè)計﹑編碼和測試階段的工作。由于銀行系統(tǒng)對安全性,可靠性,可用性和響應(yīng)速度要求很高,我選擇了三層C/S結(jié)構(gòu)作為該系統(tǒng)的軟件體系結(jié)構(gòu),下面,我將分層次詳細(xì)介紹三層C/S軟件體系結(jié)構(gòu)的設(shè)計過程。:
1﹑表示層為字符終端。我行以前一直使用IBM的VISUALGEN 2.0附帶的圖形用戶終端來開發(fā)終端程序,但在使用的過程中,分行的業(yè)務(wù)人員反映響應(yīng)速度比較慢,特別是業(yè)務(wù)量比較大的時候,速度更是難以忍受。為此,我行最近自行開發(fā)了一套字符終端CITE,它采用VISUAL BASIC作為開發(fā)語言,具有響應(yīng)速度快,交互能力強,易學(xué),編碼快和功能強大的特點,在權(quán)衡了兩者的優(yōu)點和缺點之后,我決定選擇字符終端CITE作為表示層。
2﹑中間層為CICS TRANSATION SERVER(CTS)。首先,我行與IBM公司一直保持著良好的合作關(guān)系,而我行的大部分技術(shù)和設(shè)備都采用了IBM公司的產(chǎn)品,其中包括了大型機,由于CICS在IBM的大型機上得到了廣泛的應(yīng)用,并在我行取得了很大的成功,為了保證與原來系統(tǒng)的兼容和互用性,我采用了IBM的CTS作為中間層,連接表示層和數(shù)據(jù)庫層,簡化系統(tǒng)的設(shè)計,使開發(fā)人員可以專注于表示邏輯和業(yè)務(wù)邏輯的開發(fā)工作,縮短了開發(fā)周期,減少開發(fā)費用和維護費用,提高了開發(fā)的成功率;其次,對于中間層的業(yè)務(wù)邏輯,我采用了我行一直使用的VISUALAGE FOR JAVA作為開發(fā)平臺,它具有簡單易用的特點,特別適合開發(fā)業(yè)務(wù)邏輯,可以使開發(fā)人員快速而準(zhǔn)確地開發(fā)出業(yè)務(wù)邏輯,確保了遠(yuǎn)期結(jié)售匯系統(tǒng)的順利完成。最后,由于采用了CTS,確保了系統(tǒng)的開放性和互操作性,保證了與我行原來的聯(lián)機系統(tǒng)和其他系統(tǒng)的兼容,保護了我行的原有投資。
3﹑數(shù)據(jù)層為DB2 UDB7.1。由于DB2在大型事務(wù)處理系統(tǒng)中表現(xiàn)出色,我行一直使用DB2作為事務(wù)處理的數(shù)據(jù)庫,并取得了很大的成功,在DB2數(shù)據(jù)庫的使用方面積累了自己獨到的經(jīng)驗和大量的人才,為了延續(xù)技術(shù)的連續(xù)性和保護原有投資,我選擇了DB2 UDB7.1作為數(shù)據(jù)層。
但是,在設(shè)計的過程中我也遇到了一些困難,我主要采取了以下的辦法來解決:
1﹑CICS SWITCH組。眾所周知,銀行系統(tǒng)對于安全性,可靠性,可用性和響應(yīng)速度要求很高,特別是我行最近進行了數(shù)據(jù)集中,全國只設(shè)兩個數(shù)據(jù)中心,分別在XX和YY 兩個地方,這樣對以上的要求就更高了,為了保障我行的安全生產(chǎn),我采用了CTS SWITCH組技術(shù),所謂的CICS SWITCH組,就是一組相同的CTS,每個CTS上都有相同的業(yè)務(wù)邏輯,共同作為中間層,消除了單點故障,確保了系統(tǒng)的高度可用性。為了簡化系統(tǒng)的設(shè)計和縮短通訊時間,我采用了簡單的負(fù)載均衡算法,比如這次分配給第N個CTS,下次則分配給第N+1個CTS,當(dāng)?shù)搅俗詈笠粋€,就從第一個開始;為了更好地實現(xiàn)容錯,我采用了當(dāng)?shù)贜個CTS失效的時候,把它正在處理的業(yè)務(wù)轉(zhuǎn)到第N+1個上面繼續(xù)處理,這樣大大增加了系統(tǒng)的可用性,可以為客戶提供更好的服務(wù);此外,我還采用了數(shù)據(jù)庫連接池的技術(shù),大大縮短了數(shù)據(jù)庫處理速度,提高了系統(tǒng)運行速度。
2﹑并行批量。銀行系統(tǒng)每天都要處理大量的數(shù)據(jù),為了確保白天的業(yè)務(wù)能順利進行,有一部分的帳務(wù)處理,比如一部分內(nèi)部戶帳務(wù)處理,或者代理收費業(yè)務(wù)和總帳與分戶帳核對等功能就要到晚上批量地去處理,但是,這部分?jǐn)?shù)據(jù)在數(shù)據(jù)集中之后就顯得更加龐大,我行以前采用串行提交批量作業(yè)的辦法,遠(yuǎn)遠(yuǎn)不能適應(yīng)數(shù)據(jù)中心億萬級的數(shù)據(jù)處理要求,在與其他技術(shù)骨干討論之后,并經(jīng)過充分的論證和試驗,我決定采用了并行批量的技術(shù),所謂的并行批量,就是在利用IBM的OPC(Tivoli Operations, Planning and Control)技術(shù),把批量作業(yè)按時間和業(yè)務(wù)處理先后順序由操作員統(tǒng)一提交的基礎(chǔ)上,再利用DB2的PARTITION技術(shù),把幾個地區(qū)分到一個PATITON里面分別處理,大大提高了銀行系統(tǒng)的數(shù)據(jù)處理速度,確保了遠(yuǎn)期結(jié)售匯系統(tǒng)三層結(jié)構(gòu)的先進性。在并行批量的設(shè)計過程中,我考慮到批量作業(yè)有可能因為網(wǎng)絡(luò)錯誤或者資源沖突等原因而中斷,這樣在編寫批量程序和作業(yè)的時候必須支持?jǐn)帱c重提,以確保生產(chǎn)的順利進行。
由于我軟件三層結(jié)構(gòu)設(shè)計得當(dāng),并采取了有效的措施去解決設(shè)計中遇到的問題,遠(yuǎn)期結(jié)售匯系統(tǒng)最后按照計劃完成并順利投產(chǎn),不但保證了系統(tǒng)的開發(fā)性開放性﹑可用性和互用性,取得了良好的社會效益和經(jīng)濟效益,而且我的軟件三層結(jié)構(gòu)設(shè)計得到了同事和領(lǐng)導(dǎo)的一致認(rèn)同與稱贊,為我行以后系統(tǒng)的開發(fā)打下了良好的基礎(chǔ)。
在總結(jié)經(jīng)驗的同時,我也看到了我在軟件三層結(jié)構(gòu)設(shè)計中的不足之處:
首先,負(fù)載算法過于簡單,容易造成系統(tǒng)的負(fù)荷不均衡:由于每個業(yè)務(wù)的處理時間不一樣,有的可能差距很遠(yuǎn),簡單的順序加一負(fù)載分配算法就容易造成負(fù)載不均衡,但是如果專門設(shè)置一個分配器,則增加了一次網(wǎng)絡(luò)通訊,使得系統(tǒng)的速度變慢,這樣對響應(yīng)速度要求很高的銀行系統(tǒng)來說也是不可行的,于是我決定采用基于統(tǒng)計的分配算法,即在收到請求的時候,根據(jù)預(yù)先設(shè)定的權(quán)值,按概率,直接分配給CTS。
其次,由于批量作業(yè)順序設(shè)計得不過夠嚴(yán)謹(jǐn)?shù)雀鞣N原因,容易造成資源沖突:在遠(yuǎn)期結(jié)售匯系統(tǒng)運行了一段時間之后,數(shù)據(jù)中心的維護人員發(fā)現(xiàn)了,系統(tǒng)有的時候會出現(xiàn)資源沖突現(xiàn)象,在經(jīng)過仔細(xì)的分析之后,我發(fā)現(xiàn),由于每天各個業(yè)務(wù)的業(yè)務(wù)量大小不一樣,順序的兩個作業(yè)之間訪問同一個表的時候便會產(chǎn)生資源沖突,另外,在OPC作業(yè)運行的過程中,操作員提交的其他作業(yè)與這個時間的OPC作業(yè)產(chǎn)生也有可能產(chǎn)生資源沖突。對于第一種情況,可以在不影響業(yè)務(wù)的情況下調(diào)整作業(yè)順序或者對于查詢作業(yè)運用DB2的共享鎖的技術(shù),而第二種情況則要制定規(guī)范,規(guī)定在某時間斷內(nèi)不允許提交某些作業(yè)來解決。為了更好地開展系統(tǒng)分析工作,我將在以后的工作實踐中不斷地學(xué)習(xí),提高自身素質(zhì)和能力,為我國的軟件事業(yè)貢獻自己的微薄力量。
【編輯推薦】