首頁>>廠商>>系統(tǒng)集成及應(yīng)用軟件開發(fā)商>>峰華智訊

分布式呼叫中心管理系統(tǒng)技術(shù)實現(xiàn)

張瑞 2001/05/31

隨著現(xiàn)代企業(yè)的分支機(jī)構(gòu)越來越多,應(yīng)用系統(tǒng)的負(fù)載和數(shù)據(jù)量也日趨龐大。應(yīng)用系統(tǒng)經(jīng)過了主機(jī)/終端和客戶/服務(wù)器結(jié)構(gòu)的歷程,現(xiàn)在正由客戶/服務(wù)器方式轉(zhuǎn)向三層結(jié)構(gòu)方式。所謂三層結(jié)構(gòu)是指在客戶/服務(wù)器兩層結(jié)構(gòu)基礎(chǔ)上加入中間層,中間層叫應(yīng)用服務(wù)器或中間件,結(jié)構(gòu)如圖1所示。

圖1 應(yīng)用系統(tǒng)三層結(jié)構(gòu)

CORBA和EJB在技術(shù)上日趨成熟,三層結(jié)構(gòu)的技術(shù)標(biāo)準(zhǔn)也日益完善,與客戶/服務(wù)器方式相比,三層結(jié)構(gòu)有很多優(yōu)點:

(1) 可實現(xiàn)應(yīng)用級和數(shù)據(jù)庫級的全面分布。應(yīng)用分為用戶界面和業(yè)務(wù)邏輯,業(yè)務(wù)邏輯以組件的形式分布在應(yīng)用服務(wù)器上。服務(wù)器根據(jù)需要分布在整個網(wǎng)絡(luò)的任何節(jié)點上,盡管整個應(yīng)用在物理上是分布式的,但邏輯上卻是一個整體。當(dāng)前的分布式數(shù)據(jù)庫技術(shù)已經(jīng)非常成熟,能保證分布數(shù)據(jù)的完整性和一致性。

(2) 實現(xiàn)大用戶量、大吞吐量下的負(fù)載平衡。隨著Internet的迅速發(fā)展,在Web上需要實現(xiàn)很多關(guān)鍵業(yè)務(wù)(如網(wǎng)上購物、訂票等),這些應(yīng)用的最大特點是并發(fā)用戶量大,三層結(jié)構(gòu)比以前的結(jié)構(gòu)更能承擔(dān)大業(yè)務(wù)量。三層結(jié)構(gòu)將應(yīng)用縱向均勻分布在客戶端、應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器上,橫向分布在多個應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器上,應(yīng)用的分布實現(xiàn)了負(fù)載的平衡。因此,在大用戶量、大吞吐量情況下,仍能迅速響應(yīng)每個客戶端的需求。

(3) 如果使用Java技術(shù),可實現(xiàn)應(yīng)用的跨平臺。Java是一種跨平臺的語言,不論是在客戶端,還是在應(yīng)用服務(wù)器上使用Java技術(shù),都可使應(yīng)用在一個操作系統(tǒng)上編寫,并能無縫移植到其他操作系統(tǒng)上。

(4) 能實現(xiàn)組件級的開發(fā)。應(yīng)用服務(wù)器的組件既能用于傳統(tǒng)的客戶端,也能應(yīng)用于Web,提高了代碼的重用率。

(5)中間層的存在,大大提高了數(shù)據(jù)的安全性。Web或其他客戶端不直接訪問數(shù)據(jù)庫,從而加強了數(shù)據(jù)的安全性。

基于以上優(yōu)點,分布式的體系結(jié)構(gòu)目前已被眾多的應(yīng)用系統(tǒng)所采用。

總體結(jié)構(gòu)和技術(shù)平臺

1. 總體結(jié)構(gòu)

為了更好地說明應(yīng)用服務(wù)器的功能以及應(yīng)用和數(shù)據(jù)的分布,需要用一個實例描述,因此我們構(gòu)造了一個虛擬的應(yīng)用——分布式呼叫中心管理系統(tǒng)。與傳統(tǒng)的呼叫中心不同,這是一個全國范圍的呼叫中心,數(shù)據(jù)、應(yīng)用和座席需要分布在全國各個節(jié)點。各節(jié)點的受理員可受理全國各地的客戶,并且能訪問全網(wǎng)內(nèi)任何節(jié)點的數(shù)據(jù),其系統(tǒng)結(jié)構(gòu)如圖2所示。

