洪生 王俊松



DOI:10.19850/j.cnki.2096-4706.2024.02.009
收稿日期:2023-05-10
基金項目:中國高校產(chǎn)學(xué)研創(chuàng)新基金資助項目(2021FNB03002)
摘? 要:職業(yè)院校從信息化向數(shù)字化轉(zhuǎn)型的過程中,傳統(tǒng)中心化、集中式數(shù)據(jù)共享平臺面臨著巨大挑戰(zhàn)。微服務(wù)作為一種去中心化的分布式服務(wù)框架,通過將單體應(yīng)用拆分為多個相互獨(dú)立的服務(wù),可使系統(tǒng)獲得較強(qiáng)的松耦合、高可用、易擴(kuò)展特性。為此,文章提出一種基于微服務(wù)的職業(yè)院校數(shù)據(jù)開放平臺,著重分析了數(shù)據(jù)開放平臺的數(shù)據(jù)標(biāo)準(zhǔn)化和數(shù)據(jù)治理,依據(jù)數(shù)據(jù)分級分類標(biāo)準(zhǔn)將全量數(shù)據(jù)打包成彼此獨(dú)立的微服務(wù),開發(fā)RESTful風(fēng)格的輕量級API服務(wù)接口,有效解決了分布式環(huán)境下的數(shù)據(jù)交換和共享問題。
關(guān)鍵詞:數(shù)據(jù)開放平臺;微服務(wù);API;數(shù)據(jù)治理
中圖分類號:TP315? ? 文獻(xiàn)標(biāo)識碼:A? 文章編號:2096-4706(2024)02-0037-04
Research on Open Data Platform of Vocational Colleges Based on Microservices
HONG Sheng, WANG Junsong
(Information Technology Development Center, Nanjing Vocational College of Information Technology, Nanjing? 210023, China)
Abstract: In the process of vocational colleges transitioning from informatization to digitization, traditional centralized and centralized data sharing platforms face enormous challenges. As a decentralized distributed service framework, microservices can make system achieve strong loose coupling, high availability, and scalability by breaking down individual applications into multiple independent services. For this purpose, this paper proposes a vocational college open data platform based on microservices, focusing on analyzing the data standardization and data governance of the open data platform. Based on the data classification standards, the entire data is packaged into independent microservices, and a RESTful style lightweight API service interface is developed to effectively solve the problem of data exchange and sharing in distributed environments.
Keywords: open data platform; microservice; API; data governance
0? 引? 言
在數(shù)字化校園建設(shè)階段,為打通各類業(yè)務(wù)系統(tǒng),采用中心化服務(wù)框架和集中式數(shù)據(jù)存儲實現(xiàn)業(yè)務(wù)數(shù)據(jù)共享,有效緩解了“數(shù)據(jù)孤島”問題。然而,隨著云計算、人工智能和大數(shù)據(jù)等新型現(xiàn)代信息技術(shù)的快速迭代發(fā)展,職業(yè)院校面臨著從信息化向數(shù)字化轉(zhuǎn)型、管理和服務(wù)向縱深方向發(fā)展的挑戰(zhàn),存在應(yīng)用粒度大、不同模塊間耦合度高、系統(tǒng)更新及軟件維護(hù)成本高、擴(kuò)展能力差等問題。微服務(wù)作為一種去中心化的分布式服務(wù)框架,可以在底層架構(gòu)上將龐大的應(yīng)用系統(tǒng)和服務(wù)分解成體積更小、松耦合的組件,這樣系統(tǒng)可以獲得更高的靈活性、可實施性和擴(kuò)展性[1-3]。
文獻(xiàn)[4]闡述了教育領(lǐng)域數(shù)據(jù)的來源、分類及數(shù)據(jù)開放的標(biāo)準(zhǔn)。文獻(xiàn)[5]提出一種基于微服務(wù)的數(shù)據(jù)開放平臺框架,并將其應(yīng)用到北京大學(xué)信息服務(wù)開放平臺,實現(xiàn)了公共信息服務(wù)、個人信息服務(wù)和受限信息服務(wù)三個微服務(wù)容器。文獻(xiàn)[6]以數(shù)據(jù)中心和網(wǎng)上辦事大廳應(yīng)用場景為例,闡述了一種基于微服務(wù)的智慧校園架構(gòu)。本文提出一種基于微服務(wù)的職業(yè)院校數(shù)據(jù)開放平臺,以服務(wù)為視角,以數(shù)據(jù)共享、互聯(lián)互通為目標(biāo),依托微服務(wù)強(qiáng)大的松耦合、高可用、易擴(kuò)展等特性,將全量數(shù)據(jù)打包成彼此獨(dú)立的微服務(wù)。開發(fā)RESTful風(fēng)格的輕量級API服務(wù)接口,以JSON格式交換和傳輸數(shù)據(jù),有效解決了分布式環(huán)境下的數(shù)據(jù)交換和共享問題。
1? 相關(guān)研究
微服務(wù)是一種軟件架構(gòu)風(fēng)格,其核心思想是:將一個完整的單體應(yīng)用拆分為多個小巧、相互獨(dú)立的微服務(wù),各服務(wù)之間互相協(xié)調(diào)、互相配合[1,2]。這些微服務(wù)運(yùn)行在自己的進(jìn)程當(dāng)中,彼此之間松散耦合。與傳統(tǒng)服務(wù)依賴企業(yè)服務(wù)總線SOA(Service Orienented Architechture)不同,微服務(wù)注重系統(tǒng)的組件化和去中心化。在微服務(wù)架構(gòu)中每個服務(wù)具有明確的自身邊界,不同的微服務(wù)(如REST、RPC等)之間通過輕量級交互機(jī)制實現(xiàn)通信。
表現(xiàn)層狀態(tài)轉(zhuǎn)移(Representational State Transfer, REST)是Roy Thomas Fielding提出的一種萬維網(wǎng)軟件架構(gòu)風(fēng)格,目的是便于不同軟件或程序在網(wǎng)絡(luò)中互相傳遞信息。REST是無狀態(tài)的,請求之間沒有持久的會話信息,響應(yīng)需要聲明成可緩存,請求的資源通常是XML或JSON格式。REST通過在接口上設(shè)置特定約束實現(xiàn)對服務(wù)資源的訪問控制,即客戶端通過HTTP協(xié)議的GET、POST、PUT和DELETE等方法對服務(wù)端資源進(jìn)行CRUD操作,實現(xiàn)表現(xiàn)層狀態(tài)轉(zhuǎn)移。
遠(yuǎn)程過程調(diào)用(remote procedure call, RPC)是一種多語言跨平臺的服務(wù)調(diào)用,能夠使得分布式應(yīng)用像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程服務(wù)提供的方法,而不需要考慮底層的通信細(xì)節(jié)。相較于REST對資源進(jìn)行增刪改查的操作,RPC關(guān)注特定方法與功能的實現(xiàn)。RPC采用TCP或HTTP2協(xié)議進(jìn)行通信,比傳統(tǒng)HTTP1.1協(xié)議的傳輸效率更高,且自帶序列化機(jī)制和負(fù)載均衡機(jī)制,使得它具有性能消耗低、傳輸效率高的優(yōu)點,所以微服務(wù)系統(tǒng)內(nèi)部大多采用RPC進(jìn)行服務(wù)調(diào)用。
2? 職業(yè)院校數(shù)據(jù)開放平臺設(shè)計
職業(yè)院校信息化建設(shè)的早期階段往往聚焦于系統(tǒng)功能的實現(xiàn),從而忽視了數(shù)據(jù)共享與集成的重要性。各業(yè)務(wù)系統(tǒng)采用不同的數(shù)據(jù)標(biāo)準(zhǔn)和格式,導(dǎo)致數(shù)據(jù)共享局限于基礎(chǔ)數(shù)據(jù)共享,數(shù)據(jù)集成存在接口重復(fù)開發(fā)、維護(hù)難的問題。隨著職業(yè)院校信息化建設(shè)的快速發(fā)展,迫切需要采用新的技術(shù)和手段來解決數(shù)據(jù)標(biāo)準(zhǔn)不統(tǒng)一、數(shù)據(jù)共享機(jī)制不健全、數(shù)據(jù)接口開發(fā)難的問題。因此,職業(yè)院校數(shù)據(jù)開放平臺設(shè)計應(yīng)遵循三個原則:統(tǒng)一的數(shù)據(jù)標(biāo)準(zhǔn)、敏捷的開發(fā)體驗、便捷的獲取途徑。
職業(yè)院校數(shù)據(jù)開放平臺框架的邏輯結(jié)構(gòu)大致分為三個層次,如圖1所示。其中,全量數(shù)據(jù)中心層包含各種基礎(chǔ)數(shù)據(jù)源、非結(jié)構(gòu)化的文檔數(shù)據(jù)和ELK日志數(shù)據(jù)[7]。全量數(shù)據(jù)中心層的關(guān)注點主要在于數(shù)據(jù)標(biāo)準(zhǔn)化、數(shù)據(jù)治理及數(shù)據(jù)推送。數(shù)據(jù)源之間不直接進(jìn)行數(shù)據(jù)交換與共享,而是先通過數(shù)據(jù)標(biāo)準(zhǔn)化和ETL工具將標(biāo)準(zhǔn)化的數(shù)據(jù)推送至共享中心,再根據(jù)需要從共享中心獲取其他數(shù)據(jù)源。全量數(shù)據(jù)中心層以視圖的方式向上層提供服務(wù)。微服務(wù)層按照主題不同分為三類:針對教師的微服務(wù)、針對學(xué)生的微服務(wù)以及針對管理的微服務(wù),針對教師的微服務(wù)包括教職工基礎(chǔ)數(shù)據(jù)、科研、職稱、授課、財務(wù)等;針對學(xué)生的微服務(wù)包括學(xué)生基礎(chǔ)數(shù)據(jù)、課表、成績、日常消費(fèi)、學(xué)籍等;針對管理的微服務(wù)包括API注冊管理、申請審核、日志查詢等。API層為各類應(yīng)用系統(tǒng)提供輕量級RESTful接口。
2.1? 數(shù)據(jù)標(biāo)準(zhǔn)化
《教育信息化2.0行動計劃》明確提出探索信息化時代的教育治理新模式,推進(jìn)基于大數(shù)據(jù)的教育方式變革,建立完善的教育公共資源開放目錄,形成規(guī)范統(tǒng)一、互聯(lián)互通、安全可控的國家教育數(shù)據(jù)開放體系[8]。因此,教育治理新模式與數(shù)據(jù)互聯(lián)互通的前提條件是數(shù)據(jù)標(biāo)準(zhǔn)化。數(shù)據(jù)標(biāo)準(zhǔn)化的原則是在遵循國家數(shù)據(jù)標(biāo)準(zhǔn)、行業(yè)數(shù)據(jù)標(biāo)準(zhǔn)規(guī)范的基礎(chǔ)上,制定適合本校長遠(yuǎn)發(fā)展的數(shù)據(jù)標(biāo)準(zhǔn),其主要內(nèi)容包括[9]:
1)數(shù)據(jù)分類與定義。包括主數(shù)據(jù)的分級分類、字段定義、元數(shù)據(jù)的定義等。
2)數(shù)據(jù)標(biāo)準(zhǔn)化管理。包括標(biāo)準(zhǔn)的執(zhí)行、維護(hù)和監(jiān)控。
3)數(shù)據(jù)標(biāo)準(zhǔn)化實施原則。包括開放性(提供統(tǒng)一的開放接口)、完整性(涵蓋各個基礎(chǔ)數(shù)據(jù)源的結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù))、一致性和有效性(數(shù)據(jù)源唯一且準(zhǔn)確)。
無論是對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化、數(shù)據(jù)的確權(quán),還是提供數(shù)據(jù)服務(wù),有效的數(shù)據(jù)分類是第一要務(wù)。數(shù)據(jù)分類往往是從業(yè)務(wù)角度或管理角度出發(fā),按照一定的原則和方法(如:行業(yè)維度、業(yè)務(wù)領(lǐng)域維度、數(shù)據(jù)來源維度、共享維度、數(shù)據(jù)開放維度等)對具有相同屬性或特征的數(shù)據(jù)進(jìn)行歸類。數(shù)據(jù)分類應(yīng)體現(xiàn)“相互獨(dú)立,完全窮盡”(Mutually Exclusive Collectively Exhaustive, MECE)的原則,即同一類別所有的數(shù)據(jù)都得包含在內(nèi);類別之間不允許重復(fù)和交叉;同一層級分類的維度要統(tǒng)一,顆粒度要一致。數(shù)據(jù)定義則主要體現(xiàn)在每一類數(shù)據(jù)各個字段編碼和元數(shù)據(jù),其中字段編碼用來表征該類數(shù)據(jù)具有哪些屬性,對應(yīng)關(guān)系型數(shù)據(jù)庫中的列;元數(shù)據(jù)用來表達(dá)字段所代表的具體含義。
2.2? 數(shù)據(jù)治理
根據(jù)國際數(shù)據(jù)管理協(xié)會的定義,數(shù)據(jù)治理是對數(shù)據(jù)資產(chǎn)的管理行使權(quán)力的活動集合,即數(shù)據(jù)治理是保障數(shù)據(jù)質(zhì)量和實現(xiàn)數(shù)據(jù)價值的過程。通過采集、加工、清洗、傳輸、儲存等一系列標(biāo)準(zhǔn)化流程將原本零散的數(shù)據(jù)轉(zhuǎn)變成格式規(guī)范、結(jié)構(gòu)統(tǒng)一的標(biāo)準(zhǔn)化數(shù)據(jù),同時對其進(jìn)行嚴(yán)格規(guī)范的監(jiān)控,保證數(shù)據(jù)質(zhì)量,形成具有指導(dǎo)意義的數(shù)據(jù)報表、數(shù)據(jù)模型等,以為相關(guān)人員的決策制定提供有力支撐。
職業(yè)院校數(shù)據(jù)治理水平的提升,可從以下幾個方面著手:
1)制度和管理層面。制定《數(shù)據(jù)管理組織的角色權(quán)責(zé)及管理方法》確定數(shù)據(jù)確權(quán);制定《數(shù)據(jù)管理辦法》《數(shù)據(jù)信息標(biāo)準(zhǔn)規(guī)范》《數(shù)據(jù)質(zhì)量管理辦法》《元數(shù)據(jù)質(zhì)量標(biāo)準(zhǔn)及評估指標(biāo)體系》確定數(shù)據(jù)標(biāo)準(zhǔn)化;由校領(lǐng)導(dǎo)牽頭成立信息化工作領(lǐng)導(dǎo)小組,開展頂層設(shè)計,信息中心居中協(xié)調(diào),各職能部門負(fù)責(zé)數(shù)據(jù)源頭控制與治理。
2)數(shù)據(jù)層面。源數(shù)據(jù)系統(tǒng)開發(fā)商在系統(tǒng)研發(fā)過程中應(yīng)嚴(yán)格按照國家級、行業(yè)級數(shù)據(jù)標(biāo)準(zhǔn)編制標(biāo)準(zhǔn)規(guī)范的數(shù)據(jù)字典,提供完整的元數(shù)據(jù)信息,詳細(xì)說明字段含義以及數(shù)據(jù)表之間的關(guān)聯(lián)關(guān)系。同時,在系統(tǒng)部署過程中,應(yīng)嚴(yán)格按照學(xué)校的數(shù)據(jù)標(biāo)準(zhǔn)將數(shù)據(jù)推送至共享中心。
3)安全與質(zhì)量管控層面。一方面要明確數(shù)據(jù)的確權(quán),明確數(shù)據(jù)隱私最終責(zé)任方,加強(qiáng)數(shù)據(jù)源頭管控,確保數(shù)據(jù)質(zhì)量安全可控。另一方面要加強(qiáng)敏感數(shù)據(jù)的分級管理,切忌一刀切不進(jìn)行共享,讓數(shù)據(jù)價值無以發(fā)揮,或無差別、無條件共享,讓數(shù)據(jù)分類分級失去意義。
2.3? RESTful輕量級API服務(wù)
RESTful輕量級API在前端設(shè)計時,使用路徑定位資源,利用方法定義操作,通過Content-Type和Accept協(xié)商資源的類型。每個統(tǒng)一資源標(biāo)識符(Uniform Resource Identifier, URI)代表一種資源,客戶端通過四個HTTP動詞對服務(wù)器端資源進(jìn)行操作,實現(xiàn)“表現(xiàn)層狀態(tài)轉(zhuǎn)化”。URI的設(shè)計要遵循面向客戶端和基于語義理解的原則,如GET/api/v1/student?id=0001,其中api表示API服務(wù),v1表示版本號,student表示學(xué)生基本信息,參數(shù)id表示過濾id為0001的學(xué)生,GET表示獲取學(xué)生信息的動作。URI使用名詞作為路徑,四個HTTP動詞表示動作。
RESTful輕量級API后端實現(xiàn)的核心內(nèi)容包括:
1)動態(tài)路由創(chuàng)建與發(fā)布。無須重啟服務(wù)即可實現(xiàn)修改、創(chuàng)建、刪除和刷新API路由;同時采用路由持久化技術(shù)防止路由丟失,使用緩存技術(shù)提高路由刷新速度。
2)SQL語句動態(tài)解析。相對于靜態(tài)SQL語句,動態(tài)SQL語句通過使用OGNL表達(dá)式實現(xiàn)根據(jù)條件自動拼接、判斷選擇和循環(huán)執(zhí)行SQL語句塊。
3)Token授權(quán)。開放的API需要驗證請求者的身份,以此判斷請求是否合法,基于Token的授權(quán)優(yōu)勢在于應(yīng)用不需要在服務(wù)端保留會話信息即可實現(xiàn)無狀態(tài)、分布式授權(quán)[10]。
3? 應(yīng)用案例
微服務(wù)RPC實現(xiàn)框架,按開發(fā)語言區(qū)分比較有代表性的有:Java語言SpringCloud、Go語言GoMicro和GoZero、Python語言Nameko。本文將Spring Cloud作為微服務(wù)實現(xiàn)框架。Spring Cloud是一款基于Spring Boot實現(xiàn)的微服務(wù)框架,是一系列微服務(wù)解決方案或框架的有序集合。Spring Cloud將較為成熟、經(jīng)過驗證的微服務(wù)框架整合起來,基于Spring Boot 思想對其進(jìn)行再封裝,屏蔽其中復(fù)雜的配置和實現(xiàn)原理,最終為開發(fā)者提供一套通俗易懂、易部署和易維護(hù)的分布式系統(tǒng)開發(fā)工具包。Spring Cloud包含Spring Cloud Eureka、Spring Cloud Config、Spring Cloud Gateway等眾多服務(wù)組件,這些組件提供服務(wù)治理、服務(wù)配置、服務(wù)網(wǎng)關(guān)、服務(wù)熔斷、負(fù)載均衡、鏈路跟蹤、分布式消息隊列和配置管理等功能。
如圖2所示,Eureka注冊中心注冊了3個服務(wù),其中openapi-core-api和openapi-core-mgr是由SpringBoot開發(fā)的單體應(yīng)用openapi-core拆分而來的2個獨(dú)立的微服務(wù)容器,Zuul為微服務(wù)網(wǎng)關(guān),提供網(wǎng)關(guān)功能和熔斷機(jī)制。微服務(wù)網(wǎng)關(guān)路由地址如表1所示。
前端UI界面采用Vue.js實現(xiàn),后端SQL語句動態(tài)解析采用基于Mybaits的ORM框架實現(xiàn),API路由使用MySQL進(jìn)行持久化,APIToken采用JWT和APIkey相結(jié)合的方式實現(xiàn)。如圖3所示,數(shù)據(jù)源提供基于視圖的關(guān)系表。創(chuàng)建API時,使用MyBaits提供的動態(tài)標(biāo)簽編寫SQL腳本。在編寫SQL腳本時,可以根據(jù)參數(shù)的有無及參數(shù)個數(shù)返回不同的數(shù)據(jù)。
在API申請審核時,分配相應(yīng)的token,標(biāo)注請求該API的應(yīng)用名,并記錄每個API的請求次數(shù)。統(tǒng)計結(jié)果顯示API開放指數(shù),如圖4所示,學(xué)生發(fā)展中心和教師發(fā)展中心請求的API最多。
4? 結(jié)? 論
數(shù)據(jù)開放平臺微服務(wù)化有效提升了分布式環(huán)境下的數(shù)據(jù)交換和共享能力。但在實踐過程中仍然有若干問題有待研究和解決:
1)服務(wù)拆分方法的科學(xué)性和合理性。單體應(yīng)用程序拆分成微服務(wù)后,服務(wù)治理是關(guān)鍵,服務(wù)的拆分方法是否科學(xué)合理直接關(guān)系到整個系統(tǒng)的性能。過多的服務(wù)導(dǎo)致服務(wù)之間的RPC調(diào)用變得過于頻繁。因此,需要根據(jù)實際情況進(jìn)行合理劃分。
2)數(shù)據(jù)標(biāo)準(zhǔn)化和數(shù)據(jù)治理能力需要進(jìn)一步加強(qiáng)。數(shù)據(jù)標(biāo)準(zhǔn)化為微服務(wù)層提供標(biāo)準(zhǔn)化的視圖數(shù)據(jù)表,數(shù)據(jù)標(biāo)準(zhǔn)的優(yōu)劣將直接影響數(shù)據(jù)開放平臺的能力。首先要做好數(shù)據(jù)的分級分類、主數(shù)據(jù)和元數(shù)據(jù)定義、字段編碼,建立完整可靠的數(shù)據(jù)字典。其次從制度和管理層面加強(qiáng)數(shù)據(jù)源頭的治理與管控。
3)建立分布式共享中心。隨著數(shù)據(jù)源的增多,業(yè)務(wù)數(shù)據(jù)呈指數(shù)級增長,需要考慮共享中心的分布式存儲、數(shù)據(jù)分表、分頁等問題。
參考文獻(xiàn):
[1] 鐘華.企業(yè)IT架構(gòu)轉(zhuǎn)型之道:阿里巴巴中臺戰(zhàn)略思想與架構(gòu)實戰(zhàn) [M].北京:機(jī)械工業(yè)出版社,2021.
[2] LEWIS J,F(xiàn)OWLER M. Microservices [EB/OL].[2023-04-02].martinfowler.com/articles/microservices.html.
[3] JAMSHIDI P,PAHL C,MENDONCA N,et al. Microservices: The Journey So Far and Challenges Ahead [J].IEEE Software,2018,35(3):24-35.
[4] 李青,王海蘭.教育數(shù)據(jù)開放研究與實踐現(xiàn)狀述評 [J].中國遠(yuǎn)程教育,2019(11):48-57.
[5] 歐陽榮彬,王倩宜,龍新征.基于微服務(wù)的數(shù)據(jù)服務(wù)框架設(shè)計 [J].華中科技大學(xué)學(xué)報:自然科學(xué)版,2016,44(S1):126-130.
[6] 童敏,張黎娜,張文盛,等.基于微服務(wù)的開放大學(xué)智慧校園方案設(shè)計 [J].安徽廣播電視大學(xué)學(xué)報,2020(3):88-92.
[7] 王俊松,洪生.基于ELK Stack網(wǎng)絡(luò)安全日志可視化研究 [J].軟件,2021,42(10):1-5.
[8] 教育部.教育部關(guān)于印發(fā)《教育信息化2.0行動計劃》的通知 [J].中華人民共和國教育部公報,2018(4):118-125.
[9] 余鵬,李艷.智慧校園視域下高等教育數(shù)據(jù)生態(tài)治理體系研究 [J].中國電化教育,2020(5):88-100.
[10] 洪生.基于CAS與令牌的單點授權(quán)實現(xiàn) [J].信息化研究,2021,47(2):70-73+78.
作者簡介:洪生(1987—),男,漢族,安徽合肥人,工程師,碩士研究生,主要研究方向:教育信息化、大數(shù)據(jù)分析、網(wǎng)絡(luò)安全。