隨著現(xiàn)代企業(yè)的分支機(jī)構(gòu)越來(lái)越多,應(yīng)用系統(tǒng)的負(fù)載和數(shù)據(jù)量也日趨龐大。應(yīng)用系統(tǒng)經(jīng)過(guò)了主機(jī)/終端和客戶/服務(wù)器結(jié)構(gòu)的歷程,現(xiàn)在正由客戶/服務(wù)器方式轉(zhuǎn)向三層結(jié)構(gòu)方式。所謂三層結(jié)構(gòu)是指在客戶/服務(wù)器兩層結(jié)構(gòu)基礎(chǔ)上加入中間層。
以上優(yōu)點(diǎn),分布式的體系結(jié)構(gòu)目前已被眾多的應(yīng)用系統(tǒng)所采用。
為了更好地說(shuō)明應(yīng)用服務(wù)器的功能以及應(yīng)用和數(shù)據(jù)的分布,需要用一個(gè)實(shí)例描述,因此我們構(gòu)造了一個(gè)虛擬的應(yīng)用——分布式呼叫中心標(biāo)準(zhǔn)管理系統(tǒng)。與傳統(tǒng)的呼叫中心不同,這是一個(gè)全國(guó)范圍的呼叫中心,數(shù)據(jù)、應(yīng)用和座席需要分布在全國(guó)各個(gè)節(jié)點(diǎn)。各節(jié)點(diǎn)的受理員可受理全國(guó)各地的客戶,并且能訪問(wèn)全網(wǎng)內(nèi)任何節(jié)點(diǎn)的數(shù)據(jù)。
可以看出:我們把數(shù)據(jù)庫(kù)建在省受理中心(內(nèi)部數(shù)據(jù)庫(kù))或其他業(yè)務(wù)部門(外部數(shù)據(jù)庫(kù)),根據(jù)各地的需求,一個(gè)應(yīng)用服務(wù)器可對(duì)應(yīng)一個(gè)或多個(gè)數(shù)據(jù)庫(kù)服務(wù)器。應(yīng)用服務(wù)器細(xì)分為業(yè)務(wù)邏輯和數(shù)據(jù)邏輯,業(yè)務(wù)邏輯響應(yīng)客戶端的請(qǐng)求,從客戶端獲得參數(shù),返回結(jié)果,業(yè)務(wù)邏輯的組件將整個(gè)業(yè)務(wù)封裝,業(yè)務(wù)邏輯調(diào)用數(shù)據(jù)邏輯,實(shí)現(xiàn)對(duì)不同地點(diǎn)異構(gòu)數(shù)據(jù)庫(kù)的訪問(wèn)。
受理席可以是中心內(nèi)部的受理席或遠(yuǎn)程外包受理席;客戶端為普通Windows應(yīng)用,瀏覽器為動(dòng)態(tài)HTML(CGI、ASP、JSP)和Java Applet。它們都是瘦客戶端,僅有用戶界面,可訪問(wèn)應(yīng)用服務(wù)器的業(yè)務(wù)邏輯; 業(yè)務(wù)可由插件的方式改變,這些都可通過(guò)應(yīng)用服務(wù)器的業(yè)務(wù)邏輯改變來(lái)實(shí)現(xiàn)。整個(gè)系統(tǒng)網(wǎng)絡(luò)連接由TCP/IP上層協(xié)議CORBA、Http、Socket實(shí)現(xiàn)。
分布式呼叫中心系統(tǒng)三層結(jié)構(gòu)有很多優(yōu)點(diǎn):
(1) 可實(shí)現(xiàn)應(yīng)用級(jí)和數(shù)據(jù)庫(kù)級(jí)的全面分布。應(yīng)用分為用戶界面和業(yè)務(wù)邏輯,業(yè)務(wù)邏輯以組件的形式分布在應(yīng)用服務(wù)器上。服務(wù)器根據(jù)需要分布在整個(gè)網(wǎng)絡(luò)的任何節(jié)點(diǎn)上,盡管整個(gè)應(yīng)用在物理上是分布式的,但邏輯上卻是一個(gè)整體。當(dāng)前的分布式數(shù)據(jù)庫(kù)技術(shù)已經(jīng)非常成熟,能保證分布數(shù)據(jù)的完整性和一致性。
(2) 實(shí)現(xiàn)大用戶量、大吞吐量下的負(fù)載平衡。隨著Internet的迅速發(fā)展,在Web上需要實(shí)現(xiàn)很多關(guān)鍵業(yè)務(wù)(如網(wǎng)上購(gòu)物、訂票等),這些應(yīng)用的最大特點(diǎn)是并發(fā)用戶量大,三層結(jié)構(gòu)比以前的結(jié)構(gòu)更能承擔(dān)大業(yè)務(wù)量。三層結(jié)構(gòu)將應(yīng)用縱向均勻分布在客戶端、應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器上,橫向分布在多個(gè)應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器上,應(yīng)用的分布實(shí)現(xiàn)了負(fù)載的平衡。因此,在大用戶量、大吞吐量情況下,仍能迅速響應(yīng)每個(gè)客戶端的需求。
(3) 如果使用Java技術(shù),可實(shí)現(xiàn)應(yīng)用的跨平臺(tái)。Java是一種跨平臺(tái)的語(yǔ)言,不論是在客戶端,還是在應(yīng)用服務(wù)器上使用Java技術(shù),都可使應(yīng)用在一個(gè)操作系統(tǒng)上編寫,并能無(wú)縫移植到其他操作系統(tǒng)上。
(4) 能實(shí)現(xiàn)組件級(jí)的開發(fā)。應(yīng)用服務(wù)器的組件既能用于傳統(tǒng)的客戶端,也能應(yīng)用于Web,提高了代碼的重用率。
(5)中間層的存在,大大提高了數(shù)據(jù)的安全性。Web或其他客戶端不直接訪問(wèn)數(shù)據(jù)庫(kù),從而加強(qiáng)了數(shù)據(jù)的安全性。