圖2 分布式呼叫中心系統(tǒng)結(jié)構(gòu)

可以看出:我們把數(shù)據(jù)庫建在省受理中心(內(nèi)部數(shù)據(jù)庫)或其他業(yè)務(wù)部門(外部數(shù)據(jù)庫),根據(jù)各地的需求,一個應(yīng)用服務(wù)器可對應(yīng)一個或多個數(shù)據(jù)庫服務(wù)器。應(yīng)用服務(wù)器細(xì)分為業(yè)務(wù)邏輯和數(shù)據(jù)邏輯,業(yè)務(wù)邏輯響應(yīng)客戶端的請求,從客戶端獲得參數(shù),返回結(jié)果,業(yè)務(wù)邏輯的組件將整個業(yè)務(wù)封裝,業(yè)務(wù)邏輯調(diào)用數(shù)據(jù)邏輯,實現(xiàn)對不同地點異構(gòu)數(shù)據(jù)庫的訪問。

受理席可以是中心內(nèi)部的受理席或遠(yuǎn)程外包受理席;客戶端為普通Windows應(yīng)用,瀏覽器為動態(tài)HTML(CGI、ASP、JSP)和Java Applet。它們都是瘦客戶端,僅有用戶界面,可訪問應(yīng)用服務(wù)器的業(yè)務(wù)邏輯; 業(yè)務(wù)可由插件的方式改變,這些都可通過應(yīng)用服務(wù)器的業(yè)務(wù)邏輯改變來實現(xiàn)。 整個系統(tǒng)網(wǎng)絡(luò)連接由TCP/IP上層協(xié)議CORBA、Http、Socket實現(xiàn)。

2. 技術(shù)平臺

各個關(guān)鍵模塊都采用了當(dāng)前流行和通用的技術(shù)平臺。中間件采用EJB(Enterprise Java Beans)技術(shù)實現(xiàn)分布式應(yīng)用技術(shù); Java使應(yīng)用具有跨平臺特性,即在一個操作系統(tǒng)平臺上編寫的程序移植到其他操作系統(tǒng)平臺上時,不用修改源代碼。

利用中間件中的數(shù)據(jù)邏輯,使應(yīng)用無需改變客戶端即可訪問其他節(jié)點的數(shù)據(jù)。應(yīng)用分布式數(shù)據(jù)庫可實現(xiàn)整個系統(tǒng)數(shù)據(jù)的完整性和一致性。

客戶端可用普通Windows應(yīng)用、JSP/ASP/CGI、Java等實現(xiàn),通過IIOP協(xié)議訪問應(yīng)用服務(wù)器的業(yè)務(wù)邏輯。異地的受理席之間語音傳輸用VoIP實現(xiàn)。

分布帶來的問題和解決辦法

1. 應(yīng)用和數(shù)據(jù)分布產(chǎn)生的問題

(1) 應(yīng)用分布產(chǎn)生的問題

由于整個網(wǎng)絡(luò)內(nèi)的客戶端和應(yīng)用服務(wù)器眾多,有以下3個問題需要解決:客戶端該如何確定請求哪個應(yīng)用服務(wù)器;客戶端如何調(diào)用遠(yuǎn)程應(yīng)用服務(wù)器的組件; 各應(yīng)用服務(wù)器之間如何協(xié)調(diào)工作。

(2) 數(shù)據(jù)分布產(chǎn)生的問題

由于客戶端的數(shù)據(jù)可能同時取自多個點,所以任何一個客戶端都可能要同時訪問異地數(shù)據(jù)庫,并且需要訪問IP地址經(jīng)常變化的數(shù)據(jù)庫。因此,若需要新增一個節(jié)點時,需考慮系統(tǒng)的應(yīng)用和數(shù)據(jù)如何劃分,客戶端如何使正在處理中的業(yè)務(wù)實現(xiàn)平穩(wěn)過渡。

