1 项目的功能构架
当前市场的在线教育模式多种多样,包括:B2C、C2C、B2B2C等业务模式,学成在线采用B2B2C业务模式,即向企业或个人提供在线教育平台提供教学服务,老师和学生通过平台完成整个教学和学习的过程,市场上类似的平台有:网易云课堂、腾讯课堂等,学成在线的特点是IT职业课程在线教学。
学成在线包括门户、学习中心、教学管理中、社交系统、系统管理等功能模块。
2. 技术架构
学成在线采用当前流行的前后端分离架构开发,由用户层、UI层、微服务层、数据层等部分组成,为PC、App、H5等客户端用户提供服务。下图是系统的技术架构图:
模块功能说明:
技术栈
重点了解微服务技术栈:
- 学成在线服务端基于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等
3. 静态门户工程搭建
1. ngnix的配置
server{
listen 80;
server_name www.xuecheng.com;
ssi on;
ssi_silent_errors on;
location / {
alias F:/teach/xcEdu/xcEduUI/xc‐ui‐pc‐static‐portal/;
index index.html;
}
}
window开发环境需要变更hosts文件,修改:\Windows\System32\drivers\etc\hosts文件
127.0.0.1 www.xuecheng.com
2. 服务端包含技术
页面内容多可以将页面拆成小页面,通过cms管理,便于修改,同时通过web服务的SSI技术合并渲染输出。
SSI:server side include,服务端嵌入。
指令:<!‐‐#include virtual="/…/…html"‐‐>
nginx配置:ssi on: 开启ssi支持,ssi_silent_errors on;ssi出错是不输出错误信息, ssi_types:默认为 ssi_types text/html。
4 CMS服务端工程
工程结构
数据存储:MongoDB
6 接口开发规范
-
Api请求及响应规范
为了严格按照接口进行开发,提高效率,对请求及响应格式进行规范化。
1、get 请求时,采用key/value格式请求,SpringMVC可采用基本类型的变量接收,也可以采用对象接收。
2、Post请求时,可以提交form表单数据(application/x-www-form-urlencoded)和Json数据(ContentType=application/json),文件等多部件类型(multipart/form-data)三种数据格式,SpringMVC接收Json数据
使用@RequestBody注解解析请求的json数据。
4、响应结果统一信息为:是否成功、操作代码、提示信息及自定义数据。
5、响应结果统一格式为json。 -
Api定义约束
Api定义使用SpringMVC来完成,由于此接口后期将作为微服务远程调用使用,在定义接口时有如下限制:
1、@PathVariable 统一指定参数名称,如:@PathVariable(“id”) 2、@RequestParam统一指定参数名称,如:
@RequestParam(“id”)
7 Swagger
https://swagger.io/