分布式呼叫中心管理系統(tǒng)技術(shù)實現(xiàn)
張瑞 2001/05/31
隨著現(xiàn)代企業(yè)的分支機構(gòu)越來越多,應用系統(tǒng)的負載和數(shù)據(jù)量也日趨龐大。應用系統(tǒng)經(jīng)過了主機/終端和客戶/服務器結(jié)構(gòu)的歷程,現(xiàn)在正由客戶/服務器方式轉(zhuǎn)向三層結(jié)構(gòu)方式。所謂三層結(jié)構(gòu)是指在客戶/服務器兩層結(jié)構(gòu)基礎(chǔ)上加入中間層,中間層叫應用服務器或中間件,結(jié)構(gòu)如圖1所示。
圖1 應用系統(tǒng)三層結(jié)構(gòu)
CORBA和EJB在技術(shù)上日趨成熟,三層結(jié)構(gòu)的技術(shù)標準也日益完善,與客戶/服務器方式相比,三層結(jié)構(gòu)有很多優(yōu)點:
(1) 可實現(xiàn)應用級和數(shù)據(jù)庫級的全面分布。應用分為用戶界面和業(yè)務邏輯,業(yè)務邏輯以組件的形式分布在應用服務器上。服務器根據(jù)需要分布在整個網(wǎng)絡的任何節(jié)點上,盡管整個應用在物理上是分布式的,但邏輯上卻是一個整體。當前的分布式數(shù)據(jù)庫技術(shù)已經(jīng)非常成熟,能保證分布數(shù)據(jù)的完整性和一致性。
(2) 實現(xiàn)大用戶量、大吞吐量下的負載平衡。隨著Internet的迅速發(fā)展,在Web上需要實現(xiàn)很多關(guān)鍵業(yè)務(如網(wǎng)上購物、訂票等),這些應用的最大特點是并發(fā)用戶量大,三層結(jié)構(gòu)比以前的結(jié)構(gòu)更能承擔大業(yè)務量。三層結(jié)構(gòu)將應用縱向均勻分布在客戶端、應用服務器和數(shù)據(jù)庫服務器上,橫向分布在多個應用服務器和數(shù)據(jù)庫服務器上,應用的分布實現(xiàn)了負載的平衡。因此,在大用戶量、大吞吐量情況下,仍能迅速響應每個客戶端的需求。
(3) 如果使用Java技術(shù),可實現(xiàn)應用的跨平臺。Java是一種跨平臺的語言,不論是在客戶端,還是在應用服務器上使用Java技術(shù),都可使應用在一個操作系統(tǒng)上編寫,并能無縫移植到其他操作系統(tǒng)上。
(4) 能實現(xiàn)組件級的開發(fā)。應用服務器的組件既能用于傳統(tǒng)的客戶端,也能應用于Web,提高了代碼的重用率。
(5)中間層的存在,大大提高了數(shù)據(jù)的安全性。Web或其他客戶端不直接訪問數(shù)據(jù)庫,從而加強了數(shù)據(jù)的安全性。
基于以上優(yōu)點,分布式的體系結(jié)構(gòu)目前已被眾多的應用系統(tǒng)所采用。
總體結(jié)構(gòu)和技術(shù)平臺
1. 總體結(jié)構(gòu)
為了更好地說明應用服務器的功能以及應用和數(shù)據(jù)的分布,需要用一個實例描述,因此我們構(gòu)造了一個虛擬的應用——分布式呼叫中心管理系統(tǒng)。與傳統(tǒng)的呼叫中心不同,這是一個全國范圍的呼叫中心,數(shù)據(jù)、應用和座席需要分布在全國各個節(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è)務部門(外部數(shù)據(jù)庫),根據(jù)各地的需求,一個應用服務器可對應一個或多個數(shù)據(jù)庫服務器。應用服務器細分為業(yè)務邏輯和數(shù)據(jù)邏輯,業(yè)務邏輯響應客戶端的請求,從客戶端獲得參數(shù),返回結(jié)果,業(yè)務邏輯的組件將整個業(yè)務封裝,業(yè)務邏輯調(diào)用數(shù)據(jù)邏輯,實現(xiàn)對不同地點異構(gòu)數(shù)據(jù)庫的訪問。
受理席可以是中心內(nèi)部的受理席或遠程外包受理席;客戶端為普通Windows應用,瀏覽器為動態(tài)HTML(CGI、ASP、JSP)和Java Applet。它們都是瘦客戶端,僅有用戶界面,可訪問應用服務器的業(yè)務邏輯; 業(yè)務可由插件的方式改變,這些都可通過應用服務器的業(yè)務邏輯改變來實現(xiàn)。 整個系統(tǒng)網(wǎng)絡連接由TCP/IP上層協(xié)議CORBA、Http、Socket實現(xiàn)。
2. 技術(shù)平臺
各個關(guān)鍵模塊都采用了當前流行和通用的技術(shù)平臺。中間件采用EJB(Enterprise Java Beans)技術(shù)實現(xiàn)分布式應用技術(shù); Java使應用具有跨平臺特性,即在一個操作系統(tǒng)平臺上編寫的程序移植到其他操作系統(tǒng)平臺上時,不用修改源代碼。
利用中間件中的數(shù)據(jù)邏輯,使應用無需改變客戶端即可訪問其他節(jié)點的數(shù)據(jù)。應用分布式數(shù)據(jù)庫可實現(xiàn)整個系統(tǒng)數(shù)據(jù)的完整性和一致性。
客戶端可用普通Windows應用、JSP/ASP/CGI、Java等實現(xiàn),通過IIOP協(xié)議訪問應用服務器的業(yè)務邏輯。異地的受理席之間語音傳輸用VoIP實現(xiàn)。
分布帶來的問題和解決辦法1. 應用和數(shù)據(jù)分布產(chǎn)生的問題
(1) 應用分布產(chǎn)生的問題
由于整個網(wǎng)絡內(nèi)的客戶端和應用服務器眾多,有以下3個問題需要解決:客戶端該如何確定請求哪個應用服務器;客戶端如何調(diào)用遠程應用服務器的組件; 各應用服務器之間如何協(xié)調(diào)工作。
(2) 數(shù)據(jù)分布產(chǎn)生的問題
由于客戶端的數(shù)據(jù)可能同時取自多個點,所以任何一個客戶端都可能要同時訪問異地數(shù)據(jù)庫,并且需要訪問IP地址經(jīng)常變化的數(shù)據(jù)庫。因此,若需要新增一個節(jié)點時,需考慮系統(tǒng)的應用和數(shù)據(jù)如何劃分,客戶端如何使正在處理中的業(yè)務實現(xiàn)平穩(wěn)過渡。
2. 解決的方法
(1) 應用分布問題的解決
應用分布問題可通過設計客戶端和應用服務器的訪問規(guī)則來解決。訪問應遵循以下規(guī)則: 每一客戶端有且只有一個應用服務器為之服務,一般是該客戶端本地的應用服務器;客戶端需要訪問遠程服務器時應該通過為之服務的應用服務器; 每個應用服務器都運行所有業(yè)務邏輯組件和它訪問的數(shù)據(jù)庫的數(shù)據(jù)邏輯組件,在業(yè)務量大的中心可做群集(Cluster)。
(2) 數(shù)據(jù)分布問題的解決解決數(shù)據(jù)分布的問題稍為復雜,首先要確定數(shù)據(jù)存放原則和數(shù)據(jù)訪問規(guī)則。
數(shù)據(jù)存放的原則:采用分布式數(shù)據(jù)庫,對業(yè)務性數(shù)據(jù)采取就近分布存儲的策略,而對于控制性數(shù)據(jù)則利用事務日志來保持各點數(shù)據(jù)的一致性。系統(tǒng)應用同時支持數(shù)據(jù)的遠程訪問,支持大吞吐量的聯(lián)機事務處理,支持災難恢復。 數(shù)據(jù)訪問的規(guī)則: 每個客戶端有且只有一個連接的應用服務器,每一數(shù)據(jù)庫有且只有一個連接的應用服務器。而每個應用服務器可有多個客戶端,也可連接多個數(shù)據(jù)庫服務器。通過建立多個連接緩存的方法,實現(xiàn)不同節(jié)點和異構(gòu)數(shù)據(jù)庫的訪問。如圖3所示。
圖3 數(shù)據(jù)訪問
為了實現(xiàn)遠程的訪問,需要在每一節(jié)點有應用服務器與數(shù)據(jù)庫對照表和遠程調(diào)用的方法。應用服務器與數(shù)據(jù)庫對照表記錄的是被使用的應用服務器和數(shù)據(jù)庫連接緩存的關(guān)系。
對每一個客戶端訪問數(shù)據(jù)的請求,由遠程調(diào)用方法確定客戶端調(diào)用的數(shù)據(jù)是本地的還是遠程的。若是本地,可通過本地應用服務器的數(shù)據(jù)邏輯直接訪問; 若為遠程,查詢對照表確定調(diào)用哪個遠程應用服務器,再通過本地應用服務器訪問該遠程服務器,實現(xiàn)數(shù)據(jù)訪問。遠程數(shù)據(jù)訪問過程如圖4所示。
圖4 遠程數(shù)據(jù)訪問過程
在圖4中,訪問順序為:
A點客戶端→A點應用服務器→B點應用服務器→B點數(shù)據(jù)庫。這一調(diào)用程序說明了,客戶端是如何同時通過應用服務器訪問本地和遠程數(shù)據(jù)庫。
當增減應用服務器節(jié)點時,需要增減對照表記錄,各節(jié)點對照表的一致性通過數(shù)據(jù)庫日志來保持。當增加數(shù)據(jù)庫節(jié)點時,將舊數(shù)據(jù)庫中的數(shù)據(jù)根據(jù)數(shù)據(jù)存放原則轉(zhuǎn)入新數(shù)據(jù)庫(無論是處理完成或正在處理的的業(yè)務數(shù)據(jù)都轉(zhuǎn)入),在舊數(shù)據(jù)庫中做數(shù)據(jù)移動的日志,同時修改應用服務器和數(shù)據(jù)庫對照表。
維護工作量的評估
1. 新增節(jié)點工作量的評估
新增節(jié)點可分為3個層次:只需客戶端、需應用服務器和需數(shù)據(jù)庫服務器。
只需客戶端: 只需安裝客戶端軟件,并將其連接到應用服務器上。
需應用服務器: 需在新節(jié)點安裝應用服務器,同時需修改各應用服務器和數(shù)據(jù)庫對照表。
需數(shù)據(jù)庫服務器: 需在新節(jié)點安裝數(shù)據(jù)庫服務器,將其連接到應用服務器,增加應用服務器的數(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è)務邏輯和客戶端。
3. 客戶端或應用服務器代碼改變
應用服務器數(shù)量有限,客戶端卻數(shù)量眾多,為減少工作量,應盡可能將修改工作放在應用服務器端。
在三層結(jié)構(gòu)中,客戶端為瘦客戶端,只有用戶界面。因此只有用戶界面發(fā)生變化時,才需改變客戶端; 若是業(yè)務發(fā)生變化時,則只需改變應用服務器的組件。
4. 安裝和日常管理工作量
安裝: 對于只進行業(yè)務處理的部門和只需受理客戶端軟件的部門,可從統(tǒng)一網(wǎng)址下載軟件,安裝即可使用。對于需要應用服務器和數(shù)據(jù)庫服務器的部門,需技術(shù)人員現(xiàn)場安裝。
維護: 對于應用服務器組件的升級,技術(shù)人員可遠程操作?蛻舳塑浖纳壭栌脩魪木W(wǎng)上下載,重新安裝。
結(jié)合C/S與B/S模式 2002-10-22 |
峰華:建分布式并不難 2002-07-08 |
遼寧移動訂制世界杯信息 2002-06-24 |
峰華智訊為北京112 臺改造 2002-03-18 |
峰華銀行客戶服務中心解決方案 2002-01-30 |