2. 解決的方法

(1) 應(yīng)用分布問題的解決

應(yīng)用分布問題可通過設(shè)計客戶端和應(yīng)用服務(wù)器的訪問規(guī)則來解決。訪問應(yīng)遵循以下規(guī)則: 每一客戶端有且只有一個應(yīng)用服務(wù)器為之服務(wù),一般是該客戶端本地的應(yīng)用服務(wù)器;客戶端需要訪問遠(yuǎn)程服務(wù)器時應(yīng)該通過為之服務(wù)的應(yīng)用服務(wù)器; 每個應(yīng)用服務(wù)器都運行所有業(yè)務(wù)邏輯組件和它訪問的數(shù)據(jù)庫的數(shù)據(jù)邏輯組件,在業(yè)務(wù)量大的中心可做群集(Cluster)。

(2) 數(shù)據(jù)分布問題的解決

解決數(shù)據(jù)分布的問題稍為復(fù)雜,首先要確定數(shù)據(jù)存放原則和數(shù)據(jù)訪問規(guī)則。

數(shù)據(jù)存放的原則:采用分布式數(shù)據(jù)庫,對業(yè)務(wù)性數(shù)據(jù)采取就近分布存儲的策略,而對于控制性數(shù)據(jù)則利用事務(wù)日志來保持各點數(shù)據(jù)的一致性。系統(tǒng)應(yīng)用同時支持?jǐn)?shù)據(jù)的遠(yuǎn)程訪問,支持大吞吐量的聯(lián)機(jī)事務(wù)處理,支持災(zāi)難恢復(fù)。 數(shù)據(jù)訪問的規(guī)則: 每個客戶端有且只有一個連接的應(yīng)用服務(wù)器,每一數(shù)據(jù)庫有且只有一個連接的應(yīng)用服務(wù)器。而每個應(yīng)用服務(wù)器可有多個客戶端,也可連接多個數(shù)據(jù)庫服務(wù)器。通過建立多個連接緩存的方法,實現(xiàn)不同節(jié)點和異構(gòu)數(shù)據(jù)庫的訪問。如圖3所示。

圖3 數(shù)據(jù)訪問

為了實現(xiàn)遠(yuǎn)程的訪問,需要在每一節(jié)點有應(yīng)用服務(wù)器與數(shù)據(jù)庫對照表和遠(yuǎn)程調(diào)用的方法。應(yīng)用服務(wù)器與數(shù)據(jù)庫對照表記錄的是被使用的應(yīng)用服務(wù)器和數(shù)據(jù)庫連接緩存的關(guān)系。

對每一個客戶端訪問數(shù)據(jù)的請求,由遠(yuǎn)程調(diào)用方法確定客戶端調(diào)用的數(shù)據(jù)是本地的還是遠(yuǎn)程的。若是本地,可通過本地應(yīng)用服務(wù)器的數(shù)據(jù)邏輯直接訪問; 若為遠(yuǎn)程,查詢對照表確定調(diào)用哪個遠(yuǎn)程應(yīng)用服務(wù)器,再通過本地應(yīng)用服務(wù)器訪問該遠(yuǎn)程服務(wù)器,實現(xiàn)數(shù)據(jù)訪問。遠(yuǎn)程數(shù)據(jù)訪問過程如圖4所示。

圖4 遠(yuǎn)程數(shù)據(jù)訪問過程

在圖4中,訪問順序為:

A點客戶端→A點應(yīng)用服務(wù)器→B點應(yīng)用服務(wù)器→B點數(shù)據(jù)庫。這一調(diào)用程序說明了,客戶端是如何同時通過應(yīng)用服務(wù)器訪問本地和遠(yuǎn)程數(shù)據(jù)庫。

