受新型冠状病毒的影响,中国的教育行业迎来了一次新的发展方向:在线教育。而随着传统的在线办公平台被应用在教育行业,一些专门用于进行在线教学的平台也越来越被市场需要。学生们可以通过在线办公平台实现学校要求的课程学习任务,而在线教学平台却可以帮助学生主动的学习所喜欢的内容,并且随着学生们在线学习知识的观点的形成和发展,在线教学平台将是之后非常火热的一个方向。
当前市场的在线教育模式多种多样,包括:B2C、C2C、B2B2C 等业务模式,鑫课堂采用 B2B2C 业务模式,即向企业或个人提供在线教育平台来提供教学服务,老师和学生通过平台完成整个教学和学习的过程,目前市场上类似的平台有:网易云课堂、腾讯课堂等。而鑫课堂的特点是其专注于 IT 职业课程在线教学。
鑫课堂作为一个提供 IT 职业技术课程在线学习的平台,它为即将和已经加入 IT 领域的技术人才提供在线学习服务。用户可以通过本平台实现在线学习、在线练习、在线考试等功能,最终熟悉掌握所学的 IT 技能并能将其应用在日常工作中。
功能模块 | 说明 |
---|---|
门户 | 在首页、活动页、专题页等页面提供课程学习入口 |
学习中心 | 学生在学习中心在线学习相关课程 |
社交系统 | 社交模块为老师和学生提供交流沟通的平台,包括:问答系统、评论系统、论坛等,学生和老师通过问答系统提问问题、回答问题,通过评论系统对老师授课进行评论 |
教学管理中心 | 教师登录教学管理中心进行课程管理、资源管理、考试管理等教学活动 |
系统管理中心 | 系统管理员登录系统管理中心进行分类管理、运维管理等功能 |
本项目采用前后端分离架构进行开发,由用户层、UI层、微服务层、数据层等部分组成,可以为 PC、App、 H5 等客户端提供数据服务。下图是本项目的技术架构图:
层次名称 | 功能描述 |
---|---|
用户层 | 用户层描述了本系统所支持的用户类型包括:PC 用户、App 用户、H5 用户。PC 用户通过浏览器访问系统、App 用户通过 Android、IOS 手机访问系统,H5 用户通过 H5 页面访问系统 |
CDN | CDN(Content Delivery Network)即内容分发网络,本系统所有静态资源全部通过 CDN 加速来提高访问速度。系统静态资源包括:html 页面、js 文件、css 文件、image 图片、pdf 和 ppt 及doc 教学文档、video 视频等 |
负载均衡 | 系统的 CDN 层、UI 层、服务层及数据层均设置了负载均衡服务,上图仅在 UI 层前边标注了负载均衡。每一层的负载均衡会根据系统的需求来确定负载均衡器的类型,系统支持4层负载均衡+7层负载均衡结合的方式,4层负载均衡是指在网络传输层进行流程转发,根据IP和端口进行转发,7层负载均衡完成HTTP协议负载均衡及反向代理的功能,根据 url 进行请求转发 |
UI层 | UI 层描述了系统向 PC 用户、App 用户、H5 用户提供的产品界面。根据系统功能模块特点 确定了 UI 层包括如下产品界面类型: 1)面向 PC 用户的门户系统、学习中心系统、教学管理系统、系统管理中心。 2)面向 H5 用户的门户系统、学习中心系统。 3)面向 APP 用户的门户系统、学习中心系统未在上图标注,在 App 项目中有详细说明。 |
微服务层 | 微服务层将系统服务分类三类:前端服务、后端服务及系统服务。前端服务:主要为学习用户提供学习服务。后端服务:主要为管理用户提供教学管理服务。系统服务:公共服务,为系统的所有微服务提供公共服务功能。服务网关:提供服务路由、负载均 衡、认证授权等服务 |
数据层 | 数据层描述了系统的数据存储的内容类型,持久化的业务数据使用 MySQL 和 MongoDB 保存,其中 MongoDB 中主要保存系统日志信息。消息队列:存储系统服务间通信的消息,本身提供消息存取服务,与微服务层的系统服务连接。索引库:存储课程信息的索引信息,本身提供索引维护及搜索的服务,与微服务层的系统服务连接。缓存:作为系统的缓存服务,存储课程信息、分类信息、用户信息等,与微服务层的所有服务连接。文件存储:提供系统静态资源文件的分布式存储服务,文件存储服务器作为CDN服务器的数据来源,CDN上的静态资源将最终在文件存储服务器上保存多份。 流媒体服务:作为流媒体服务器,存储所有的流媒体文件 |
外部系统接口 | 1)微信、QQ、微博登录接口,本系统和微信、QQ、微博系统对接,用户输入微信、 QQ、微博的账号和密码即可登录本系统。2)微信、QQ、微博分享接口,本系统和微信、QQ、微博系统对接,可直接将本系统的课程资源信息分享到微信、QQ、微博。3)支付宝、微信、网银支付接口,本系统提供支付宝、微信、网银三种支付接口。4)短信接口,本系统与第三方平台对接短信发送接口。5)邮件接口,本系统需要连接第三方的 smpt 邮件服务器对外发送电子邮件。6)微信公众号,本系统与微信公众号平台接口,用户通过微信公众号访问 H5 页面。7)点播、直播,前期视频点播与直播采用第三方服务方式,本系统与第三方点、直播服务对接,对外提供视频点播与直播服务。8)OSS存储 ,前期静态资源文件的存储采用第三方服务方式,本系统与第三方提供的 OSS 存储服务对接,将系统的静态资源文件存储到第三方提供的OSS存储服务器上。9)CDN,本系统与第三方CDN服务对接,使用CDN加速服务来提高本系统的访问速度 |
DevOps | DevOps(Development Operations)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。本项目供了许多开发、运营、维护支撑的系统,包括:Eureka 服务治理中心:提供服务治理服务,包括:服务注册、服务获取等。Spring Cloud Config 服务配置管理中心:提供服务配置管理服务,包括:配置文件更新、配置文件下发等。Hystrix Dashboard 服务熔断监控:监控熔断的请求响应时间、成功率等。Zipkin 服务追踪监控:监控服务调用链路健康情况。Jenkins 持续集成服务:提供系统持续集成服务。Git/GitLab 代码管理服务:提供git代码管理服务。ELK 日志分析服务:提供 elk 日志分析服务,包括系统运行日志分析、告警服务。Docker 容器化部署服务:将本系统所有服务采用容器化部署方式。Maven 项目管理工具:提供管理项目所有的Java包依赖、项目工程打包服务 |
鑫课堂服务端基于 Spring Boot 构建,采用 Spring Cloud 微服务框架。
- 持久层:MySQL、MongoDB、Redis、ElasticSearch
- 数据访问层:使用Spring Data JPA 、Mybatis、Spring Data Mongodb等
- 业务层:Spring IOC、Aop 事务控制、Spring Task 任务调度、Feign、Ribbon、Spring AMQP、Spring Data Redis等
- 控制层:Spring MVC、FastJSON、RestTemplate、Spring Security Oauth2+JWT等
- 微服务治理:Eureka、Zuul、Hystrix、Spring Cloud Config等
下图是项目技术架构的简图,通过简图了解项目所使用的技术栈
项目是基于前后端分离的架构进行开发,整体的开发步骤如下:
- 需求分析:梳理用户的需求,分析业务流程。
- 接口定义:根据需求分析定义接口。
- 服务端和前端并行开发:依据接口进行服务端接口开发;前端开发用户操作界面,并请求服务端接口完成业务处理。
- 前后端集成测试:最终前端调用服务端接口完成业务。