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