文/安寧剛
西安交通大學(xué)校園網(wǎng)始建于1994年,建立之初至今,一直致力于提升用戶(hù)服務(wù)水平,構(gòu)建一套完整的用戶(hù)服務(wù)體系。
2007年后,隨著數(shù)字化校園平臺(tái)的建成,網(wǎng)絡(luò)中心基于數(shù)字化校園平臺(tái)構(gòu)建了用戶(hù)自服務(wù)系統(tǒng),由于綜合業(yè)務(wù)管理系統(tǒng)構(gòu)建之初,沒(méi)有考慮到以后用戶(hù)服務(wù)體系的擴(kuò)展,因此后面的用戶(hù)自服務(wù)系統(tǒng)很多業(yè)務(wù)模塊代碼都必須重寫(xiě),如果一個(gè)業(yè)務(wù)發(fā)生變化,兩套系統(tǒng)都要更改代碼,造成了巨大的代碼維護(hù)量。2012年,我們提出了基于SOA架構(gòu)重新構(gòu)建校園網(wǎng)用戶(hù)服務(wù)體系,將業(yè)務(wù)邏輯分層隔離出來(lái),向下調(diào)用網(wǎng)絡(luò)服務(wù)及應(yīng)用系統(tǒng),向上為業(yè)務(wù)平臺(tái)提供服務(wù)。基于業(yè)務(wù)邏輯層之上,我們相繼搭建了基于Web的網(wǎng)絡(luò)用戶(hù)服務(wù)系統(tǒng)、基于語(yǔ)音電話(huà)的用戶(hù)服務(wù)系統(tǒng)、基于圈存機(jī)、查詢(xún)機(jī)的用戶(hù)自服務(wù)系統(tǒng)、基于移動(dòng)平臺(tái)、微信的自服務(wù)系統(tǒng),這些子系統(tǒng)都是調(diào)用相同的業(yè)務(wù)邏輯接口,因此做到了業(yè)務(wù)邏輯統(tǒng)一,而且不用再為每一套子系統(tǒng)重構(gòu)業(yè)務(wù)代碼。用戶(hù)服務(wù)平臺(tái)上線(xiàn)后,用戶(hù)可以在任何時(shí)間、任何地點(diǎn)、通過(guò)任何方式完成網(wǎng)絡(luò)業(yè)務(wù)的辦理,同時(shí)這套服務(wù)體系滿(mǎn)足了不同人群的使用習(xí)慣,完全覆蓋了所有網(wǎng)絡(luò)用戶(hù)。
面向服務(wù)的體系結(jié)構(gòu),是一個(gè)組件模型,它將應(yīng)用程序的不同功能單元(稱(chēng)為服務(wù))通過(guò)這些服務(wù)之間定義良好的接口和契約聯(lián)系起來(lái)。接口是采用中立的方式進(jìn)行定義的,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言。這使得構(gòu)建在各種這樣的系統(tǒng)中的服務(wù)可以以一種統(tǒng)一和通用的方式進(jìn)行交互。
這種具有中立的接口定義(沒(méi)有強(qiáng)制綁定到特定的實(shí)現(xiàn)上)的特征稱(chēng)為服務(wù)之間的松耦合。松耦合系統(tǒng)的好處有兩點(diǎn),一點(diǎn)是它的靈活性,另一點(diǎn)是,當(dāng)組成整個(gè)應(yīng)用程序的每個(gè)服務(wù)的內(nèi)部結(jié)構(gòu)和實(shí)現(xiàn)逐漸地發(fā)生改變時(shí),它能夠繼續(xù)存在。而另一方面,緊耦合意味著應(yīng)用程序的不同組件之間的接口與其功能和結(jié)構(gòu)是緊密相連的,因而當(dāng)需要對(duì)部分或整個(gè)應(yīng)用程序進(jìn)行某種形式的更改時(shí),它們就顯得非常脆弱。
由于校園網(wǎng)絡(luò)內(nèi)各種網(wǎng)絡(luò)業(yè)務(wù)、應(yīng)用在服務(wù)層面在業(yè)務(wù)邏輯上都是同構(gòu)的,比如都有開(kāi)戶(hù)、查詢(xún)、計(jì)費(fèi)、管理、銷(xiāo)戶(hù)等業(yè)務(wù)邏輯,但是這些網(wǎng)絡(luò)服務(wù)和應(yīng)用的實(shí)現(xiàn)層面上都是異構(gòu)的,有著不同的硬件平臺(tái)、操作系統(tǒng)、編程語(yǔ)言,這些服務(wù)和應(yīng)用有的是購(gòu)買(mǎi)的產(chǎn)品,也有自主開(kāi)發(fā)的,各不相同,要讓這服務(wù)及應(yīng)用能夠交換數(shù)據(jù),采用松耦合的SOA模型是最好的解決辦法。
系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)
校園網(wǎng)用戶(hù)服務(wù)平臺(tái)的系統(tǒng)架構(gòu)可以簡(jiǎn)單分為三層:底層網(wǎng)絡(luò)業(yè)務(wù)實(shí)現(xiàn)層、中間業(yè)務(wù)邏輯層、上層業(yè)務(wù)表現(xiàn)層。底層網(wǎng)絡(luò)業(yè)務(wù)實(shí)現(xiàn)層是校園網(wǎng)提供的所有網(wǎng)絡(luò)服務(wù)、應(yīng)用管理接口的具體實(shí)現(xiàn);中間業(yè)務(wù)邏輯層是實(shí)現(xiàn)網(wǎng)絡(luò)用戶(hù)服務(wù)平臺(tái)的業(yè)務(wù)邏輯,中間層只關(guān)心業(yè)務(wù)邏輯,如開(kāi)通業(yè)務(wù)、查詢(xún)業(yè)務(wù)、管理、銷(xiāo)戶(hù),而不管這些邏輯在具體的業(yè)務(wù)中是如何實(shí)現(xiàn)的;上層業(yè)務(wù)表現(xiàn)層是服務(wù)平臺(tái)的具體表現(xiàn),包括Web、portal、校園門(mén)戶(hù)、圈存機(jī)、查詢(xún)機(jī)、語(yǔ)音電話(huà)、移動(dòng)客戶(hù)端、微信,這些不同的業(yè)務(wù)入口都向下調(diào)用統(tǒng)一、標(biāo)準(zhǔn)的業(yè)務(wù)邏輯組件。下面詳細(xì)介紹各層的設(shè)計(jì)。
底層網(wǎng)絡(luò)業(yè)務(wù)實(shí)現(xiàn)層:業(yè)務(wù)實(shí)現(xiàn)層主要是要實(shí)現(xiàn)平臺(tái)與底層各個(gè)網(wǎng)絡(luò)服務(wù)及應(yīng)用的接口。網(wǎng)絡(luò)業(yè)務(wù)一般可分為3大類(lèi),第一類(lèi)是網(wǎng)絡(luò)接入,包括靜態(tài)IP接入、portal認(rèn)證接入、802.1X認(rèn)證接入、PPPOE認(rèn)證接入、無(wú)線(xiàn)接入。第二類(lèi)是網(wǎng)絡(luò)服務(wù),包括VPN、代理、云桌面、云存儲(chǔ)、電子信箱。第三類(lèi)是應(yīng)用系統(tǒng),主要是數(shù)字化校園的各個(gè)應(yīng)用系統(tǒng)。每個(gè)業(yè)務(wù)的接口實(shí)現(xiàn)沒(méi)有一個(gè)統(tǒng)一標(biāo)準(zhǔn)或規(guī)范,主要是根據(jù)具體業(yè)務(wù)的體系結(jié)構(gòu)來(lái)設(shè)計(jì),這些業(yè)務(wù)有些是自主開(kāi)發(fā)的,有些是廠(chǎng)商產(chǎn)品,實(shí)現(xiàn)的原則是穩(wěn)定可靠、簡(jiǎn)單易行、容易維護(hù)。在我們的用戶(hù)服務(wù)平臺(tái)接口實(shí)現(xiàn)中,具體用到的有簡(jiǎn)單網(wǎng)管協(xié)議SNMP、遠(yuǎn)程過(guò)程調(diào)用RPC、SOAP協(xié)議、JSON數(shù)據(jù)交換、SOCKET通信、廠(chǎng)商提供的第三方接口、數(shù)據(jù)庫(kù)直連等等。
中間業(yè)務(wù)邏輯層。中間業(yè)務(wù)邏輯層主要是業(yè)務(wù)邏輯的實(shí)現(xiàn),是整個(gè)服務(wù)平臺(tái)的核心。業(yè)務(wù)邏輯主要有以下要素:用戶(hù)、策略、模板、計(jì)費(fèi)、開(kāi)戶(hù)、管理、銷(xiāo)戶(hù)。每個(gè)用戶(hù)都通過(guò)唯一的NETID綁定一個(gè)具體的業(yè)務(wù),用戶(hù)的身份決定了開(kāi)戶(hù)的時(shí)候使用該身份相對(duì)應(yīng)的模板和策略,模板決定了該用戶(hù)使用這個(gè)服務(wù)的規(guī)格,比如網(wǎng)絡(luò)帶寬、網(wǎng)絡(luò)流量、使用時(shí)段、空間大小等等,這樣就可以針對(duì)不同的用戶(hù)群體進(jìn)行精細(xì)化管理,比如對(duì)本科生使用網(wǎng)絡(luò)控制較為嚴(yán)格,研究生較為寬松,甚至可以更精細(xì)的根據(jù)學(xué)習(xí)成績(jī)?cè)O(shè)定模板。策略決定了如何管理該用戶(hù)的服務(wù),何時(shí)何地能使用,何時(shí)何地不能使用,同時(shí)策略也決定了如何計(jì)費(fèi)。管理主要有狀態(tài)查詢(xún)、打開(kāi)服務(wù)、關(guān)閉服務(wù)、修改服務(wù)四種通用的操作,修改服務(wù)的操作里通常有修改服務(wù)的規(guī)格、修改密碼。有了業(yè)務(wù)邏輯層后,就不用每種業(yè)務(wù)都寫(xiě)一套業(yè)務(wù)邏輯的代碼了,在系統(tǒng)中只需要初始化一個(gè)業(yè)務(wù),系統(tǒng)會(huì)自動(dòng)生成該業(yè)務(wù)的所有邏輯,并生成業(yè)務(wù)所有的數(shù)據(jù)庫(kù)表項(xiàng),然后配置好模板、策略、計(jì)費(fèi),這個(gè)業(yè)務(wù)就可以運(yùn)行了,
上層業(yè)務(wù)表現(xiàn)層。上層業(yè)務(wù)表現(xiàn)層主要是業(yè)務(wù)邏輯在服務(wù)平臺(tái)上的不同發(fā)布方式,默認(rèn)的發(fā)布方式是Web,我們稱(chēng)為為綜合業(yè)務(wù)管理系統(tǒng),主要是面向工作人員。其它發(fā)布方式有用戶(hù)自服務(wù)平臺(tái)、基于SIP的語(yǔ)音電話(huà)系統(tǒng)、用戶(hù)自服務(wù)系統(tǒng)、校園信息門(mén)戶(hù)、多媒體觸摸屏、圈存機(jī)、移動(dòng)客戶(hù)端、短信、微信。表現(xiàn)層各個(gè)系統(tǒng)對(duì)業(yè)務(wù)邏輯的操作,都是調(diào)用中間業(yè)務(wù)邏輯層的接口,不能對(duì)底層的具體業(yè)務(wù)系統(tǒng)進(jìn)行操作。
業(yè)務(wù)邏輯的設(shè)計(jì)
方法:CreatUser創(chuàng)建業(yè)務(wù)、DropUser刪除業(yè)務(wù)、ModUser修改業(yè)務(wù)參數(shù)、CloseUser停用業(yè)務(wù)、OpenUser啟用業(yè)務(wù)。每個(gè)方法實(shí)例化的時(shí)候,首先要綁定一個(gè)用戶(hù)的netid,其次要指定具體的業(yè)務(wù)ID,系統(tǒng)會(huì)在接口庫(kù)里調(diào)用該業(yè)務(wù)注冊(cè)的接口函數(shù),完成動(dòng)作。
模板:Template的實(shí)現(xiàn)。Template的屬性包括業(yè)務(wù)ID、參數(shù)數(shù)組,參數(shù)數(shù)組存儲(chǔ)了該業(yè)務(wù)的規(guī)格參數(shù)。在創(chuàng)建業(yè)務(wù)時(shí),如果有模板選項(xiàng),就將模板里的參數(shù)傳給接口函數(shù)。
策略:策略是一組由定時(shí)器定時(shí)執(zhí)行的任務(wù)腳本,策略可以調(diào)用最基本的方法與接口函數(shù),完成管理、計(jì)費(fèi)的動(dòng)作。比如檢查到用戶(hù)的費(fèi)用到期,就要執(zhí)行CloseUser的動(dòng)作關(guān)閉用戶(hù)的業(yè)務(wù),檢查到交費(fèi)的動(dòng)作,就要執(zhí)行OpenUser的動(dòng)作啟用業(yè)務(wù)。
安全方面設(shè)計(jì)
1.中間業(yè)務(wù)邏輯層與底層業(yè)務(wù)實(shí)現(xiàn)層之間的安全設(shè)置,基本上結(jié)合接口的實(shí)現(xiàn),各自做一些安全防護(hù),比如業(yè)務(wù)系統(tǒng)之間秘鑰通訊,設(shè)置IP訪(fǎng)問(wèn)限制。
2. 中間業(yè)務(wù)邏輯層與上層業(yè)務(wù)表現(xiàn)層之間有防火墻保護(hù),防止非法調(diào)用,并且記錄了所有的訪(fǎng)問(wèn)日志。
3.權(quán)限控制。每個(gè)業(yè)務(wù)表現(xiàn)層的應(yīng)用都在權(quán)限表里有一條數(shù)據(jù),只有權(quán)限表里授權(quán)才能調(diào)用業(yè)務(wù)邏輯。
圖1 校園網(wǎng)用戶(hù)服務(wù)平臺(tái)結(jié)構(gòu)設(shè)計(jì)
在校園網(wǎng)用戶(hù)服務(wù)平臺(tái)建立之前,所有的網(wǎng)絡(luò)業(yè)務(wù)都是孤立的,每一個(gè)網(wǎng)絡(luò)業(yè)務(wù)都有一套獨(dú)立的用戶(hù)管理系統(tǒng)和獨(dú)立的用戶(hù)數(shù)據(jù)庫(kù),各個(gè)業(yè)務(wù)系統(tǒng)之間的用戶(hù)沒(méi)有關(guān)聯(lián),用戶(hù)在網(wǎng)絡(luò)中心辦理業(yè)務(wù)的時(shí)候,工作人員需要在多個(gè)業(yè)務(wù)組件之間來(lái)回切換,多次操作,如果要變更業(yè)務(wù),需要更新多個(gè)業(yè)務(wù)的數(shù)據(jù),比如用戶(hù)地址、聯(lián)系方式。服務(wù)平臺(tái)建立之后,各個(gè)網(wǎng)絡(luò)業(yè)務(wù)不再各自維護(hù)一套用戶(hù)數(shù)據(jù),而是通過(guò)統(tǒng)一數(shù)據(jù)交換平臺(tái)獲取用戶(hù)數(shù)據(jù),只要知道用戶(hù)的NETID或?qū)W工號(hào),管理員就可以在用戶(hù)服務(wù)平臺(tái)上完成有關(guān)該用戶(hù)的所有查詢(xún)、業(yè)務(wù)辦理的操作,用戶(hù)也可通過(guò)統(tǒng)一身份認(rèn)證登錄自服務(wù)系統(tǒng)或校園信息門(mén)戶(hù),查詢(xún)或辦理名下所有的網(wǎng)絡(luò)業(yè)務(wù)。
在搭建用戶(hù)服務(wù)平臺(tái)之前,用戶(hù)服務(wù)工作及業(yè)務(wù)辦理主要集中在網(wǎng)絡(luò)中心現(xiàn)場(chǎng)辦理以及服務(wù)熱線(xiàn),高峰期排長(zhǎng)隊(duì),電話(huà)打不進(jìn)來(lái),用戶(hù)體驗(yàn)很差。搭建用戶(hù)服務(wù)平臺(tái)之后,用戶(hù)可以自主選擇最習(xí)慣的方式辦理業(yè)務(wù),95%以上的業(yè)務(wù)辦理被分散到網(wǎng)絡(luò)、圈存機(jī)、觸摸屏終端、移動(dòng)終端上,大大減輕了現(xiàn)場(chǎng)辦理業(yè)務(wù)的壓力和服務(wù)電話(huà)的壓力,用戶(hù)免去了排隊(duì)等待和辦理業(yè)務(wù)的時(shí)間限制。
服務(wù)平臺(tái)業(yè)務(wù)層是整個(gè)服務(wù)平臺(tái)的核心,一旦出現(xiàn)故障,就會(huì)造成所有業(yè)務(wù)辦理中斷,因此業(yè)務(wù)層采用了雙機(jī)熱備,能夠確保業(yè)務(wù)不中斷。上層由于是相互冗余的,所以一種途徑出現(xiàn)故障影響不大。底層交互采用了同步、異步兩種模式,如果一個(gè)業(yè)務(wù)調(diào)用出現(xiàn)錯(cuò)誤,系統(tǒng)會(huì)放入隊(duì)列再次嘗試,直到成功。這樣就確保了底層出現(xiàn)故障,不影響業(yè)務(wù)辦理。
用戶(hù)服務(wù)平臺(tái)的后期的維護(hù)和開(kāi)發(fā),主要在與各個(gè)業(yè)務(wù)系統(tǒng)的接口上面。如果一個(gè)業(yè)務(wù)發(fā)生變化,就有可能需要修改業(yè)務(wù)接口。因此在購(gòu)買(mǎi)、升級(jí)產(chǎn)品之前,需要與廠(chǎng)商溝通,先做好接口的測(cè)試工作,選擇一個(gè)簡(jiǎn)單、穩(wěn)定的接口方式,確保業(yè)務(wù)接口能夠?qū)崿F(xiàn)。
數(shù)據(jù)同步的問(wèn)題。必須保證服務(wù)平臺(tái)業(yè)務(wù)數(shù)據(jù)庫(kù)的用戶(hù)數(shù)據(jù)與業(yè)務(wù)系統(tǒng)的數(shù)據(jù)保持一致,因此要有一個(gè)定期數(shù)據(jù)校驗(yàn)和數(shù)據(jù)同步的機(jī)制。比如,一個(gè)用戶(hù)的無(wú)線(xiàn)賬號(hào)是可用的,必須定期到無(wú)線(xiàn)管理系統(tǒng)里檢查這個(gè)賬號(hào)的狀態(tài)是否為可用,如果狀態(tài)不正確,需要及時(shí)修正錯(cuò)誤。