洪柏桦 毛文琪 瞿少成
摘要:针对传统单体式架构在线教育平台存在灵活性较低、可拓展性和稳定性不足等问题,设计了一种基于微服务架构的在线教育平台。首先,该在线教育平台采用Spring Cloud框架来搭建微服务;然后,利用Nacos组件和其他微服务组件搭建项目基础环境;同时还选取MyBatis-Plus框架作为持久层的框架;最后利用Vue.js框架搭建前台系统。该系统实现了线上课程的有效管理,满足了用户的个性化学习需求。相比与传统单体式架构系统,该系统将不同服务模块部署在不同服务器上,使用灵活、拓展方便、稳定性好,具有一定的实用价值。
关键词:微服务;在线教育平台;Spring Cloud;MyBatis-Plus;Vue.js
中图分类号:TP319 文献标识码:A
文章编号:1009-3044(2021)04-0010-03
Abstract: Aiming at the problems of low flexibility, poor scalability and stability in traditional monolithic online education platforms, an online education platform based on the microservice architecture is designed. First, the online education platform uses the Spring Cloud framework to build microservices; second, it uses Nacos component and other microservice components to build the basic project environment; at the same time, it also selects My Batis-Plus as the persistence layer framework; finally uses Vue.js to build the front-end system. This system realizes the effective management of courses and meets the needs of people's personalized learning. Compared with the traditional monolithic architecture system, this system deploys different service modules on different servers, which is flexible in use, convenient in expansion, stable, and has certain practical value.
Key words: microservice; online education platform; spring cloud; mybatis-plus; vue.js
1 背景
近些年來,随着互联网的快速发展,基于网络发展的新型教育形态正在风靡全球。人们快速增长的在线学习需求,推动了在线教育平台的迅速发展[1]。今年,学校以及培训机构无法进行线下教学,这更加推动了教育行业的线上转变。在线教育的热潮推动了各类在线教育平台和工具的兴起[2]。由于技术的局限性,许多传统的在线教育平台采用单体式架构进行开发,随着业务规模的增长,单体式架构的系统在灵活性、可拓展性、稳定性和维护等方面存在一些瓶颈[3]。
于是,人们提出了微服务的设计理念,它是系统架构上的一种设计风格[4],其设计思想是将系统拆分成多个相互独立运行和部署在不同服务器上的微型服务,服务之间通过HTTP/HTTPS或者RPC协议进行通信协作[5-6],这就使得系统的及时交付以及灵活拓展成为可能[7-8]。
设计了一种基于微服务架构的在线教育平台,该平台采用Spring Cloud框架来搭建微服务,将系统拆分为多个微型服务,使用阿里巴巴提供的Nacos组件作为服务注册中心,选用MyBatis-Plus框架作为持久层框架,同时使用Vue.js框架搭建前台系统。不同服务模块部署在不同的服务器上,服务之间通过协作来完成系统的功能,克服了传统单体式架构系统的缺点,系统部署灵活、可拓展性好、使用稳定,具有一定的实用价值。
2 系统总体设计
基于微服务架构的在线教育平台总体架构如图1所示。在设计基于微服务架构的在线教育平台时,严格遵守代码开发中“高内聚,低耦合”的准则,实现系统的可拓展性和开放性。运用微服务这种面向服务架构的思想,将系统划分成互相独立同时功能专一的多个小型服务。
所设计的在线教育平台总体架构主要分为3层:
1)表现层:用户与系统进行交互,主要功能是显示从数据库取得的数据和接受用户传输的数据,分为前台系统和后台系统。后台系统管理员获得授权,就能够拥有课程管理、讲师管理、广告管理、数据统计分析等权限;前台系统是面向普通用户的,普通 用户能够查看相关的课程和讲师,同时能够购买自己感兴趣的课程。
2)服务层:由资源上传、统计分析和核心应用等多个相互独立且功能专一的微型服务组成,服务之间通过协作来完成系统特定的功能。
3)数据层:与服务层进行数据交互,选取MySQL数据库存储在线教育平台用户数据、讲师数据和订单数据等其他数据。
3 系统详细设计
3.1 系统功能需求设计
所设计的基于微服务架构的在线教育平台分为前台系统和后台系统,前台系统是面向普通用户的,后台系统是面向系统管理员的,系统用例图如图2所示。
根据图2系统用例图,设计了在线教育平台系统的功能。如图3所示,后台系统主要有课程管理、讲师管理和分类管理等功能。前台系统的设计是关乎用户们的使用体验以及购买课程的意愿,因此前台系统设计至关重要,前台系统功能如图4所示,主要有首页数据显示、讲师信息和注册登录等功能。
3.2 数据表设计
数据库选择的是MySQL数据库,采用多张表存储相关的数据,部分数据表之间关系如图5所示,数据表之间除了有一对一以及一对多两种关系,还存在无关联关系。
4 系统实现与测试
4.1 系统实现
详细分析了系统的功能需求和设计了数据表后。使用IntelliJ IDEA和Visual Studio Code作为后端和前端开发工具,首先创建一个Maven工程,使用Spring Cloud框架来搭建微服务,将系统拆分为核心应用服务、订单服务和资源上传服务等几个小型服务;其次配置服务注册中心Nacos和其他微服务组件;同时选取MyBatis-Plus作为持久层框架,与数据库交互;最后使用Vue.js作为前端框架,同时采用element-ui来设计页面。
4.2 系统测试
首先启动系统的各项服务,同时启动Nacos客戶端,服务启动之后,在服务注册中心Nacos进行注册,如图6所示,在图6服务列表中,可以知道各项服务已经在服务注册平台注册了,有核心应用服务、订单服务和资源上传服务等。
系统部分实际效果如图7和图8所示,图7为课程信息列表,后台管理员可以查看课程列表和查询课程;图8为普通用户注册登录,用户可以在此页面注册和登录账号。
系统的功能测试选取了后台系统和前台系统的部分功能进行测试,如表1和表2所示。测试结果验证了系统几大核心功能运行正常,同时添加课程的正常使用,说明微服务注册调用正常。系统功能响应时间都在500ms以内,满足系统的响应时间需求。
5 结束语
设计了一种基于微服务架构的在线教育平台,成功将系统拆分为资源上传、统计分析和核心应用等多个相互独立且功能专一的微型服务,这些微型服务模块运行和部署在不同的服务器上,服务之间通过协作实现了系统的课程管理、课程购买、讲师管理和用户注册登录等功能,满足了人们个性化学习的需求。该系统克服了传统单体式架构系统的缺点,部署灵活,具有良好的拓展性和稳定性,有一定的实用价值。但是功能相对少,后期将完善系统功能。
参考文献:
[1] 黄鹏,边大成.融合化在线教育大势所趋[N].中国电子报,2020-07-21(3).
[2] 柴俊武,赵月.基于学习理论的在线教育平台选择与应用探究[J].中国多媒体与网络教学学报(上旬刊),2020(8):15-17.
[3] 张开琦,刘晓燕,王信,等.基于微服务架构的中医信息服务系统设计与应用[J].电子测量技术,2020,43(3):1-5.
[4] 张进猛,苏健,柴立岩.基于微服务架构的信息系统开发技术研究[J].电脑知识与技术,2020,16(10):273-274.
[5] 欧阳荣彬,王倩宜,龙新征.基于微服务的数据服务框架设计[J].华中科技大学学报(自然科学版),2016,44(S1):126-130.
[6] 黄嘉诚,董晶.基于微服务的智能档案服务系统设计与实现[J].电子设计工程,2018,26(2):26-30.
[7] 方意,朱永强,宫学庆.微服务架构下的分布式事务处理[J].计算机应用与软件,2019,36(1):152-158.
[8] 徐琛杰周翔彭鑫赵文耘.面向微服务系统的运行时部署优化[J].计算机应用与软件,2018,35(10):85-93.
【通联编辑:谢媛媛】