陶昀翔,陳萬順 ,王 鈞,吳 雷
(蕪湖職業(yè)技術(shù)學院,安徽 蕪湖241003)
近年來,高校信息服務(wù)建設(shè)發(fā)展迅速,多數(shù)高校都基于信息管理系統(tǒng)模式進行了一至兩輪的數(shù)字校園建設(shè)[1]。隨著業(yè)務(wù)的發(fā)展,應(yīng)用需要不斷迭代更新,傳統(tǒng)的單體應(yīng)用暴露出諸多問題:單體應(yīng)用復雜度高,擴展能力受限,代碼冗余,接口調(diào)用復雜,應(yīng)用邊界模糊,功能歸屬不明確,數(shù)據(jù)庫不易重構(gòu)和優(yōu)化等。隨著項目的擴展,從開發(fā)、測試到部署、后期運維等環(huán)節(jié)愈發(fā)困難。在頂層設(shè)計上,可以微服務(wù)架構(gòu)為指導[2-3],確定高校信息化服務(wù)架構(gòu)的實施支撐框架,現(xiàn)以某高校第二課堂系統(tǒng)為例對微服務(wù)系統(tǒng)應(yīng)用進行構(gòu)建。
第二課堂系統(tǒng)包括項目管理、教學管理、成績轉(zhuǎn)換等功能。可通過對學生參與第二課堂情況的記錄、評價、認證來激發(fā)學生自主學習的動力,最終形成科學反映學生全面發(fā)展情況的第二課堂成績單,為建設(shè)第二課堂育人體系提供服務(wù)。
1.2.1 穩(wěn)定性原則
第二課堂系統(tǒng)使用頻繁,對服務(wù)器穩(wěn)定性要求較高,尤其是大量大型報告講座同時簽到時,系統(tǒng)要能滿足日常工作實際需求,做到合理分配任務(wù),反應(yīng)高效靈敏。
1.2.2 兼容性原則
運行環(huán)境要兼容學校服務(wù)器需求,兼容不同的操作系統(tǒng)(客戶端、瀏覽器),兼容不同品牌手機移動終端,支持不同移動平臺進行集成,如微信、小程序等。還要兼容學校門戶信息,實現(xiàn)統(tǒng)一ID(學號或工號)登錄。用戶相關(guān)信息要定期同步更新,減少維護成本。
1.2.3 可擴展性原則
系統(tǒng)在業(yè)務(wù)流程、審核流程、架構(gòu)、技術(shù)選型等方面都有著較好的擴展性。系統(tǒng)可隨時按照不同的關(guān)鍵詞組合產(chǎn)生相應(yīng)的數(shù)據(jù)統(tǒng)計報表,形成不同維度的第二課堂成績單大數(shù)據(jù)展示圖。學校管理層面能夠提供有效的決策輔助,學生層面能夠體現(xiàn)出成長畫像、學習趨勢等,教師層面能夠?qū)ぷ髁窟M行有效量化。
針對上述原則需求,從微服務(wù)架構(gòu)、消息隊列、工作流引擎、組件化交付、接口共享化及數(shù)據(jù)報表等維度對系統(tǒng)進行設(shè)計,如圖1所示。
圖1 業(yè)務(wù)系統(tǒng)框架Fig.1 Business system frame
2.1 微服務(wù)技術(shù)框架
不同于單體服務(wù)架構(gòu),微服務(wù)架構(gòu)的核心是將業(yè)務(wù)拆分成耦合度較高的微型服務(wù)[4-5],不同服務(wù)可以用不同語言進行開發(fā),服務(wù)之間通過REST接口進行協(xié)作,每個服務(wù)可以有獨立的數(shù)據(jù)存儲,如圖2所示。
圖2 微服務(wù)應(yīng)用模式Fig.2 Microservice application mode
第二課堂系統(tǒng)要求遵循平臺軟件的設(shè)計思路進行設(shè)計,具有開放性和可擴展性,方便與其他應(yīng)用系統(tǒng)的集成和數(shù)據(jù)傳遞。系統(tǒng)基于企業(yè)級應(yīng)用開發(fā)平臺J2EE,采用B/S三層架構(gòu)、SOA等技術(shù)和微服務(wù)架構(gòu)模式,基于MySQL數(shù)據(jù)庫管理系統(tǒng)進行設(shè)計開發(fā),遵循Web Services和標準化編碼等技術(shù)標準,支持二次應(yīng)用擴展,滿足了基礎(chǔ)數(shù)據(jù)與業(yè)務(wù)流程可定制的系統(tǒng)靈活性、可擴展性需求,能實現(xiàn)與各應(yīng)用系統(tǒng)的統(tǒng)一身份認證和單點登錄應(yīng)用。
系統(tǒng)引入了高效的消息推送機制,為大批量消息推送的情景提供了保障,比如學生關(guān)注了項目庫,在項目庫進行項目發(fā)布后,會提醒已經(jīng)關(guān)注的學生群體,能夠有效保障消息推送的時效性且保證消息內(nèi)容不丟失。該功能基于ActiveMQ,它是能力強勁的開源消息隊列中間件,能夠使用消息隊列,采用異步的方式將信息寫入數(shù)據(jù)庫,消除高并發(fā)的流量高峰,加快平臺的響應(yīng)速度。
考慮到本地系統(tǒng)建設(shè)中含有流程審批的業(yè)務(wù),整個技術(shù)層面將集成工作流引擎??赏ㄟ^界面化元素拖拽的方式來確定業(yè)務(wù)流程及環(huán)節(jié)審批角色,若后續(xù)流程環(huán)節(jié)及審批角色發(fā)生改變,無需再次進行代碼開發(fā),通過界面配置即可。
系統(tǒng)基于現(xiàn)有需求完成建設(shè)后,將進入運行迭代階段。該階段將不斷收集用戶改進建議和新增需求,以適應(yīng)系統(tǒng)持續(xù)開發(fā)、快速交付的模式。系統(tǒng)引入了SOA技術(shù),即基于服務(wù)的框架結(jié)構(gòu)(Service-Oriented Architecture)??衫肧OA技術(shù)將各功能模塊封裝成一個個服務(wù),對外提供統(tǒng)一訪問接口。此技術(shù)構(gòu)建有助于應(yīng)用擴展與重組,開發(fā)效率大大提升,可以很容易實現(xiàn)與異構(gòu)外部系統(tǒng)的無縫應(yīng)用集成。
系統(tǒng)和學?,F(xiàn)有的統(tǒng)一身份認證平臺集成,將用戶、組織機構(gòu)數(shù)據(jù)通過同步的方式接入系統(tǒng)。系統(tǒng)通過Web Service/RestFul接口實現(xiàn)對平臺內(nèi)部各系統(tǒng)之間及與外部聯(lián)動系統(tǒng)之間的協(xié)同應(yīng)用和數(shù)據(jù)交換,以實現(xiàn)數(shù)據(jù)的可兼容性。平臺、系統(tǒng)、數(shù)據(jù)庫具有無關(guān)性等特點,接口實現(xiàn)不用關(guān)心各系統(tǒng)內(nèi)部實現(xiàn)細節(jié),大大降低了系統(tǒng)對接的難度,確保了系統(tǒng)整體架構(gòu)的松耦合性和穩(wěn)定性。
在數(shù)據(jù)分析功能模塊中,系統(tǒng)將通過圖形報表中間件來進行報表設(shè)計。圖形報表中間件提供了多種多樣的圖表組件,如柱狀圖、線形圖、熱點圖等,可用于任何網(wǎng)頁的腳本語言,類似于HTML、ASP.Net、JSP、PHP、ColdFusion等??墒褂肑SON作為數(shù)據(jù)接口,充分利用線體美麗的HTML5創(chuàng)建具有緊湊性、互動性的視覺逮捕圖表。圖形報表中間件將圖表與Ajax應(yīng)用程序或JavaScript模塊結(jié)合起來,實現(xiàn)了異步刷新。同時,展示的圖形報表還提供了數(shù)據(jù)鉆取功能。
系統(tǒng)性能會直接影響用戶體驗。衡量系統(tǒng)性能的主要指標有吞吐量、并發(fā)量、訪問時間等。第二課堂系統(tǒng)要求支持并發(fā)10 000以上用戶的同時訪問,在網(wǎng)絡(luò)穩(wěn)定的情況下,訪問響應(yīng)時間在3 s以內(nèi),操作新增、修改、瀏覽一條記錄的時間也要控制在3 s以內(nèi)。在面對大數(shù)據(jù)量統(tǒng)計、查詢等復雜操作時,響應(yīng)時間不大于15 s。
系統(tǒng)面向的群體是學生和教職工,存在著高并發(fā)的情況,需使用源地址哈希法、輪詢法、隨機法、加權(quán)輪詢法、加權(quán)隨機法、最小連接數(shù)法等負載均衡技術(shù)進行處理,把任務(wù)分攤到多個操作單元上執(zhí)行。
在數(shù)據(jù)層和應(yīng)用層之間增加數(shù)據(jù)緩存層,利用NoSQL中間件,如Redis、MongoDB存儲非結(jié)構(gòu)化數(shù)據(jù)和項目類別、項目標簽、項目形式等,提供全局數(shù)據(jù)服務(wù),大大減少數(shù)據(jù)庫往返次數(shù),充分利用大內(nèi)存。共享內(nèi)存更容易實現(xiàn)數(shù)據(jù)并發(fā)訪問。
對數(shù)據(jù)庫的默認配置進行調(diào)整優(yōu)化,合理采用索引、存儲過程、數(shù)據(jù)多級緩存技術(shù),盡量減少關(guān)聯(lián)查詢、模糊查詢。
系統(tǒng)應(yīng)具備良好的安全保障機制,應(yīng)從系統(tǒng)網(wǎng)絡(luò)環(huán)境、數(shù)據(jù)庫安全、操作系統(tǒng)安全策略、系統(tǒng)自身安全技術(shù)等方面整體保障系統(tǒng)的安全穩(wěn)定運行。要對系統(tǒng)數(shù)據(jù)采取加密措施,保障重要數(shù)據(jù)的安全性。
3.5.1 認證授權(quán)
保證用戶的合法性和用戶使用信息資源的權(quán)力,避免內(nèi)部敏感信息泄漏和服務(wù)所提供的信息資源被非法訪問。
3.5.2 信息保密
對于需要保密的信息采用密碼技術(shù)進行加解密處理,防止信息的非授權(quán)泄漏,確保涉密信息在產(chǎn)生、存儲、傳遞和處理過程中的保密性。
3.5.3 數(shù)據(jù)完整性
建立數(shù)據(jù)完整性檢驗機制,保證收發(fā)雙方數(shù)據(jù)的一致性,防止信息被非授權(quán)修改。
3.5.4 安全審計及備份
記錄應(yīng)用日志,對事件進行分析并提供預警信息。可利用數(shù)據(jù)庫的備份功能將平臺和系統(tǒng)的數(shù)據(jù)備份到指定的服務(wù)器或存儲系統(tǒng)上。
系統(tǒng)部署以安全、穩(wěn)定、高效為原則,采用集群方式部署應(yīng)用系統(tǒng),各服務(wù)器資源可實現(xiàn)切換,減少單點故障數(shù)量,實現(xiàn)集群化資源的高可用性,如圖3所示。
圖3 系統(tǒng)部署示意圖Fig.3 System deployment schematic diagram
因平臺用戶及訪問量的基數(shù)過大,一臺服務(wù)器租用已經(jīng)不能滿足應(yīng)用需求,需要多臺服務(wù)器集群,使用負載均衡,配備一臺或多臺分布式文件系統(tǒng),將系統(tǒng)中的文件進行轉(zhuǎn)儲,保證大文件傳輸過程中的穩(wěn)定性。部署時應(yīng)配備一臺或多臺分布式NoSQL服務(wù)器,存儲平臺運行中產(chǎn)生的非結(jié)構(gòu)化數(shù)據(jù),在數(shù)據(jù)訪問量大的時候減少持久化數(shù)據(jù)層的數(shù)據(jù)讀取寫入壓力,保證平臺性能。要部署消息中間件,解決系統(tǒng)中應(yīng)用解耦、異步消息、流量削鋒等問題,實現(xiàn)高性能、高可用、可伸縮和最終一致性架構(gòu)。要使用多臺服務(wù)器配置讀寫分離策略,減少數(shù)據(jù)庫壓力,提高性能??膳c學校數(shù)據(jù)中心集成,使用ETL工具同步數(shù)據(jù)并對數(shù)據(jù)進行清洗,去除臟數(shù)據(jù)。