陳 超,劉才銘
(1.四川理工學(xué)院 網(wǎng)絡(luò)管理中心,四川 自貢 643000;2.樂山師范學(xué)院 計(jì)算機(jī)科學(xué)學(xué)院,四川 樂山 614000)
中間件技術(shù)產(chǎn)生以前,開發(fā)人員都是在操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)、硬件以及網(wǎng)絡(luò)操作系統(tǒng)等基礎(chǔ)之上進(jìn)行軟件開發(fā)。然而,由于操作系統(tǒng)、硬件等處于計(jì)算機(jī)系統(tǒng)最底層,十分復(fù)雜,例如繁雜的網(wǎng)絡(luò)程序設(shè)計(jì)、管理,數(shù)據(jù)分散處理帶來的不一致性問題、性能和效率、安全,復(fù)雜多變的網(wǎng)絡(luò)環(huán)境,操作系統(tǒng)的多樣性等[1],這必然導(dǎo)致開發(fā)人員面臨諸多困難。上述困難雖然同用戶的業(yè)務(wù)沒有直接關(guān)系,但不解決又無法完成用戶業(yè)務(wù),這大大浪費(fèi)了開發(fā)人員的大量寶貴時(shí)間和精力。在這種情況下,研究者提出一個(gè)疑問:能否將軟件開發(fā)時(shí)面對(duì)的諸多的共性問題進(jìn)行提煉、抽象,以便在緊鄰操作系統(tǒng)處形成一個(gè)可復(fù)用的部分,從而為開發(fā)時(shí)提供復(fù)用。在這一技術(shù)構(gòu)想的驅(qū)動(dòng)下,中間件技術(shù)應(yīng)運(yùn)而生[2]。
中間件(middleware)是一類基礎(chǔ)軟件,屬于可復(fù)用軟件的范疇[3]。從這個(gè)定義來看,中間件是一種位于操作系統(tǒng)軟件和用戶軟件之間的軟件。中間件位于操作系統(tǒng)、網(wǎng)絡(luò)和數(shù)據(jù)庫系統(tǒng)之上,處于應(yīng)用軟件之下,其作用是為處于其上層的用戶軟件提供運(yùn)行與開發(fā)環(huán)境,以便協(xié)助開發(fā)人員快速、高效地開發(fā)和集成較為復(fù)雜的應(yīng)用軟件[4]。中間件技術(shù)的出現(xiàn)促使計(jì)算機(jī)體系結(jié)構(gòu)發(fā)生了巨大改變,用戶可以采用中間件技術(shù)把傳統(tǒng)計(jì)算機(jī)體系兩層結(jié)構(gòu)擴(kuò)展為三層或三層以上,此時(shí)就產(chǎn)生了多層分布式系統(tǒng)。
在傳統(tǒng)計(jì)算機(jī)系統(tǒng)C/S結(jié)構(gòu)中,應(yīng)用程序邏輯一般位于客戶端和數(shù)據(jù)庫服務(wù)器端之間,客戶端負(fù)責(zé)發(fā)送數(shù)據(jù)資源訪問請(qǐng)求給數(shù)據(jù)庫服務(wù)器端,而數(shù)據(jù)庫服務(wù)器端負(fù)責(zé)將最終請(qǐng)求結(jié)果返回客戶端。此種系統(tǒng)結(jié)構(gòu)缺點(diǎn)如下:隨著客戶端數(shù)目的不斷增加,系統(tǒng)將無法進(jìn)行負(fù)載均衡,從而導(dǎo)致數(shù)據(jù)庫服務(wù)器的性能急劇降低[5];如果應(yīng)用需求發(fā)生改變,處于客戶端和服務(wù)器端之間的應(yīng)用程序邏輯必須進(jìn)行相應(yīng)地修改,這樣就造成系統(tǒng)維護(hù)成本的大幅增加,同時(shí)也給系統(tǒng)升級(jí)產(chǎn)生極大阻力;如果傳輸?shù)臄?shù)據(jù)量較大,就會(huì)加重網(wǎng)絡(luò)和數(shù)據(jù)庫的負(fù)擔(dān),容易使數(shù)據(jù)在傳輸時(shí)出現(xiàn)不完整、不一致甚至丟失的情況。為了解決上述C/S結(jié)構(gòu)的不足,兩層計(jì)算機(jī)體系結(jié)構(gòu)只有向多層分布式系統(tǒng)轉(zhuǎn)變。網(wǎng)絡(luò)的飛速發(fā)展、普及以及中間件技術(shù)的產(chǎn)生,進(jìn)一步助長了多層分布式系統(tǒng)的興起。
在多層分布式系統(tǒng)中,客戶端和數(shù)據(jù)庫服務(wù)器之間增加一層或多層基于中間件的應(yīng)用服務(wù)程序,這種應(yīng)用服務(wù)程序稱為 “應(yīng)用服務(wù)器”(Application Server)。開發(fā)者可以把應(yīng)用程序邏輯放于中間層服務(wù)器,使它們脫離客戶端,從而在確保客戶端功能的前提下,為用戶提供一個(gè)精簡(jiǎn)的界面[5]。在此情況下,如果應(yīng)用程序代碼需要修改,那么僅在一處(中間層服務(wù)器上)修改就可滿足要求,而不必費(fèi)盡心思去修改眾多客戶端應(yīng)用程序。這樣就可以讓開發(fā)者專注于系統(tǒng)核心業(yè)務(wù)邏輯的分析、設(shè)計(jì)和開發(fā),也很大程度簡(jiǎn)化了企業(yè)系統(tǒng)的開發(fā)、更新和升級(jí)工作,極大增強(qiáng)了系統(tǒng)的靈活性和伸縮性,并且還有助于系統(tǒng)容錯(cuò)能力和負(fù)載平衡能力的提升。
分布式系統(tǒng)具有很多內(nèi)在的優(yōu)點(diǎn),尤其是與集中式系統(tǒng)相比較而言。而且,有些應(yīng)用程序本質(zhì)上就是分布式的。一般來說,分布式系統(tǒng)[6]:
1)產(chǎn)生較高的性能;
2)提供較高的可靠性;
3)允許遞增的發(fā)展。分布式計(jì)算比單個(gè)中央處理器提供的返回率高;
4)構(gòu)建由大量的用高速網(wǎng)絡(luò)連接起來的中央處理器組成的系統(tǒng),既可行又易行;
5)滿足了共享分散在這些中央處理器上的數(shù)據(jù)的需要;
6)提供了共享昂貴的外圍設(shè)備的方法;
7)允許一個(gè)用戶在許多不同的機(jī)器上運(yùn)行程序。
作為人工智能最重要的一個(gè)應(yīng)用研究領(lǐng)域,盡管專家系統(tǒng)在過去的30多年中取得了很大的進(jìn)展和豐碩的成果,但距離社會(huì)和科技的要求以及人類專家的水平仍然很遠(yuǎn),為此,需要在傳統(tǒng)專家的基礎(chǔ)上尋找新的生長點(diǎn)來發(fā)展新型專家系統(tǒng),從而使專家系統(tǒng)“更上一層樓”[7]。
據(jù)權(quán)威專家講現(xiàn)代新型專家系統(tǒng)應(yīng)該有以下特點(diǎn)[8]:
1)并行與分布處理:基于各種并行算法,采用各種并行推理和執(zhí)行技術(shù),適合在多處理器的硬件環(huán)境中工作,即具有分布處理的功能。
2)多專家系統(tǒng)協(xié)同工作:在這種系統(tǒng)中,有多個(gè)專家系統(tǒng)協(xié)同合作。
3)高級(jí)語言和知識(shí)語言描述:專家系統(tǒng)生成系統(tǒng)就能自動(dòng)或半自動(dòng)地生成所要的專家系統(tǒng)。
4)具有自學(xué)習(xí)功能:新型專家系統(tǒng)應(yīng)提供高級(jí)的知識(shí)獲取與學(xué)習(xí)功能。
5)引入新的推理機(jī)制:在新型專家系統(tǒng)中,除演繹推理之外,還應(yīng)有歸納推理,各種非標(biāo)準(zhǔn)邏輯推理,以及各種基于不完全知識(shí)和模糊知識(shí)的推理等。
6)具有自糾錯(cuò)和自完善能力:為了排錯(cuò)必須首先有識(shí)別錯(cuò)誤的能力,為了完善必須首先有鑒別優(yōu)劣的標(biāo)準(zhǔn)。
7)先進(jìn)的智能人機(jī)接口:理解自然語言,實(shí)現(xiàn)語聲、文字、圖形和圖象的直接輸入輸出是如今人們對(duì)智能計(jì)算機(jī)提出的要求。
由于現(xiàn)代網(wǎng)絡(luò)的飛速發(fā)展、普及以及中間件技術(shù)的產(chǎn)生促使了多層分布式系統(tǒng)的產(chǎn)生并使它成為人們關(guān)注的焦點(diǎn),可以利用分布式技術(shù),采用中間件技術(shù)來構(gòu)建分布式專家系統(tǒng)。
下面來分析一下傳統(tǒng)的專家系統(tǒng)結(jié)構(gòu)中存在的缺陷,傳統(tǒng)專家系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 專家系統(tǒng)結(jié)構(gòu)簡(jiǎn)圖Fig.1 Simplified structure diagram of expert system
從圖1可以看出知識(shí)庫、事實(shí)庫與推理機(jī)是相互獨(dú)立的,雖然把系統(tǒng)的知識(shí)與控制分離是專家系統(tǒng)很有價(jià)值的特征,但是它們卻直接相連接,這給系統(tǒng)潛在的帶來一些危機(jī)與局限性。
推理機(jī)的推理是利用知識(shí)庫與事實(shí)庫中的知識(shí)與事實(shí)進(jìn)行推理的,推理時(shí)直接利用用戶所給的事實(shí)和事實(shí)庫中已知的事實(shí)與知識(shí)庫中的專家知識(shí)相匹配,而且當(dāng)產(chǎn)生沖突時(shí)需要根據(jù)一定的策略在知識(shí)庫中來消除,并且有時(shí)候還得對(duì)事實(shí)庫和知識(shí)庫進(jìn)行頻繁的刪除、增加、修改工作,所有的這些動(dòng)作都是直接在數(shù)據(jù)庫中進(jìn)行,也即把系統(tǒng)的應(yīng)用和一些不適合在數(shù)據(jù)庫中執(zhí)行的代碼都綁死在數(shù)據(jù)庫中了,這些頻繁的操作會(huì)大大增加數(shù)據(jù)庫的負(fù)擔(dān),降低了數(shù)據(jù)庫的執(zhí)行效率,容易造成數(shù)據(jù)的不完整、不一致甚至丟失。這樣,系統(tǒng)的容錯(cuò)能力與負(fù)載能力就不會(huì)太高,從而降低了系統(tǒng)的穩(wěn)定性。
傳統(tǒng)專家系統(tǒng)不易甚至不能擴(kuò)展。傳統(tǒng)專家系統(tǒng)是基于兩層結(jié)構(gòu)模式構(gòu)造的,這種構(gòu)造方式本身就存在一些缺點(diǎn)?,F(xiàn)代社會(huì)是信息的時(shí)代,我們不能孤軍奮戰(zhàn),要盡可能地利用一切可利用的知識(shí)協(xié)同工作,專家系統(tǒng)也應(yīng)該如此,但傳統(tǒng)專家系統(tǒng)兩層結(jié)構(gòu)模式就大大限制了多專家系統(tǒng)協(xié)同工作的機(jī)會(huì)。傳統(tǒng)的專家系統(tǒng)總體上是串行與集中處理,一個(gè)環(huán)節(jié)出錯(cuò)就會(huì)全盤皆輸。
要發(fā)展新型專家系統(tǒng),要就克服傳統(tǒng)專家系統(tǒng)的缺點(diǎn)。為此,可以用中間件來克服以上所說的缺點(diǎn),來構(gòu)造一個(gè)分布式專家系統(tǒng),其簡(jiǎn)化結(jié)構(gòu)如圖2所示。
圖2 分布式專家系統(tǒng)結(jié)構(gòu)簡(jiǎn)圖Fig.2 Simplified structure diagram of distributed expert system
圖2中知識(shí)庫、事實(shí)庫、中間件、客戶端都可以根據(jù)實(shí)際情況設(shè)置多個(gè),當(dāng)然,這時(shí)推理機(jī)的設(shè)計(jì)就會(huì)較復(fù)雜了。圖2雖然是對(duì)傳統(tǒng)專家系統(tǒng)結(jié)構(gòu)的小小改動(dòng),但是卻有很多優(yōu)點(diǎn)。在推理機(jī)和知識(shí)庫、事實(shí)庫之間加入一種中間件,如:應(yīng)用服務(wù)器,當(dāng)推理機(jī)進(jìn)行推理時(shí),根據(jù)推理機(jī)的要求把知識(shí)和事實(shí)存取到應(yīng)用服務(wù)器,讓推理機(jī)在應(yīng)用服務(wù)器上進(jìn)行匹配、解決沖突操作,這樣就可以減輕數(shù)據(jù)庫的負(fù)擔(dān),從而提高數(shù)據(jù)庫的效率。如果推理機(jī)對(duì)應(yīng)用服務(wù)器上的知識(shí)和事實(shí)進(jìn)行了更改,可以不立即送到數(shù)據(jù)庫,當(dāng)更改的數(shù)據(jù)達(dá)到一定數(shù)量時(shí)再集中寫到數(shù)據(jù)庫,從而保持了數(shù)據(jù)的一致性、完整性。而且一個(gè)推理機(jī)可以連接多個(gè)中間件,而讓每個(gè)中間件都連接不同的知識(shí)庫和事實(shí)庫,實(shí)現(xiàn)多專家系統(tǒng)協(xié)同工作。
讓推理機(jī)通過中間件與客戶端相連,這里所說的客戶端可以是多個(gè)??蛻舳丝梢酝ㄟ^網(wǎng)絡(luò)與中間件相連接,這時(shí)的中間件可以是Web中間件。這樣,用戶就可以用Web瀏覽器發(fā)送請(qǐng)求,客戶的請(qǐng)求通過Web中間件傳給推理機(jī),推理機(jī)向應(yīng)用服務(wù)器發(fā)出要求,服務(wù)器根據(jù)推理機(jī)的要求從相應(yīng)的數(shù)據(jù)庫取出數(shù)據(jù)以供推理機(jī)進(jìn)行推理,推理機(jī)把結(jié)果通過Web中間件傳達(dá)給用戶,從而在一定程度上實(shí)現(xiàn)了分布式專家系統(tǒng)。
文中提出的基于中間件的分布式專家系統(tǒng)結(jié)構(gòu),在一定程度上能夠反映新一代專家系統(tǒng)體系結(jié)構(gòu)的發(fā)展要求,根據(jù)這種結(jié)構(gòu)構(gòu)建的專家系統(tǒng)可以體現(xiàn)新型專家系統(tǒng)的特征,從而使得筆者提出的專家系統(tǒng)體系結(jié)構(gòu)能夠被廣泛采用。
[1]符春.中間件技術(shù)的現(xiàn)狀及其發(fā)展[J].軟件導(dǎo)刊,2009,8(9):7-8.FU Chun.Development of middleware technology[J].Software Guide,2009,8(9):7-8.
[2]LIU Jing-yong,ZHONG Yong,CHEN Yong,et al.Middlewarebased distributed systems software process[C]//Proc of International Conference on Convergence and Hybrid Information Technology 2009(ICHIT 2009),Korea:Daejeon,2009:345-348.
[3]鄭英姿.淺談中間件技術(shù)[J].中國高新技術(shù)企業(yè),2010,168(33):31-32.ZHENG Ying-zi.Simple Discussion on middleware technology[J].China High-Tech Enterprises,2010,168(33):31-32.
[4]Schiefer A,Gruhn V,Hrushchak R.VESBA:A middleware oriented architecture for virtualized embedded systems[C]//Proc of the 1st Workshop on Critical Automotive Applications:Robustness and Safety, Spain:Valencia,2010:47-50.
[5]王曉鵬,蘇亮,韓偉紅,等.大型分布式系統(tǒng)部署一致性的研究與實(shí)現(xiàn) [C]//Proc of 2006年全國開放式分布與并行計(jì)算機(jī)學(xué)術(shù)會(huì)議論文集,中國陜西:西安,2006:12-14.
[6]特尼博姆著.辛春生等譯.分布式系統(tǒng)原理與范型[M].2版.北京:清華大學(xué)出版社,2008.
[7]楊珺.基于虛擬植物生長模型的分布式農(nóng)業(yè)專家系統(tǒng)研究 [C]//Proc of 2006年全國開放式分布與并行計(jì)算機(jī)學(xué)術(shù)會(huì)議論文集,中國陜西:西安,2006:229-231.
[8]蔡自興,約翰·德爾,龔濤.高級(jí)專家系統(tǒng):原理、設(shè)計(jì)及應(yīng)用[M].北京:科學(xué)出版社,2005.