前言:想要寫出一篇引人入勝的文章?我們特意為您整理了中間件在計(jì)費(fèi)系統(tǒng)中的運(yùn)用范文,希望能給你帶來靈感和參考,敬請(qǐng)閱讀。
本文作者:王秀敏、袁曉紅、趙麗娜 單位:渤海大學(xué)信息科學(xué)與工程學(xué)院、首都師范大學(xué)信息工程學(xué)院
0引言
中間件[1]是設(shè)計(jì)用來在分布式系統(tǒng)中管理復(fù)雜性和異構(gòu)性的軟件技術(shù),介于操作系統(tǒng)(OS,OperatingSystem)和應(yīng)用程序之間,提供獨(dú)立于OS和硬件的公共應(yīng)用程序接口(API),比OS提供的如sockets的API高級(jí),允許運(yùn)行于分布式系統(tǒng)中一個(gè)或多個(gè)機(jī)器上的若干進(jìn)程通過網(wǎng)絡(luò)互相作用,通過數(shù)據(jù)管道連接分布式應(yīng)用的各個(gè)部分并在它們之間傳送數(shù)據(jù),不僅解決了異構(gòu)系統(tǒng)平臺(tái)間的通訊和資源共享問題,還緩解了單調(diào)乏味和易于出錯(cuò)的編程工作,顯著減輕了應(yīng)用程序員的負(fù)擔(dān),見圖1。
從20世紀(jì)90年代到現(xiàn)在,中間件技術(shù)發(fā)展日趨成熟,最初只是在支持客戶/服務(wù)器(Client/Server)兩層(Two-Tier)體系結(jié)構(gòu)方面提供互用性,后來是多層體系結(jié)構(gòu)(Multi-Tier),被廣泛宣傳的是OSF(theOpenSoftwareFoundation)的DCE(DistributedComputingEnvironment),OMG(ObjectManagementGroup)的CORBA(CommonObjectRequestBrokerArchitecture),和微軟的COM/DCOM/COM+?,F(xiàn)在中間件已經(jīng)以服務(wù)器平臺(tái)的面目出現(xiàn),如BEA的Tuxedo[2,3],IBM的CICS(CustomerInformationControlSystem)TransactionServer等。
1中間件種類和優(yōu)點(diǎn)
中間件,掩藏了分布式系統(tǒng)[4~6]的程序員所必須處理的異構(gòu)性,完全掩藏了硬件和網(wǎng)絡(luò)的異構(gòu)性,大部分中間件還掩藏了OS或編程語言或二者全部的異構(gòu)性,有些中間件,如CORBA,都不必關(guān)心是誰實(shí)現(xiàn)和提供的,連同種中間件標(biāo)準(zhǔn)的不同供應(yīng)商實(shí)現(xiàn)的不同都掩藏了。這些都使得復(fù)雜并且困難的分布式系統(tǒng)的異構(gòu)性完全消失,對(duì)程序員透明,最終通過使用中間件,開發(fā)人員及用戶等都不必再關(guān)心諸如位置、并發(fā)性復(fù)制、故障和機(jī)動(dòng)性等。
1.1中間件種類
已經(jīng)開發(fā)出來的中間件具有如下幾類:
(1)分布式表(DT,DistributedTuples)應(yīng)用最廣泛的是分布式關(guān)系數(shù)據(jù)庫,其SQL允許程序員操縱這些表的集合。分布式關(guān)系數(shù)據(jù)庫還提供了多重事務(wù)處理。事務(wù)進(jìn)程監(jiān)視器(TPM,TransactionProcessingMonitors),為開發(fā)和運(yùn)用分布式應(yīng)用提供工具和環(huán)境。
(2)面向消息的中間件(MOM,Message-OrientedMiddleware),通過消息隊(duì)列提供程序間數(shù)據(jù)交換,從此可于網(wǎng)絡(luò)上建立分布式的應(yīng)用程序。如OS的Mailbox。
(3)遠(yuǎn)程過程調(diào)用(RPC,RemoteProcedureCall),使網(wǎng)絡(luò)上的應(yīng)用成為分布式的。不過,RPC通常是同步的,只有使用多線程才可以實(shí)現(xiàn)并行機(jī)制,而且,其處理異常的能力有限。
(4)分布式目標(biāo)中間件(DO,DistributedObject/ORB,ObjectRequestBrokers/SOA,service-orientedarchitecture/SRB,ServiceRequestBrokers),使得異構(gòu)網(wǎng)絡(luò)上包含應(yīng)用的目標(biāo)成為分布式的和共享的。如CORBA(CommonObjectRequestBrokerArchitecture),由OLE(ObjectLinkingandEmbedding)和COM(ComponentObjectModel)發(fā)展而來的DCOM/COM+,基于XML和HTTP(HyperTextTransferProtocols)的SOAP(SimpleObjectAccessProtocol),JAVA的RMI(RemoteMethodInvocation)等。
各種類別和資源管理的關(guān)系,見表1。
中間件大體可分為幾個(gè)范疇(1)面向數(shù)據(jù)的,如上DT;(2)面向消息的,如上MOM;(3)面向請(qǐng)求的,如TPM,RPC,DO/ORB;(4)面向服務(wù)的,如上SOA。但是,它們之間的界限并非很明顯,有的甚至互相交叉。今天,我們正在面臨諸如分布式軟件,應(yīng)用集成,多樣性平臺(tái),多樣化協(xié)議,多樣化設(shè)備,Internet等等復(fù)雜困難,SOA技術(shù)為此提供了基本解決方案。中間件如BEA的Tuxedo(類似于SRB),和IBM的CICSTransactionServer,都具有面向服務(wù)的體系結(jié)構(gòu)。
1.2中間件的優(yōu)點(diǎn)
中間件提供了比OS和網(wǎng)絡(luò)服務(wù)更有效的功能,基本優(yōu)如下(1)在網(wǎng)絡(luò)上應(yīng)用和服務(wù)間交互時(shí)位置透明;(2)所提供的支持異構(gòu)平臺(tái)的同步,異步和對(duì)話消息等應(yīng)用接口,全部透明,使應(yīng)用獨(dú)立于OS和網(wǎng)絡(luò)服務(wù)及硬件,從而簡(jiǎn)化了分布式應(yīng)用開發(fā)工作,使應(yīng)用易于維護(hù)和管理,易于擴(kuò)展,適應(yīng)性增強(qiáng),開發(fā)周期縮短但使用壽命延長(zhǎng);(3)使用數(shù)據(jù)依賴性路由機(jī)制,可以基于消息上下文和優(yōu)先權(quán)調(diào)整其路由,從而維持事務(wù)處理的有效性和保證最佳效率及靈活性,在營(yíng)業(yè)和技術(shù)環(huán)境中,縮短響應(yīng)時(shí)間;(4)基于系統(tǒng)實(shí)時(shí)負(fù)載和吞吐量,通過復(fù)制分布式網(wǎng)絡(luò)上的應(yīng)用服務(wù)和動(dòng)態(tài)平衡所有有效資源負(fù)載,使應(yīng)用可以在不同的分布式的節(jié)點(diǎn)上,并行處理請(qǐng)求和多重事務(wù),并且其事務(wù)隊(duì)列,允許分布式應(yīng)用一起異步工作,保證最高可靠性和吞吐量及應(yīng)用的效率。①通過多層體系結(jié)構(gòu),優(yōu)化異構(gòu)環(huán)境下的事務(wù)處理,提高處理效率和改善資源管理;②通過強(qiáng)有力的基于標(biāo)準(zhǔn)的API,可以整合和充分利用已存在的資源;③持續(xù)提升計(jì)算平臺(tái)和開發(fā)工具而不影響應(yīng)用;④通過在多層次重復(fù)使用,減低開發(fā)成本,提高程序員生產(chǎn)力;⑤由于其可靠,安全,有效,準(zhǔn)確,易維護(hù),易管理,從而提升應(yīng)用軟件質(zhì)量。
1.3使用中間件時(shí)面臨的問題及其解決辦法
中間件主要解決的是分布式應(yīng)用的連接和異構(gòu)問題,但中間件并非萬能,如:(1)理論與實(shí)踐有相當(dāng)?shù)牟罹?,開發(fā)者必須依賴于中間件生產(chǎn)商;(2)大量不合理的中間件成為使用中間件的障礙,開發(fā)者必須慎重選擇;(3)當(dāng)中間件服務(wù)提升編程分布式應(yīng)用級(jí)別時(shí),應(yīng)用開發(fā)者就面臨很大困難;(4)解決這三個(gè)問題的關(guān)鍵是必須明白應(yīng)用問題和使之成為分布式應(yīng)用的中間件服務(wù)的價(jià)值,為此,開發(fā)者須清楚哪些功能是需要的,這有三類a.分布式系統(tǒng)服務(wù),這包括通訊,程序交互,數(shù)據(jù)管理等服務(wù),這類有RPC,MOM,ORB;b.使應(yīng)用能夠存取基于網(wǎng)絡(luò)資源的服務(wù),這類有TPM,RDBMS服務(wù)如SQL,ODBC,X/OpenCLI等;c.中間件管理服務(wù),可持續(xù)監(jiān)視應(yīng)用和系統(tǒng)的功能,以保證分布式環(huán)境的最佳性能。
2在計(jì)費(fèi)系統(tǒng)中的應(yīng)用
中間件在計(jì)費(fèi)系統(tǒng)中的應(yīng)用越來越廣泛,比如對(duì)于前臺(tái)客戶服務(wù)端的應(yīng)用,使用其獨(dú)立于OS和網(wǎng)絡(luò)服務(wù)及硬件的API,可以輕易使交互界面整齊一致,和擴(kuò)展應(yīng)用的功能。
2.1兩層與多層體系結(jié)構(gòu)的差異
在使用中間件過程中,Client/Server的兩層體系結(jié)構(gòu)在實(shí)際應(yīng)用中已暴露出一些問題。由于在這種體系結(jié)構(gòu)下,客戶端程序直接訪問系統(tǒng)資源,很容易造成網(wǎng)絡(luò)上數(shù)據(jù)流量過大,甚至導(dǎo)致系統(tǒng)癱瘓,而且可維護(hù)性差、不易擴(kuò)展。相比之下,多層體系結(jié)構(gòu)有著明顯的好處。進(jìn)程和資源管理:通過對(duì)服務(wù)進(jìn)程的管理,使得系統(tǒng)能夠用盡量少的服務(wù)進(jìn)程處理盡量多的請(qǐng)求,減少進(jìn)程的啟動(dòng)/終止次數(shù),控制服務(wù)進(jìn)程的總數(shù),使得服務(wù)器在設(shè)定的負(fù)載下高效地工作,而且,當(dāng)請(qǐng)求服務(wù)的數(shù)量超過了服務(wù)器的處理速度時(shí),中間件還可以把請(qǐng)求排隊(duì)進(jìn)行緩沖。對(duì)于數(shù)據(jù)庫系統(tǒng),任何服務(wù)進(jìn)程訪問數(shù)據(jù)庫都要和數(shù)據(jù)庫建立連接,通過長(zhǎng)駐服務(wù)進(jìn)程,保持和復(fù)用與數(shù)據(jù)庫的連接,可以大大減少啟動(dòng)/終止與數(shù)據(jù)庫連接的次數(shù)和時(shí)間。事務(wù)優(yōu)先級(jí):通過指定事務(wù)優(yōu)先級(jí),保證優(yōu)先級(jí)高的事務(wù)能盡快得到響應(yīng)。
2.2計(jì)費(fèi)系統(tǒng)面臨的問題
在計(jì)費(fèi)系統(tǒng)中,無論是前臺(tái)客戶端的交互程序,還是后臺(tái)的批處理程序,對(duì)數(shù)據(jù)庫的訪問都是極其頻繁的,因而對(duì)數(shù)據(jù)庫系統(tǒng)的吞吐量的要求極高,僅就前臺(tái)而言,如果客戶端直接(或通過存儲(chǔ)過程即StoredProcedure)訪問數(shù)據(jù)庫,則不僅不利于安全控制,難以防止黑客的惡意攻擊,同時(shí),由于網(wǎng)絡(luò)流量太大,容易形成網(wǎng)絡(luò)瓶頸和數(shù)據(jù)庫訪問瓶頸,而且,數(shù)據(jù)庫連接數(shù)會(huì)過多,從而影響數(shù)據(jù)庫系統(tǒng)的響應(yīng)速度,降低系統(tǒng)性能。
2.3解決途徑
(1)使用中間件將系統(tǒng)分為三層(或多層),使事務(wù)邏輯和用戶界面分離,以此優(yōu)化系統(tǒng)結(jié)構(gòu)。事務(wù)邏輯放在應(yīng)用服務(wù)層,則軟件的維護(hù)集中在應(yīng)用服務(wù)層,而客戶端用戶界面則可以整齊一致,易于管理。而且由于是使用中間件的獨(dú)立于OS和網(wǎng)絡(luò)服務(wù)及硬件的API,增強(qiáng)了系統(tǒng)的可維護(hù)性和擴(kuò)充能力。
(2)將客戶端與系統(tǒng)資源(如數(shù)據(jù)庫)隔離開來,由中間件負(fù)責(zé)進(jìn)行鑒別管理,鑒定服務(wù)和授權(quán)服務(wù),客戶端無權(quán)限直接訪問數(shù)據(jù)庫,從而保證數(shù)據(jù)私有性。
(3)劃分出事務(wù)級(jí)權(quán)限,通過中間件的安全機(jī)制控制其訪問。雖然數(shù)據(jù)庫的權(quán)限有DDL和DML,但都屬于數(shù)據(jù)庫表級(jí)的權(quán)限,而實(shí)際應(yīng)用中往往以事務(wù)或角色為主,采用三層體系結(jié)構(gòu)可更加靈活、有效地實(shí)現(xiàn)事務(wù)級(jí)權(quán)限控制。
(4)采用三層體系結(jié)構(gòu),通過應(yīng)用服務(wù)器,避免了客戶端與數(shù)據(jù)庫直接連接。應(yīng)用服務(wù)器與數(shù)據(jù)庫服務(wù)器可方便地采用寬帶網(wǎng)連接,也就解決了數(shù)據(jù)庫訪問瓶頸及網(wǎng)絡(luò)瓶頸。
(5)通過增加應(yīng)用服務(wù)器來分擔(dān)部分應(yīng)用服務(wù)工作,可直接提高系統(tǒng)性能和處理速度,而原來的應(yīng)用服務(wù)器基本不受影響,而且可有效地解決客戶訪問服務(wù)層的瓶頸。
(6)利用中間件的路由機(jī)制、平衡負(fù)載功能,提高系統(tǒng)的整體性能和工作效率。除此之外,采用三層應(yīng)用體系結(jié)構(gòu),原有性能較差的設(shè)備可以更好地加以利用,不僅可以充分利用原有系統(tǒng)資源,而且使整個(gè)系統(tǒng)性能得到提高。
3結(jié)語
中間件的應(yīng)用越來越廣泛,特別是在分布式異構(gòu)平臺(tái)和網(wǎng)絡(luò)環(huán)境下,它使得極其復(fù)雜的分布式應(yīng)用開發(fā)問題變得特別簡(jiǎn)單,不僅提高了應(yīng)用軟件的開發(fā)速度,而且,最大限度地保證了軟件質(zhì)量,提高了可靠性,由于獨(dú)立于開發(fā)平臺(tái)和硬件環(huán)境,從而保證了所開發(fā)軟件的可重復(fù)使用,可移植性和可擴(kuò)展性,大大降低了開發(fā)成本。電訊業(yè)發(fā)展迅速,對(duì)計(jì)費(fèi)系統(tǒng)性能要求越來越高,功能要求越來越多,選擇合適的中間件將對(duì)開發(fā)者有著重大影響。