微服务[学成在线] day20:项目总结

本文详细介绍了基于微服务的学成在线项目,涵盖项目背景、技术架构、功能模块和开发流程。项目采用Spring Boot、Spring Cloud,结合Vue.js前端,使用Eureka作为服务治理中心,Zuul作为微服务网关。内容管理、课程管理和媒资管理等功能通过微服务实现。项目中还涉及到了接口定义规范、前端开发流程、数据库存储、错误处理和消息队列的应用。文章最后讨论了项目存在的问题及待完善之处。
摘要由CSDN通过智能技术生成

🚩 写在前面

我为什么要花时间去写这个笔记?

由于在学习该项目的过程中发现了原讲义存在的一些问题,所以该笔记基于「学成在线」微服务项目 PDF 讲义进行编写,并且投入了时间去优化了笔记的格式、代码的高亮、重点的标记等。

以及一些原讲义中所描述的一些知识点使我无法理解的内容,我会对这些内容的表达方式进行修改或者提出一些问题,并且用我自己所理解的一些想法去重新的解释这个问题。

总结一下原 PDF 讲义中已知的一些问题:

  • PDF 中复制出来的代码,部分特殊符号的编码有问题,并且不易被发现,例如横杠 -,从PDF直接复制出来的话是无法运行的。
  • 有时候一些重复且简单的代码,我们需要直接从讲义中直接复制,而部分 PDF 编辑器复制出来的代码格式可能会变乱,且PDF中没有代码高亮,代码可阅读性差,并且复制出来时会有代码缩进错乱等问题。
  • 部分内容是重点但在讲义中只是简单的描述,这并不方便我们后期回顾该课程的知识点,所以我在一些重点的内容上加上了更多的解释。

如有不足的地方,欢迎补充、填坑。

😎 知识点概览

  • 本章节将对【学成在线】项目的知识点进行回顾、总结、梳理。

项目代码

后端代码:https://gitee.com/codeyee/xuecheng-project-services

前端代码:https://gitee.com/codeyee/xuecheng-project-ui

完整的数据库文件以及 nginx 配置已上传至后端代码工程内

目录

内容会比较多,小伙伴们可以根据目录进行按需查阅。

文章目录

一、学成在线是一个什么样的项目?

0x01 项目背景

受互联网+概念的催化,当今中国在线教育市场的发展可谓是百花齐放、如火如荼。 按照市场领域细分为:学前教
育、K12教育、高等 育、留学教育、职业教育、语言教育、兴趣教育以及综合平台,其中,职业教育和语言教育
的市场优势突出。

image-20200612174927095

学成在线借鉴了MOOC(大型开放式网络课程,即MOOC(massive open online courses))的设计思想,是一
个提供IT职业课程在线学习的平台,它为即将和已经加入IT领域的技术人才提供在线学习服务,用户通过在线学
习、在线练习、在线考试等学习内容,最终掌握所学的IT技能,并能在工作中熟练应用。

当前市场的在线教育模式多种多样,包括:B2CC2CB2B2C 等业务模式,学成在线采用 B2B2C 业务模式,即向企业或个人提供在线教育平台和学生完成教学活动,市场上类似的平台有:网易云课堂、腾讯课堂等,学成在线的特点是IT职业课程在线教学。

0x02 功能模块

学成在线是一个在线教育平台,提供IT职业课程在线学习,平台包括:门户、学习中心、教学管理中心、系统管理
中心、社交系统等子系统。

项目的功能架构如下图:

image-20200612175042972

门户是整个平台的入口,功能包括:

  • 门户首页
  • 注册/登录
  • 课程搜索
  • 职业规划
  • 客服等

学习中心为用户提供在线学习服务,包括:

  • 我的课程
  • 视频点播
  • 视频直播
  • 在线考试
  • 在线答疑
  • 学习统计等功能

教学管理中心为教育机构或个人讲师提供教学管理功能,包括:

  • 课程管理
  • 媒资管理
  • 考试管理
  • 问答管理等功能

系统管理中心提供系统参数配置

  • CMS
  • 数据字典
  • 分类管理等功能

0x03 技术架构

