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