洪生 王俊松
DOI:10.19850/j.cnki.2096-4706.2024.02.009
收稿日期:2023-05-10
基金项目:中国高校产学研创新基金资助项目(2021FNB03002)
摘 要:职业院校从信息化向数字化转型的过程中,传统中心化、集中式数据共享平台面临着巨大挑战。微服务作为一种去中心化的分布式服务框架,通过将单体应用拆分为多个相互独立的服务,可使系统获得较强的松耦合、高可用、易扩展特性。为此,文章提出一种基于微服务的职业院校数据开放平台,着重分析了数据开放平台的数据标准化和数据治理,依据数据分级分类标准将全量数据打包成彼此独立的微服务,开发RESTful风格的轻量级API服务接口,有效解决了分布式环境下的数据交换和共享问题。
关键词:数据开放平台;微服务;API;数据治理
中图分类号:TP315 文献标识码: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 引 言
在數字化校园建设阶段,为打通各类业务系统,采用中心化服务框架和集中式数据存储实现业务数据共享,有效缓解了“数据孤岛”问题。然而,随着云计算、人工智能和大数据等新型现代信息技术的快速迭代发展,职业院校面临着从信息化向数字化转型、管理和服务向纵深方向发展的挑战,存在应用粒度大、不同模块间耦合度高、系统更新及软件维护成本高、扩展能力差等问题。微服务作为一种去中心化的分布式服务框架,可以在底层架构上将庞大的应用系统和服务分解成体积更小、松耦合的组件,这样系统可以获得更高的灵活性、可实施性和扩展性[1-3]。
文献[4]阐述了教育领域数据的来源、分类及数据开放的标准。文献[5]提出一种基于微服务的数据开放平台框架,并将其应用到北京大学信息服务开放平台,实现了公共信息服务、个人信息服务和受限信息服务三个微服务容器。文献[6]以数据中心和网上办事大厅应用场景为例,阐述了一种基于微服务的智慧校园架构。本文提出一种基于微服务的职业院校数据开放平台,以服务为视角,以数据共享、互联互通为目标,依托微服务强大的松耦合、高可用、易扩展等特性,将全量数据打包成彼此独立的微服务。开发RESTful风格的轻量级API服务接口,以JSON格式交换和传输数据,有效解决了分布式环境下的数据交换和共享问题。
1 相关研究
微服务是一种软件架构风格,其核心思想是:将一个完整的单体应用拆分为多个小巧、相互独立的微服务,各服务之间互相协调、互相配合[1,2]。这些微服务运行在自己的进程当中,彼此之间松散耦合。与传统服务依赖企业服务总线SOA(Service Orienented Architechture)不同,微服务注重系统的组件化和去中心化。在微服务架构中每个服务具有明确的自身边界,不同的微服务(如REST、RPC等)之间通过轻量级交互机制实现通信。
表现层状态转移(Representational State Transfer, REST)是Roy Thomas Fielding提出的一种万维网软件架构风格,目的是便于不同软件或程序在网络中互相传递信息。REST是无状态的,请求之间没有持久的会话信息,响应需要声明成可缓存,请求的资源通常是XML或JSON格式。REST通过在接口上设置特定约束实现对服务资源的访问控制,即客户端通过HTTP协议的GET、POST、PUT和DELETE等方法对服务端资源进行CRUD操作,实现表现层状态转移。
远程过程调用(remote procedure call, RPC)是一种多语言跨平台的服务调用,能够使得分布式应用像调用本地方法一样调用远程服务提供的方法,而不需要考虑底层的通信细节。相较于REST对资源进行增删改查的操作,RPC关注特定方法与功能的实现。RPC采用TCP或HTTP2协议进行通信,比传统HTTP1.1协议的传输效率更高,且自带序列化机制和负载均衡机制,使得它具有性能消耗低、传输效率高的优点,所以微服务系统内部大多采用RPC进行服务调用。
2 职业院校数据开放平台设计
职业院校信息化建设的早期阶段往往聚焦于系统功能的实现,从而忽视了数据共享与集成的重要性。各业务系统采用不同的数据标准和格式,导致数据共享局限于基础数据共享,数据集成存在接口重复开发、维护难的问题。随着职业院校信息化建设的快速发展,迫切需要采用新的技术和手段来解决数据标准不统一、数据共享机制不健全、数据接口开发难的问题。因此,职业院校数据开放平台设计应遵循三个原则:统一的数据标准、敏捷的开发体验、便捷的获取途径。
职业院校数据开放平台框架的逻辑结构大致分为三个层次,如图1所示。其中,全量数据中心层包含各种基础数据源、非结构化的文档数据和ELK日志数据[7]。全量数据中心层的关注点主要在于数据标准化、数据治理及数据推送。数据源之间不直接进行数据交换与共享,而是先通过数据标准化和ETL工具将标准化的数据推送至共享中心,再根据需要从共享中心获取其他数据源。全量数据中心层以视图的方式向上层提供服务。微服务层按照主题不同分为三类:针对教师的微服务、针对学生的微服务以及针对管理的微服务,针对教师的微服务包括教职工基础数据、科研、职称、授课、财务等;针对学生的微服务包括学生基础数据、课表、成绩、日常消费、学籍等;针对管理的微服务包括API注册管理、申请审核、日志查询等。API层为各类应用系统提供轻量级RESTful接口。
2.1 数据标准化
《教育信息化2.0行动计划》明确提出探索信息化时代的教育治理新模式,推进基于大数据的教育方式变革,建立完善的教育公共资源开放目录,形成规范统一、互联互通、安全可控的国家教育数据开放体系[8]。因此,教育治理新模式与数据互联互通的前提条件是数据标准化。数据标准化的原则是在遵循国家数据标准、行业数据标准规范的基础上,制定适合本校长远发展的数据标准,其主要内容包括[9]:
1)数据分类与定义。包括主数据的分级分类、字段定义、元数据的定义等。
2)数据标准化管理。包括标准的执行、维护和监控。
3)数据标准化实施原则。包括开放性(提供统一的开放接口)、完整性(涵盖各个基础数据源的结构化数据、半结构化数据、非结构化数据)、一致性和有效性(数据源唯一且准确)。
无论是对数据进行标准化、数据的确权,还是提供数据服务,有效的数据分类是第一要务。数据分类往往是从业务角度或管理角度出发,按照一定的原则和方法(如:行业维度、业务领域维度、数据来源维度、共享维度、数据开放维度等)对具有相同属性或特征的数据进行归类。数据分类应体现“相互独立,完全穷尽”(Mutually Exclusive Collectively Exhaustive, MECE)的原则,即同一类别所有的数据都得包含在内;类别之间不允许重复和交叉;同一层级分类的维度要统一,颗粒度要一致。数据定义则主要体现在每一类数据各个字段编码和元数据,其中字段编码用来表征该类数据具有哪些属性,对应关系型数据库中的列;元数据用来表达字段所代表的具体含义。
2.2 数据治理
根据国际数据管理协会的定义,数据治理是对数据资产的管理行使权力的活动集合,即数据治理是保障数据质量和实现数据价值的过程。通过采集、加工、清洗、传输、储存等一系列标准化流程将原本零散的数据转变成格式规范、结构统一的标准化数据,同时对其进行严格规范的监控,保证数据质量,形成具有指导意义的数据报表、数据模型等,以为相关人员的决策制定提供有力支撑。
职业院校数据治理水平的提升,可从以下几个方面着手:
1)制度和管理层面。制定《数据管理组织的角色权责及管理方法》确定数据确权;制定《数据管理办法》《数据信息标准规范》《数据质量管理办法》《元数据质量标准及评估指标体系》确定数据标准化;由校领导牵头成立信息化工作领导小组,开展顶層设计,信息中心居中协调,各职能部门负责数据源头控制与治理。
2)数据层面。源数据系统开发商在系统研发过程中应严格按照国家级、行业级数据标准编制标准规范的数据字典,提供完整的元数据信息,详细说明字段含义以及数据表之间的关联关系。同时,在系统部署过程中,应严格按照学校的数据标准将数据推送至共享中心。
3)安全与质量管控层面。一方面要明确数据的确权,明确数据隐私最终责任方,加强数据源头管控,确保数据质量安全可控。另一方面要加强敏感数据的分级管理,切忌一刀切不进行共享,让数据价值无以发挥,或无差别、无条件共享,让数据分类分级失去意义。
2.3 RESTful轻量级API服务
RESTful轻量级API在前端设计时,使用路径定位资源,利用方法定义操作,通过Content-Type和Accept协商资源的类型。每个统一资源标识符(Uniform Resource Identifier, URI)代表一种资源,客户端通过四个HTTP动词对服务器端资源进行操作,实现“表现层状态转化”。URI的设计要遵循面向客户端和基于语义理解的原则,如GET/api/v1/student?id=0001,其中api表示API服务,v1表示版本号,student表示学生基本信息,参数id表示过滤id为0001的学生,GET表示获取学生信息的动作。URI使用名词作为路径,四个HTTP动词表示动作。
RESTful轻量级API后端实现的核心内容包括:
1)动态路由创建与发布。无须重启服务即可实现修改、创建、删除和刷新API路由;同时采用路由持久化技术防止路由丢失,使用缓存技术提高路由刷新速度。
2)SQL语句动态解析。相对于静态SQL语句,动态SQL语句通过使用OGNL表达式实现根据条件自动拼接、判断选择和循环执行SQL语句块。
3)Token授权。开放的API需要验证请求者的身份,以此判断请求是否合法,基于Token的授权优势在于应用不需要在服务端保留会话信息即可实现无状态、分布式授权[10]。
3 应用案例
微服务RPC实现框架,按开发语言区分比较有代表性的有:Java语言SpringCloud、Go语言GoMicro和GoZero、Python语言Nameko。本文将Spring Cloud作为微服务实现框架。Spring Cloud是一款基于Spring Boot实现的微服务框架,是一系列微服务解决方案或框架的有序集合。Spring Cloud将较为成熟、经过验证的微服务框架整合起来,基于Spring Boot 思想对其进行再封装,屏蔽其中复杂的配置和实现原理,最终为开发者提供一套通俗易懂、易部署和易维护的分布式系统开发工具包。Spring Cloud包含Spring Cloud Eureka、Spring Cloud Config、Spring Cloud Gateway等众多服务组件,这些组件提供服务治理、服务配置、服务网关、服务熔断、负载均衡、链路跟踪、分布式消息队列和配置管理等功能。
如图2所示,Eureka注册中心注册了3个服务,其中openapi-core-api和openapi-core-mgr是由SpringBoot开发的单体应用openapi-core拆分而来的2个独立的微服务容器,Zuul为微服务网关,提供网关功能和熔断机制。微服务网关路由地址如表1所示。
前端UI界面采用Vue.js实现,后端SQL语句动态解析采用基于Mybaits的ORM框架实现,API路由使用MySQL进行持久化,APIToken采用JWT和APIkey相结合的方式实现。如图3所示,数据源提供基于视图的关系表。创建API时,使用MyBaits提供的动态标签编写SQL脚本。在编写SQL脚本时,可以根据参数的有无及参数个数返回不同的数据。
在API申请审核时,分配相应的token,标注请求该API的应用名,并记录每个API的请求次数。统计结果显示API开放指数,如图4所示,学生发展中心和教师发展中心请求的API最多。
4 结 论
数据开放平台微服务化有效提升了分布式环境下的数据交换和共享能力。但在实践过程中仍然有若干问题有待研究和解决:
1)服务拆分方法的科学性和合理性。单体应用程序拆分成微服务后,服务治理是关键,服务的拆分方法是否科学合理直接关系到整个系统的性能。过多的服务导致服务之间的RPC调用变得过于频繁。因此,需要根据实际情况进行合理划分。
2)数据标准化和数据治理能力需要进一步加强。数据标准化为微服务层提供标准化的视图数据表,数据标准的优劣将直接影响数据开放平台的能力。首先要做好数据的分级分类、主数据和元数据定义、字段编码,建立完整可靠的数据字典。其次从制度和管理层面加强数据源头的治理与管控。
3)建立分布式共享中心。随着数据源的增多,业务数据呈指数级增长,需要考虑共享中心的分布式存储、数据分表、分页等问题。
参考文献:
[1] 钟华.企业IT架构转型之道:阿里巴巴中台战略思想与架构实战 [M].北京:机械工业出版社,2021.
[2] LEWIS J,FOWLER 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] 李青,王海蘭.教育数据开放研究与实践现状述评 [J].中国远程教育,2019(11):48-57.
[5] 欧阳荣彬,王倩宜,龙新征.基于微服务的数据服务框架设计 [J].华中科技大学学报:自然科学版,2016,44(S1):126-130.
[6] 童敏,张黎娜,张文盛,等.基于微服务的开放大学智慧校园方案设计 [J].安徽广播电视大学学报,2020(3):88-92.
[7] 王俊松,洪生.基于ELK Stack网络安全日志可视化研究 [J].软件,2021,42(10):1-5.
[8] 教育部.教育部关于印发《教育信息化2.0行动计划》的通知 [J].中华人民共和国教育部公报,2018(4):118-125.
[9] 余鹏,李艳.智慧校园视域下高等教育数据生态治理体系研究 [J].中国电化教育,2020(5):88-100.
[10] 洪生.基于CAS与令牌的单点授权实现 [J].信息化研究,2021,47(2):70-73+78.
作者简介:洪生(1987—),男,汉族,安徽合肥人,工程师,硕士研究生,主要研究方向:教育信息化、大数据分析、网络安全。