项目采用前后端分离的技术架构,前端采用vue.js构建,服务端采用 Spring Cloud Netflix 微服务架构,系统分为用户层、CDN、负载均衡、前端UI、微服务层、数据层、接口层 及 DevOps 等部分组成,下图是完整的技术架构图:

image-20200612175427241

业务流程举例:

1、用户可以通过pc、手机等客户端访问系统进行在线学习。
2、 系统应用 CDN 技术,对一些 图片CSS样式文件视频 等资源从 CDN 调度访问。
3、所有的请求全部经过负载均衡器。
4、对于PC、H5等客户端请求,首先请求UI层,渲染用户界面。
5、客户端UI请求服务层获取进行具体的业务操作。
6、服务层将数据持久化到数据库

下图是技术架构简图:

image-20200612175442386

1、用户层,用户层描述了本系统所支持的客户端用户有哪些,本项目目前为各用户提供服务,包括H5、PC、Android和IOS等。

2、CDN 全称 Content Delivery Network,即内容分发网络,本系统所有静态资源全部通过 CDN 加速来提高访问速度。系统静态资源包括:html页面、js文件、css文件、image图片、pdf和ppt及doc教学文档、video视频等

3、负载均衡 系统的CDN层、UI层、服务层及数据层均设置了负载均衡服务,系统采用LVS+Nginx实现负载均衡均
衡。

4、UI 层 UI层描述了系统向pc用户、app用户、h5用户提供的产品界面。本项目在 PCH5 端采用vue.js+elementUI 实现。

5、微服务层将系统服务分类三类:前端服务、后端服务及系统服务。 前端服务:主要为学习用户提供学习服务。
后端服务:主要为管理用户提供教学管理服务。 系统服务:公共服务,为系统的所有微服务提供公共服务功能

6、外部系统接口 包括如下接口:

  • 第三方登录接口,如QQ、微博、微信等。
  • 支付宝、微信支付接口
  • 短信接口 (阿里大于)
  • 邮件接口,通过smpt邮件服务器对外发送电子邮件。
  • 微信公众号
  • 点播、直播。
  • OSS 存储
  • CDN,使用最阿里云CDN服务加速视频访问速度。

7、DevOps 提供了本系统开发、运营、维护支撑的系统,包括如下内容:

  • Eureka 服务治理中心:提供服务治理服务,包括:服务注册、服务获取等。
  • Docker 容器化部署服务:将本系统所有服务采用容器化部署方式。
  • Maven 项目管理工具:提供管理项目所有的 Java 包依赖、项目工程打包服务。
  • Git/GitLab 代码管理服务:提供 git 代码管理服务。
  • Spring Boot Admin 服务健康监控:监控微服务的健康状态、会话数量、并发数等

二、项目采用什么技术架构?

0x01 微服务技术栈

所有微服务基于 Spring BootSpring Cloud Netflix构建

  • 控制层

    Spring MVCSpring Security Oauth2Swagger

  • 业务层

    事务控制:Spring

    任务处理:Spring Task

    数据缓存:Spring Data Redis

    消息队列:Spring Rabbit Template

    搜索: Elasticsearch

  • 持久层

    操作 MySQL:MyBatisDruid 连接池、Spring Data JPA

    操作MongoDB:Spring Data Mongodb

  • 数据层

    采用 MySQLMongoDb 存储数据,MySQL 存储用户、课程等系统核心信息,MongoDB 存储 cms、配置信息。等认证模块使用 redis 储存用户的令牌信息

0x02 接口定义规范

项目架构设立接口层,接口层使用 swagger 注解描述接口的内容,接口定义规范如下:

请求

  • GET 请求时,前端请求 key/value 串,SpringMVC采用基本数据类型(String、Integer等)或自定义类型接收。
  • POST 请求时,前端请 Form 表单数据(application/x-www-form-urlencoded)和 Json 数据(ContentType=application/json)、多部件类型数据(multipart/form-data),对于Json数据SpringMVC使用
    @RequestBody 注解解析请求的 json 数据。

响应

  • 响应结果统一信息为:是否成功、操作代码、提示信息及自定义数据。

  • 响应结果统一格式为 json

0x03 微服务注册中心

两台 Eureka Server 互相注册,组成高可用。

微服务向 Eureka Server 注册自己,并在远程调用时从微服务发现目标服务地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值