郭 倩,劉宏磊,張亞娟,譚 薇,杜 豐
(西安交通大學(xué) 網(wǎng)絡(luò)信息中心,陜西 西安 710049)
數(shù)字校園的快速發(fā)展使高校信息化建設(shè)碩果累累,各個(gè)部門(mén)基于自身需求建立了各自的業(yè)務(wù)系統(tǒng),如科研、教務(wù)、研究生信息管理等系統(tǒng)。隨著信息化建設(shè)的不斷推進(jìn),越來(lái)越多的業(yè)務(wù)系統(tǒng)和部門(mén)需要向校內(nèi)用戶(教職工、學(xué)生等)發(fā)布各類(lèi)消息(通知、提醒、代辦、催辦等),冗余繁多的郵件、網(wǎng)頁(yè)、站內(nèi)信、即時(shí)通信消息使得各個(gè)業(yè)務(wù)系統(tǒng)之間、業(yè)務(wù)系統(tǒng)與人之間、人與人之間的信息互聯(lián)互通的變得冗余復(fù)雜且效率低下。各種各樣的消息發(fā)布渠道如果沒(méi)有統(tǒng)一的消息發(fā)布出口,就會(huì)出現(xiàn)各業(yè)務(wù)系統(tǒng)重復(fù)建設(shè)的情況,造成數(shù)字校園資源的極大浪費(fèi),也不利于統(tǒng)一監(jiān)管。
目前大多數(shù)高校使用以下幾種方式進(jìn)行消息的收發(fā)和管理:
以廣播[1]的方式在瀏覽器中呈現(xiàn)消息,對(duì)象指向不明確,沒(méi)有時(shí)效性也無(wú)法保證信息肯定被接收,效率極其低下。
雖然可以向指定人群大容量推送消息[2],但是時(shí)效性很差。
利用第三方公司開(kāi)發(fā)的如微信、QQ和飛信[3]等工具進(jìn)行消息的下發(fā)和上行,雖然時(shí)效性高,對(duì)象指向明確,但是無(wú)法保證消息來(lái)源的權(quán)威性,也不能與校內(nèi)各個(gè)業(yè)務(wù)系統(tǒng)進(jìn)行對(duì)接和集成,具有一定的局限性。
目前一些高校使用三大運(yùn)營(yíng)商或者第三方公司提供的短信平臺(tái)群發(fā)短信,這種方法雖然能保證消息的及時(shí)性和準(zhǔn)確性,但是管理上存在著幾個(gè)問(wèn)題。一是用戶手機(jī)號(hào)碼和通訊錄的維護(hù)有一定難度;二是使用的第三方平臺(tái)沒(méi)有完備且適用于高校的角色設(shè)置和權(quán)限分配機(jī)制;三是用戶范圍單一,只能針對(duì)部分指定人員開(kāi)發(fā),無(wú)法面向全校教職工和業(yè)務(wù)系統(tǒng)開(kāi)放。
所有消息通過(guò)統(tǒng)一控制臺(tái)收發(fā),同時(shí)接入手機(jī)短信、電子郵件以及微信公眾號(hào)等發(fā)送渠道。
各業(yè)務(wù)系統(tǒng)[4]僅需調(diào)用一個(gè)消息發(fā)送接口,即可完成消息的多終端推送(郵件、微信、短信),減去了單獨(dú)開(kāi)發(fā)消息推送模塊的工作。
基于已有的統(tǒng)一身份認(rèn)證系統(tǒng)做用戶認(rèn)證,同時(shí)支持?jǐn)?shù)據(jù)庫(kù)統(tǒng)一導(dǎo)入教職工和學(xué)生的用戶信息,支持按照部門(mén)層級(jí)規(guī)范管理用戶的通訊錄和群組,支持個(gè)人通訊錄。考慮權(quán)限角色的管控、不同權(quán)限級(jí)別的不同角色。
所有業(yè)務(wù)系統(tǒng)接入端和個(gè)人用戶只有通過(guò)系統(tǒng)的認(rèn)證,才能獲取授權(quán)推送消息,規(guī)范不同權(quán)限用戶通過(guò)指定的渠道發(fā)送消息。
定義非法消息的安全策略,比如暴力、色情、非法組織等相關(guān)敏感詞匯。終止非法消息的發(fā)送,并追溯發(fā)送來(lái)源。
直觀、便捷地確定消息接收者(人)、消息發(fā)送渠道(方式)、消息內(nèi)容(內(nèi)容)以及歷史消息(記錄),可快速地指定向某分組下所有用戶、某些用戶或某個(gè)用戶發(fā)送消息。
可個(gè)性化設(shè)置常用聯(lián)系人,消息接收用戶可以根據(jù)個(gè)人需要,退訂某些類(lèi)別的消息,以免消息騷擾。
所有消息以報(bào)表的形式進(jìn)行統(tǒng)計(jì)和分析,方便相關(guān)人員具體、清晰、準(zhǔn)確地監(jiān)控消息發(fā)送的數(shù)據(jù)。直觀地展示在不同時(shí)間段內(nèi),各個(gè)渠道、各個(gè)部門(mén)、消息發(fā)送的總數(shù)量和趨勢(shì),從而確定更合理的發(fā)送方式和數(shù)量,提高管理的透明度。
在智慧校園的背景下,基于PaaS平臺(tái)的統(tǒng)一消息協(xié)作系統(tǒng)能覆蓋校園主要系統(tǒng)應(yīng)用及服務(wù),讓各業(yè)務(wù)部門(mén)高效、方便、迅速、安全地下發(fā)消息和通知并獲取上行回復(fù),實(shí)現(xiàn)校園消息的統(tǒng)一發(fā)送、統(tǒng)一監(jiān)控、統(tǒng)一管理。
統(tǒng)一消息協(xié)作系統(tǒng)的主要用戶對(duì)象為 “個(gè)人”與“業(yè)務(wù)系統(tǒng)[4]”,系統(tǒng)提供Web控制臺(tái)實(shí)現(xiàn)消息收發(fā)、數(shù)據(jù)統(tǒng)計(jì)以及權(quán)限管理等功能模塊,滿足個(gè)人用戶的功能需求,同時(shí)提供接口服務(wù)滿足業(yè)務(wù)系統(tǒng)的集成接入。系統(tǒng)的核心模塊基于消息隊(duì)列機(jī)制,提供負(fù)載均衡機(jī)制。各個(gè)模塊相對(duì)獨(dú)立,邏輯清晰,保障了穩(wěn)定性、可擴(kuò)展性和可用性[5]。統(tǒng)一消息協(xié)作系統(tǒng)總體架構(gòu)如圖1所示。
圖1 統(tǒng)一消息協(xié)作系統(tǒng)總體架構(gòu)圖
根據(jù)高校中“個(gè)人”與“業(yè)務(wù)系統(tǒng)”兩種用戶的特征對(duì)權(quán)限與角色進(jìn)行設(shè)計(jì),如表1所示。
表1 用戶權(quán)限分配表
(1)把用戶角色分為個(gè)人用戶、應(yīng)用系統(tǒng)用戶。統(tǒng)一消息協(xié)作系統(tǒng)中應(yīng)用系統(tǒng)用戶和個(gè)人用戶擁有平行權(quán)限。
(2)把用戶類(lèi)型分為超級(jí)管理員、系統(tǒng)管理員、部門(mén)管理員、輔導(dǎo)員、普通賬號(hào),權(quán)限分配如表1所示。
(3)普通賬號(hào)是相對(duì)于具有管理員權(quán)限的賬號(hào)提出的。應(yīng)用系統(tǒng)用戶、個(gè)人用戶都可以是普通賬號(hào),只具備普通賬號(hào)的權(quán)限。超級(jí)管理員是整個(gè)系統(tǒng)的總管理員賬號(hào),可以分配系統(tǒng)管理員賬號(hào),系統(tǒng)管理員賬號(hào)可分配部門(mén)管理員賬號(hào),部門(mén)管理員可設(shè)置輔導(dǎo)員,輔導(dǎo)員可維護(hù)家長(zhǎng)通訊錄以及向家長(zhǎng)發(fā)送消息。
消息隊(duì)列(MQ)是一種服務(wù)與服務(wù)之間經(jīng)常見(jiàn)到的數(shù)據(jù)通信中間件,具有緩沖、解耦和擴(kuò)展性等特點(diǎn)。本系統(tǒng)的消息流轉(zhuǎn)流程如圖2所示。
圖2 消息流轉(zhuǎn)流程圖
RocketMQ是Kafka的改進(jìn)版,把消息的事務(wù)性及可靠傳輸進(jìn)行了優(yōu)化,目前被Ali集團(tuán)廣泛應(yīng)用于交易、充值、日志流式處理、消息推送等,支撐了Ali多次“雙十一”活動(dòng)。相比現(xiàn)在比較常見(jiàn)的MQ產(chǎn)品,如ZeroMQ、RabbitMQ、ActiveMQ 等,RocketMQ 具有消息輕巧靈活易用、傳輸可靠性高、支持海量堆積和性能強(qiáng)勁等特點(diǎn)。
因此,本系統(tǒng)選擇RocketMQ處理大數(shù)據(jù)量發(fā)送時(shí)消息的流轉(zhuǎn)與加工[6]。利用Springboot特性將消息協(xié)作系統(tǒng)分化為EMC3.0后臺(tái)業(yè)務(wù)處理系統(tǒng)、隊(duì)列切割程序包、數(shù)據(jù)庫(kù)存儲(chǔ)程序包、消息推送程序包。將消息處理與業(yè)務(wù)處理解耦,有效并準(zhǔn)確地記錄發(fā)送的消息,并提供了程序異?;虿僮飨到y(tǒng)異常時(shí)的恢復(fù)機(jī)制。
目前多數(shù)短信平臺(tái)只針對(duì)短信發(fā)送渠道開(kāi)通上行回復(fù)功能,所有上行回復(fù)打包放到數(shù)據(jù)池中,用戶抓取時(shí)無(wú)法甄別每條短信具體的下行發(fā)送者,還存在接收時(shí)效性差、短信丟失量多等問(wèn)題[7]。
本系統(tǒng)每日下行短信發(fā)送量約30000條,為了實(shí)現(xiàn)下行發(fā)送內(nèi)容與上行回復(fù)內(nèi)容的一一對(duì)應(yīng),同時(shí)保證用戶能收到三天以內(nèi)的上行回復(fù),為每條下行短信附加了五位擴(kuò)展碼(從0到99999),按照發(fā)送和接收兩個(gè)模塊進(jìn)行了設(shè)計(jì)開(kāi)發(fā),如圖3所示。
發(fā)送模塊:每條短信下發(fā)時(shí),首先記錄擴(kuò)展碼N,并判斷N是否為0-99999中的任意數(shù)字,如果是,調(diào)用發(fā)送接口發(fā)送短信,同時(shí)擴(kuò)展碼+1;如果不是,說(shuō)明擴(kuò)展碼已到達(dá)上限99999,歸零重新開(kāi)始記錄。
圖3 短信發(fā)送模塊附加擴(kuò)展碼流程圖
接收模塊:收到上行回復(fù)消息后,根據(jù)擴(kuò)展碼、回復(fù)手機(jī)號(hào)、回復(fù)時(shí)間去查找數(shù)據(jù)庫(kù)里面的消息記錄,然后把短信內(nèi)容記錄到對(duì)應(yīng)短信的回復(fù)內(nèi)容中。
接口設(shè)計(jì)為“應(yīng)用系統(tǒng)”用戶封裝了可直接調(diào)用的接口,包括 “渠道獲取接口、消息發(fā)送接口、消息查詢接口[8]”等。接口調(diào)用路徑說(shuō)明如表2所示。
表2 接口調(diào)用路徑說(shuō)明
接口設(shè)計(jì)思路:
(1)獲取用戶的請(qǐng)求參數(shù);
(2)對(duì)參數(shù)進(jìn)行相關(guān)的認(rèn)證、過(guò)濾等處理;
(3)將消息分配到不同的渠道接收器;
(4)不同的渠道接收器接收到消息后將消息放入發(fā)送隊(duì)列;
(5)多線程讀取發(fā)送隊(duì)列的消息進(jìn)行發(fā)送;
(6)將發(fā)送的結(jié)果及消息存儲(chǔ)到數(shù)據(jù)庫(kù)。
西安交通大學(xué)統(tǒng)一消協(xié)作系統(tǒng)已于2017年6月正式上線使用,作為校內(nèi)消息即時(shí)、高效上傳下達(dá)的核心,實(shí)現(xiàn)了短信和郵件的統(tǒng)一發(fā)送、統(tǒng)一監(jiān)管和安全審計(jì),短信還支持上行回復(fù)到每位發(fā)送者。目前系統(tǒng)已經(jīng)有150余名教職工用戶、40多個(gè)應(yīng)用系統(tǒng)賬號(hào),累計(jì)發(fā)送短信達(dá)76.7萬(wàn)條、郵件6.6萬(wàn)封。
基于B/S構(gòu)建的統(tǒng)一消息協(xié)作系統(tǒng)集成了多種消息組件,通過(guò)標(biāo)準(zhǔn)化的消息接口對(duì)各類(lèi)消息進(jìn)行統(tǒng)一處理,提供短信、郵件、即時(shí)通信等多種消息交換功能;研究了高校用戶體系,將消息接收者擴(kuò)充為部門(mén)通訊錄、家長(zhǎng)通訊錄、個(gè)人通訊錄、常用聯(lián)系人、群組聯(lián)系人,為發(fā)送對(duì)象提供多元化選擇。采用先進(jìn)的Web應(yīng)用開(kāi)發(fā)技術(shù),支持并發(fā)多進(jìn)程、多用戶。
隨著數(shù)字校園的不斷發(fā)展,以及統(tǒng)一身份認(rèn)證和數(shù)據(jù)中心的不斷建設(shè),校內(nèi)用戶的信息采集和數(shù)據(jù)的動(dòng)態(tài)維護(hù)會(huì)更加完善,統(tǒng)一消息協(xié)作系統(tǒng)也將逐步優(yōu)化。未來(lái)考慮利用跨域認(rèn)證和多租戶架構(gòu),實(shí)現(xiàn)面向聯(lián)盟用戶(兄弟院校)開(kāi)放基于PaaS平臺(tái)的統(tǒng)一消息協(xié)作系統(tǒng),讓不同認(rèn)證用戶之間實(shí)現(xiàn)資源共享。