當(dāng)增減應(yīng)用服務(wù)器節(jié)點時,需要增減對照表記錄,各節(jié)點對照表的一致性通過數(shù)據(jù)庫日志來保持。當(dāng)增加數(shù)據(jù)庫節(jié)點時,將舊數(shù)據(jù)庫中的數(shù)據(jù)根據(jù)數(shù)據(jù)存放原則轉(zhuǎn)入新數(shù)據(jù)庫(無論是處理完成或正在處理的的業(yè)務(wù)數(shù)據(jù)都轉(zhuǎn)入),在舊數(shù)據(jù)庫中做數(shù)據(jù)移動的日志,同時修改應(yīng)用服務(wù)器和數(shù)據(jù)庫對照表。

維護(hù)工作量的評估

1. 新增節(jié)點工作量的評估

新增節(jié)點可分為3個層次:只需客戶端、需應(yīng)用服務(wù)器和需數(shù)據(jù)庫服務(wù)器。

只需客戶端: 只需安裝客戶端軟件,并將其連接到應(yīng)用服務(wù)器上。

需應(yīng)用服務(wù)器: 需在新節(jié)點安裝應(yīng)用服務(wù)器,同時需修改各應(yīng)用服務(wù)器和數(shù)據(jù)庫對照表。

需數(shù)據(jù)庫服務(wù)器: 需在新節(jié)點安裝數(shù)據(jù)庫服務(wù)器,將其連接到應(yīng)用服務(wù)器,增加應(yīng)用服務(wù)器的數(shù)據(jù)庫連接緩存; 還需分離原節(jié)點中的數(shù)據(jù)到新節(jié)點,同時記錄轉(zhuǎn)移日志。

2. 平臺移植工作量評估

操作系統(tǒng)平臺的移植: 支持所有主流Unix平臺和NT平臺,移植到不同平臺上。由于代碼是由Java編寫,所以改變操作系統(tǒng)平臺時無需改變代碼。

數(shù)據(jù)庫平臺:支持ODBC、JDBC和其他專用數(shù)據(jù)庫專用接口。對以上接口的支持,保證了對主流數(shù)據(jù)庫平臺的支持。數(shù)據(jù)庫平臺的改變只需改變數(shù)據(jù)邏輯,而無需更改業(yè)務(wù)邏輯和客戶端。

3. 客戶端或應(yīng)用服務(wù)器代碼改變

應(yīng)用服務(wù)器數(shù)量有限,客戶端卻數(shù)量眾多,為減少工作量,應(yīng)盡可能將修改工作放在應(yīng)用服務(wù)器端。

在三層結(jié)構(gòu)中,客戶端為瘦客戶端,只有用戶界面。因此只有用戶界面發(fā)生變化時,才需改變客戶端; 若是業(yè)務(wù)發(fā)生變化時,則只需改變應(yīng)用服務(wù)器的組件。

4. 安裝和日常管理工作量

安裝: 對于只進(jìn)行業(yè)務(wù)處理的部門和只需受理客戶端軟件的部門,可從統(tǒng)一網(wǎng)址下載軟件,安裝即可使用。對于需要應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器的部門,需技術(shù)人員現(xiàn)場安裝。

維護(hù): 對于應(yīng)用服務(wù)器組件的升級,技術(shù)人員可遠(yuǎn)程操作?蛻舳塑浖纳壭栌脩魪木W(wǎng)上下載,重新安裝。

摘自計算機(jī)世界網(wǎng)


相關(guān)鏈接:
結(jié)合C/S與B/S模式 2002-10-22
峰華:建分布式并不難 2002-07-08
遼寧移動訂制世界杯信息 2002-06-24
峰華智訊為北京112 臺改造 2002-03-18
峰華銀行客戶服務(wù)中心解決方案 2002-01-30
江永县| 阆中市| 乐都县| 江永县| 武鸣县| 合阳县| 蚌埠市| 富蕴县| 磴口县| 永清县| 甘孜县| 武胜县| 衡南县| 呼伦贝尔市| 平原县| 镇宁| 会宁县| 洛扎县| 襄城县| 荆州市| 阿巴嘎旗| 凤台县| 墨玉县| 东源县| 天镇县| 武宁县| 将乐县| 健康| 华安县| 乌鲁木齐市| 大渡口区| 崇礼县| 土默特左旗| 扎赉特旗| 泊头市| 三江| 铜川市| 通山县| 思南县| 乌苏市| 类乌齐县|