杨 萌
(淮北职业技术学院,安徽 淮北 235000)
随着信息技术高速发展,目前国内兴起第二次互联网热。各行各业都在信息化上转型,达到智能中国,智能城市,智能办公等要求[1]。而高校处于科学前沿,高科技人才聚集地,所以高校办公和教学系统也必须改造和升级,以适应智能化的教学。高校评教系统以前多采用人工调查或者抽样调查问卷方式,几乎以应付的方式完成工作。这种手工方式难免存在不公开、不透明、不公平评教缺陷,无法调动学生或者教师评教积极性,无法推动教师教学质量提升和鼓励教师潜心专研教学。所以高校急需一套公开、透明、公平的评教系统,实时的根据事实情况评定教师教学质量。本系统基于时下流行Spring Cloud技术,构建了一套高可用、高可靠、可扩展的智能网上评教系统。本系统可根据教师教学实际情况,灵活配置评教内容和评教方式,支持可公开、可匿名,并具有统计分析功能,便于教师横向和纵向对比等。本文构建的系统对于提高高校教师教学水平具有直接的推动力。
本系统按照功能模块包括:用户模块(包括用户管理、权限管理等);评价系统模块(包括评分功能、评价查看、评价修改及管理、打印管理、评价结果展示等);统计报表模块(包括各种维度报表统计等);配置模块(包括评价内容及方式配置等);登录模块(包括系统登录和退出功能)。
本系统采用Spring Cloud架构以微服务方式部署系统。本方案使用技术栈为Springboot+Mysql+zookeeper+activemq+redis。具体通过Springboot开发微服务独立程序,利用Mysql存储系统数据,并且采用主从方式部署,提高系统可靠性;利用zookeeper协调微服务,提升服务的可用性;使用activemq提供消息队列,所有微服务接口使用消息队列交互方式提供系统的服务消费能力。此外,为提升系统的服务响应能力,将Redis部署在服务端前端。
Spring Cloud实际上为基于Springboot的快速构建分布式系统的工具集。其支持开发程序在docker和Pivotal Cloud Foundry上部署。可基于JVM的云进行原生应用开发,如配置管理、服务发现、熔断器、智能路由、微代理、控制总线、分布式会话和集群状态管理等操作。
作为第二代微服务的代表性框架,Spring Cloud已经在国内众多公司中应用。例如,拍拍贷资深架构师杨波老师就根据自己的实际经验以及对Spring Cloud的深入调研,并结合国内一线互联网厂商开源项目应用经验,认为Spring Cloud技术栈中的有些组件离生产级尚存在一定的差距,并基于此提出了一个可供中小团队参考的微服务架构技术栈,又被称为“中国特色的微服务架构技术栈1.0”,如图1所示[8]。
图1 Spring Cloud解决方案
Spring Cloud核心组件包括Spring Cloud Netflix、Spring Cloud Config、Spring Cloud Bus、Spring Cloud Security、Spring Cloud Consul模块等。其中Spring Cloud Netflix包括如下组件:Eureka服务治理组件(包含服务注册与发现);Hystrix容错管理组件,可实现熔断器操作;Ribbon客户端负载均衡的服务调用组件;基于Ribbon和Hystrix的声明式服务调用组件;网关组件,可提供智能路由、访问过滤等功能;外部化配置组件。
Spring Cloud Confi配置管理工具,可实现应用配置的外部化存储,支持客户端配置信息刷新、加密/解密配置内容等。
Spring Cloud Bus事件、消息总线,可用于传播集群中的状态变化或事件,以及触发后续的处理[9]。
Spring Cloud Security基于Spring security的安全工具包,可为应用程序添加安全控制。
Spring Cloud Consul 封装了Consul操作,可实现服务发现与工具配置(与Eureka作用类似),与Docker容器可以无缝集成。
本系统基于Spring Cloud框架实现网上评教系统的项目配置、微服务注册、服务提供及消费等功能,具体系统服务消费和注册流程如图2所示。
图2 系统服务消费和注册流程
用户可在前端页面操作,前端调用的是消费者(Service-App)提供的rest接口,消费者去调用服务提供者的具体服务(发现)然后将结果返回给消费者,继而返回给用户。利用IntelliJ IDEA结合Spring Initializer自动生成工程结构,其中主要模块如下表1所示。
其中springcloud-eureka-server为注册中心,所有微服务启动之后均需要在注册中心注册,为便于消费者访问,用户登录本系统需发送登录请求,登录后台模块则先在注册中心注册,然后为用户登录动作提供服务。例如学生发起评测动作,则评测服务提供模块先在注册中心注册,然后为学生评测动作提供服务。
springcloud-provider-user-service用户服务提供模块,此模块主要提供登录服务,评测服务,配置服务,基本校验服务等。
springcloud-consumer-h5系统前端,主要为用户使用界面,例如登录操作,评测,统计,分析等界面操作。
springcloud-gateway模块,主要利用zuul提供服务注册网关,便于服务调用和访问。
表1 各模块说明
下文对于本系统部分功能代码进行详细说明[10]。
本系统采用基于SpringBoot框架的Web和JPA模块实现Restful API的常用方法。其中Entity类包括User.java(用户DAO),Role.java(角色DAO),EvaluateRecord.java(评价记录DAO),Configuaton.java(配置Dao),UserType.java(用户类型Dao)等。其中Role.java具体代码如下:
业务逻辑Service服务类包括UserService.java,EvaluateService.java,ConfiguationSercie.java等,其中UserService.java代码如下:
业务逻辑控制层主要为后天业务逻辑控制代码,本文主要通过User实现完整的Restful API 的UserController,主要代码如下:
本系统主要基于SpringCloud微服务架构,将所有模块拆解为服务,在服务中心进行注册,并提供服务。而业务逻辑模块均改造为微服务,单独部署启动,注册到服务中心,并为消费者提供服务。本系统根据业务逻辑分为登录服务,评价服务,管理服务等。
本系统基于Spring Cloud构建高校网上评教系统,支持微服务独立部署,支持用户管理、评教管理、统计分析、配置管理等功能,同时具备高可用、高可靠、可扩展能力。本系统对于高校网上评教系统建设具有较强的借鉴意义,有利于高校教学水平的提升。