劉則芬,齊 梅,樊 浩,李 升
(安徽開放大學,合肥 230022)
安徽開放大學非學歷培訓業(yè)務已成為學校發(fā)展的重要支撐。近幾年,基于安徽專技在線平臺培訓的非學歷教育年平均人次均超過50萬。該平臺建設時主要針對公需科目培訓,按照注冊50萬人,在線2萬人設計的。現(xiàn)有平臺存在以下問題:(1)業(yè)務代碼復雜且量大,業(yè)務之間的耦合度非常高,導致平臺的維護難度大、維護成本高;隨著業(yè)務復雜度的增加,給培訓管理工作帶來許多不便,增加很多工作量。(2)平臺頂層設計的局限性,起初設計的單一培訓模式已經(jīng)無法滿足多樣化的培訓需求,平臺在可擴展性、可移植性以及靈活性等方面存在問題。(3)系統(tǒng)錯誤隔離性差,任何一個業(yè)務模塊出現(xiàn)錯誤,可能造成整個系統(tǒng)宕機,且問題定位難度大,更新部署后可能會出現(xiàn)新的問題,導致功能更新速度慢。(4)系統(tǒng)啟動慢,一個進程包含了所有的業(yè)務邏輯,涉及的啟動模塊多,導致系統(tǒng)的啟動周期過長,用戶體驗滿意度不高。隨著非學歷培訓業(yè)務的不斷拓展,培訓內(nèi)容、培訓領域不斷擴大,培訓形式、合作方式及培訓政策等復雜多樣,為了更好地應對各種變化,需要構(gòu)建一套業(yè)務中臺,形成較為穩(wěn)定的業(yè)務層,基于業(yè)務中臺快速搭建小前臺,在業(yè)務操作中快速滿足業(yè)務變化的需要。而目前的培訓平臺使用傳統(tǒng)的單體式架構(gòu),將所有業(yè)務模塊都打包在一個應用里面運行,各個模塊耦合嚴重,存在開發(fā)效率低、代碼維護難、部署不靈活、穩(wěn)定性和擴展性不高等問題。
為了解決現(xiàn)階段非學歷培訓平臺出現(xiàn)的問題,本文提出了基于微服務架構(gòu)和數(shù)據(jù)中臺的非學歷培訓平臺,將多種培訓業(yè)務系統(tǒng)中具有共同性和通用性的功能提取、剝離,形成符合非學歷教育培訓特點的服務共享層,從而將高度耦合的業(yè)務功能分解到各個分散的微服務中,以實現(xiàn)對業(yè)務系統(tǒng)的解耦。使用數(shù)據(jù)中臺技術(shù),通過數(shù)據(jù)采集、清洗、計算、存儲、分析等,構(gòu)建非學歷數(shù)據(jù)服務層,打破業(yè)務和數(shù)據(jù)孤島,滿足智能化、數(shù)字化的現(xiàn)代培訓業(yè)務需求。
微服務架構(gòu)是一種將一個單一應用程序開發(fā)為一組小型服務的方法,每個服務運行在自己的進程中,服務間通信采用“輕量級通信機制”[1-2]。這些服務圍繞業(yè)務能力進行構(gòu)建并且可通過自動部署機制獨立部署,這些服務共用一個小型的集中式管理,可用不同的語言開發(fā),使用不同的數(shù)據(jù)存儲技術(shù)[3],從而能夠很好地解決單體式架構(gòu)出現(xiàn)的問題。目前該技術(shù)在各個領域應用廣泛,韓笑等人利用微服務架構(gòu)對新聞制作系統(tǒng)進行了優(yōu)化和實現(xiàn),提升了系統(tǒng)可擴展性、靈活性以及開發(fā)效率[4];曹斌等人采用微服務技術(shù)對系統(tǒng)進行重建,使HIS系統(tǒng)更易修改,擴展性更強[5];洪柏樺等人使用微服務架構(gòu)能夠?qū)€上的課程進行有效管理,滿足用戶的個性化需求[6];吳雨渲等人通過使用微服務架構(gòu)解決了個人健康管理系統(tǒng)在實際應用過程中產(chǎn)生的問題,使系統(tǒng)更具有可擴展性和容錯性,節(jié)約了開發(fā)和維護成本[7];李京輝使用基于微服務架構(gòu)和中臺技術(shù)滿足了智慧營區(qū)綜合管控需求,提升部隊指揮決策、管理服務水平和生活服務水平[8]。使用微服務架構(gòu)將業(yè)務拆分能夠使項目復雜度降低,單個微服務啟動快,靈活應對業(yè)務的變化,提高項目的可擴展性。本文將微服務架構(gòu)應用到非學歷培訓平臺上,結(jié)合中臺技術(shù),實現(xiàn)更小粒度的分庫+讀寫分離模式架構(gòu),以提升平臺性能和可靠性。下面給出了詳細設計。
合理搭建非學歷培訓平臺整體架構(gòu),構(gòu)建一體化的培訓流程,從根本上決定了安徽開放大學非學歷培訓業(yè)務的服務規(guī)模和實現(xiàn)水平。非學歷培訓平臺使用Spring Cloud框架來搭建微服務,制定開放、規(guī)范的技術(shù)標準,實現(xiàn)業(yè)務系統(tǒng)的建設不再以沉重的單體應用系統(tǒng)為單位,而以解耦后重構(gòu)的微應用為單位。將若干具有獨立功能的微服務,組合成為能夠滿足某個場景使用需求的微應用,大大提高培訓業(yè)務信息建設的靈敏度和迭代升級速度。通過梳理和細化各類非學歷教育教學管理過程,將具有共同性的或通用性較高的業(yè)務功能,統(tǒng)一剝離出來,形成業(yè)務中臺,使學習過程業(yè)務功能顆?;?,業(yè)務流程組裝模塊化。數(shù)據(jù)中臺將平臺不同數(shù)據(jù)源的業(yè)務數(shù)據(jù)進行加工處理,為各種業(yè)務提供統(tǒng)一的數(shù)據(jù)支持服務。
基于微服務架構(gòu)和中臺技術(shù)的非學歷培訓平臺總體架構(gòu)從下至上分為四層:網(wǎng)絡通信層、基礎設施層、中臺服務層、應用系統(tǒng)層。外加兩個方面的支撐保障體系。分層設計使平臺更好地支撐各類綜合業(yè)務,將系統(tǒng)劃分成相互獨立且功能單一的多個微服務。系統(tǒng)的總體架構(gòu)如圖1所示。
圖1 系統(tǒng)總體架構(gòu)
1.網(wǎng)絡通信層
該層是非學歷培訓平臺建設的基礎,為各系統(tǒng)建提供通信鏈路及數(shù)據(jù)傳輸通道,使用的是校園有限網(wǎng)絡、WIFI無線網(wǎng)絡、4G/5G移動網(wǎng)絡等通信技術(shù)。
2.基礎設施層
該層包括服務器、存儲、安全等建設內(nèi)容,建立基礎運行環(huán)境,從數(shù)據(jù)傳輸、計算、安全等方面,確保系統(tǒng)安全可靠、穩(wěn)定高效、簡單實用。通過搭建私有云和采用公有云混合服務模式,建立一個穩(wěn)定可靠、性能良好、資源利用率高、可伸縮性強的混合云計算基礎架構(gòu),為整個系統(tǒng)提供計算資源和存儲資源的虛擬化分配、調(diào)度和管理服務。
3.中臺服務層
中臺服務層為平臺提供數(shù)據(jù)、消息、認證等標準和規(guī)范。通過數(shù)據(jù)中臺和業(yè)務中臺的建設,為非學歷培訓的各種業(yè)務進行抽象,形成一系列可支撐應用的共性業(yè)務服務和數(shù)據(jù)支撐服務。
4.應用系統(tǒng)層
建設應用系統(tǒng)統(tǒng)一展示的門戶,實現(xiàn)信息的集中化訪問。該層是各類服務和應用的主要入口,包括共用資訊、應用入口、統(tǒng)一身份認證,以及聚合數(shù)據(jù)展示,各業(yè)務系統(tǒng)所提供的非學歷培訓用戶界面、用戶交互邏輯、業(yè)務服務展示。其主要功能有面向各級各類學習者、教師和管理者提供的教學、管理、數(shù)字化資源和大數(shù)據(jù)分析等一系列應用服務。
5.支撐保障體系
包括保障網(wǎng)絡傳輸和業(yè)務系統(tǒng)信息安全體系,以及保障軟硬件等基礎設施和應用系統(tǒng)穩(wěn)定運行的信息化運維服務體系。該體系為非學歷平臺的高效運行提供有效的保障。
根據(jù)非學歷培訓的業(yè)務需求,其主要由云基礎設施平臺、數(shù)據(jù)中臺、業(yè)務中臺、前臺應用系統(tǒng)、后臺應用系統(tǒng)及標準規(guī)范和運維體系、信息安全保障體系等構(gòu)成。系統(tǒng)的邏輯結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)邏輯架構(gòu)
1.云基礎設施平臺
通過搭建私有云和采用公有云混合服務模式,建立穩(wěn)定可靠、性能良好、資源利用率高、可伸縮性強的混合云計算基礎框架,為平臺提供計算服務、數(shù)據(jù)庫服務、存儲服務、文件服務、日志服務、網(wǎng)絡服務、大數(shù)據(jù)服務以及容器服務。
2.數(shù)據(jù)中臺
數(shù)據(jù)中臺是為了創(chuàng)新驅(qū)動快速變化的前臺和穩(wěn)定可靠驅(qū)動變化周期相對慢的后臺之間的矛盾而存在的,其支持以用戶為中心的持續(xù)規(guī)模化的創(chuàng)新,并持續(xù)提高企業(yè)對用戶的響應力。數(shù)據(jù)中臺通過現(xiàn)有的數(shù)據(jù)抽取、轉(zhuǎn)換、清洗等手段,以業(yè)務為導向,形成高準確性、權(quán)威性的非學歷培訓數(shù)據(jù)倉庫,并對數(shù)據(jù)分析和展示端提供通用的、標準化的數(shù)據(jù)服務,使數(shù)據(jù)能夠充分在各個業(yè)務環(huán)節(jié)和部門實時流通,有效解決培訓業(yè)務系統(tǒng)中目前存在的數(shù)據(jù)孤島、數(shù)據(jù)不一致和數(shù)據(jù)維護混亂等問題。數(shù)據(jù)中臺主要包括數(shù)據(jù)資產(chǎn)、數(shù)據(jù)集成、數(shù)據(jù)計算、數(shù)據(jù)服務、數(shù)據(jù)展示、數(shù)據(jù)搜索等服務,以及面向業(yè)務的數(shù)據(jù)資產(chǎn)。
3.業(yè)務中臺
梳理和細化安徽開放大學非學歷教育所有業(yè)務,通過分解業(yè)務特征,細化業(yè)務功能,將具有共同性的或通用性較高的功能,統(tǒng)一剝離出來,高度抽象,形成細粒度化的微服務,統(tǒng)一沉淀至業(yè)務中臺,為各類型培訓業(yè)務應用系統(tǒng)提供高復用性,靈活、敏捷的中間層支撐共享服務。通過業(yè)務梳理,從非學歷培訓業(yè)務系統(tǒng)中全面歸納、抽取、提煉服務功能,在明確微服務的定義和劃分原則的基礎上,按照統(tǒng)一標準進行分工開發(fā)。提煉的服務按功能分為若干微服務組,每組微服務組包括若干微服務。例如:支撐服務組(包括語音識別服務、智能搜索服務、智能推薦服務、智能客服服務、人臉識別服務等),學習服務組(包括預學習服務、學習記錄服務、學習任務單服務等),用戶服務組,資源服務組,教務服務組,教學服務組,考核服務組,學習成果服務組,直播服務組,消息服務組等等。
4.前臺應用系統(tǒng)
根據(jù)非學歷培訓的業(yè)務需求,建立統(tǒng)一門戶頁面,為所有參加安徽開放大學培訓的各類學員、教師、管理人員等提供一個統(tǒng)一門戶,統(tǒng)一入口,通過此入口可以登錄、注冊,進入各類站群業(yè)務系統(tǒng),進入多身份空間,進入統(tǒng)一管理后臺。
5.后臺應用系統(tǒng)
后臺應用系統(tǒng)支持多管理者、多角色、動態(tài)可配置的統(tǒng)一后臺管理系統(tǒng),構(gòu)建系統(tǒng)管理、運營管理、業(yè)務管理、數(shù)據(jù)管理、運維管理等。一個管理員可以一次性管理多個站點,并且可以在多個站點間進行新聞、資源、課程、培訓項目、活動相關(guān)數(shù)據(jù)的分享(上報、下發(fā),平級分享)等。
6.標準規(guī)范和運維體系
建設統(tǒng)一的數(shù)據(jù)和協(xié)議標準,構(gòu)建行之有效的運維體系,全面支撐數(shù)據(jù)中心基礎設施、云平臺、數(shù)據(jù)、應用、安全等各方面的運維服務,確保系統(tǒng)安全可靠運行。
7.信息安全防護體系
建設云平臺統(tǒng)一的安全防護體系,具備全面軟硬立體的攻擊防御和安全審計能力。
非學歷培訓平臺在設計時為了方便學員更好地使用各種客戶端,如PC端、移動App、微信小程序、微信公眾號、移動端h5網(wǎng)站、支付寶小程序等,采用不同的標準,各系統(tǒng)之間相互獨立,數(shù)據(jù)無法實時更新,信息和資源無法進行實時共享,形成信息孤島。構(gòu)建非學歷培訓平臺的用戶指標分析體系,包括用戶統(tǒng)計、用戶行為統(tǒng)計、資源統(tǒng)計、用戶行為分析等,構(gòu)建采集器、日志、數(shù)據(jù)庫等各類結(jié)構(gòu)和非結(jié)構(gòu)化數(shù)據(jù)源上報引擎,將數(shù)據(jù)采集上報到非學歷教育培訓平臺的大數(shù)據(jù)管理模塊。通過大數(shù)據(jù)管理模塊,使用統(tǒng)一的標準和口徑,對數(shù)據(jù)進行分析,構(gòu)建非學歷教育培訓平臺的可視化分析系統(tǒng)和數(shù)據(jù)大屏可視化展示系統(tǒng)。大數(shù)據(jù)分析平臺的設計如圖3所示。
圖3 大數(shù)據(jù)分析微服務平臺設計
該模塊使用了數(shù)據(jù)中臺技術(shù),利用線上平臺、線下活動工具、手工導入等方式采集的數(shù)據(jù),使用統(tǒng)一的標準和接口進行計算、存儲、開發(fā)、可視化展示一站式處理。為平臺用戶提供統(tǒng)一的查詢服務、資源統(tǒng)計服務、標簽服務、用戶行為分析服務、用戶指標分析服務、數(shù)據(jù)產(chǎn)出服務。大數(shù)據(jù)分析平臺有效解決了不同媒介之間的信息孤島問題,實現(xiàn)平臺的信息和資源的數(shù)據(jù)共享。
交易中心為學員在線付費學習提供一站式在線服務,是整個非學歷培訓平臺建設的重要內(nèi)容。其服務的對象是參加非學歷培訓的學員、平臺的管理人員和財務人員。交易中心通過對原有的業(yè)務流程進行梳理和分解,對重構(gòu)后的業(yè)務流程進行服務重組,將業(yè)務流程進行優(yōu)化,實現(xiàn)創(chuàng)新的服務模式和服務碎片化的管理。交易中心微服務設計的基本思路是:從學員用戶的視角,圍繞學員在線報名繳費的流程,對業(yè)務的流程進行重構(gòu)。業(yè)務流程由用戶自主發(fā)起,用戶可全程把控流程辦理的進度。具體實施步驟:根據(jù)非學歷培訓的報名流程對所涉及的業(yè)務進行劃分,編制交易中心微服務的總體需求,進一步對流程進行細化,對流程進行面向服務的梳理,重構(gòu)業(yè)務流程。交易中心微服務設計如圖4所示。
圖4 交易中心微服務設計
交易中心微服務通過細粒度劃分復雜的業(yè)務,將其變成面向用戶的最小服務單元,通過一個統(tǒng)一的界面提供給用戶,增加用戶對非學歷培訓平臺的黏度,提高該平臺的使用價值。
1.服務的注冊與發(fā)現(xiàn)
非學歷培訓平臺微服務的實現(xiàn)使用SpringCloud技術(shù)框架,實現(xiàn)對微服務運行中的狀態(tài)監(jiān)控、微服務運行異常時的治理策略配置等場景,保障微服務在常見異常場景下的自恢復能力。系統(tǒng)使用Eureka框架實現(xiàn)服務的注冊和發(fā)現(xiàn)。Eureka是Netflix開發(fā)的服務發(fā)現(xiàn)框架,主要用于定位運行在AWS域中的中間層服務,以達到負載均衡和中間層服務故障轉(zhuǎn)移的目的。一個Eureka中分為EurekaServer和Eureka Client,其中EurekaServer是作為服務的注冊與發(fā)現(xiàn)中心,Eurekaclient既可以作為服務的生產(chǎn)者,又可以作為服務的消費者。在應用啟動后,將會向EurekaServer發(fā)送心跳,默認周期為30秒。如果EurekaServer在多個心跳周期內(nèi)沒有接收到某個節(jié)點的心跳,EurekaServer將會從服務注冊表中把這個服務節(jié)點移除(默認90秒)。Eureka通過心跳檢查、客戶端緩存等機制,確保了系統(tǒng)的高可用性、靈活性和可伸縮性。
2.服務網(wǎng)關(guān)
客戶端的微服務請求通過服務網(wǎng)關(guān)進行轉(zhuǎn)發(fā),網(wǎng)關(guān)為外部服務提供統(tǒng)一入口訪問內(nèi)部微服務,在SpringCloud框架中,SpringCloudZuul封裝了Zuul組件,作為一個API網(wǎng)關(guān),負責提供負載均衡、反向代理、動態(tài)路由、靜態(tài)資源處理和權(quán)限認證等功能。Zuul的核心就是過濾器,Zuul基于Servlet實現(xiàn)。當服務網(wǎng)關(guān)收到客戶端請求后,會先進入pre過濾器,在pre過濾器執(zhí)行完后,接著就到了routing過濾器中,開始路由到具體的業(yè)務服務中,并執(zhí)行業(yè)務邏輯后返回,當遇到錯誤的情況會被錯誤過濾器攔截。
3.熔斷隔離機制
在平臺運行的過程中,需要做好容錯機制和隔離機制,才能夠避免由于資源耗盡而引起的雪崩效應,避免整個系統(tǒng)癱瘓。為此使用了Netflix開源的一款容錯框架Hystrix,該構(gòu)架能夠?qū)ξ⒎者M行熔斷、降級、限流。使用命令模式將所有的外部服務調(diào)用包裝在HystrixCommand或HystrixObservableCommand對象中,并將該對象放在單獨的線程中執(zhí)行;每個依賴都維護著一個線程池(或信號量),線程池被耗盡則拒絕請求(而不是讓請求排隊),記錄請求成功、失敗、超時和線程拒絕;服務錯誤百分比超過了閾值,熔斷器開關(guān)自動打開,一段時間內(nèi)停止對該服務的所有請求;請求失敗,被拒絕,超時或熔斷時執(zhí)行降級邏輯,近實時地監(jiān)控指標和配置的修改。
結(jié)合安徽開放大學非學歷業(yè)務培訓的特點,使用先進的信息化技術(shù)手段,對中臺建設規(guī)范、微服務進行定義和劃分,設計了基于微服務架構(gòu)和中臺技術(shù)的非學歷培訓平臺。該平臺有效融合了中臺技術(shù),促進了各個業(yè)務系統(tǒng)的有效融合,實現(xiàn)了統(tǒng)一管理、數(shù)據(jù)共享以及應用平臺的開放性、可擴展性等,平臺對原有的業(yè)務系統(tǒng)進行了升級、改造、整合,對未來業(yè)務系統(tǒng)的擴展留有接口,滿足非學歷培訓業(yè)務的個性化需求。非學歷培訓平臺建設業(yè)務流程復雜、業(yè)務數(shù)據(jù)量龐大,如何進行恰當?shù)膭澐峙嘤枠I(yè)務的微服務,是基于微服務架構(gòu)平臺設計的重要課題。下一步將圍繞整合非學歷相關(guān)培訓業(yè)務,結(jié)合分布式、顆粒化、均衡負載等方面做進一步的研究。