Online-Edu-小赵学院在线教育网站-项目总结
一、项目微服务模块划分
功能划分:
api-gateway:
网关,对客户端请求进行断言、过滤等判断后负载均衡的路由到相应微服务模块
canal-client-edu:
考虑到分库分表场景,对虚拟机中数据库(这里canal.instance.filter.regex=.*\\..*)所有表的变更进行数据同步到本地数据库,要求本地数据库名和建表结构和虚拟机数据库结构相同
common:
微服务模块的公共依赖和一些工具类以及一些全局处理类
service:
服务模块,包括前台和后台所需微服务
acl-service:
后台系统权限管理模块,整合Spring-security,构建权限管理功能,因为笔记本内存(12G)太小,处于待完成状态 //TODO
cms-service:
Redis缓存数据模块,整合Redis,缓存首页数据或者一些访问量较大且不需要轻易修改的数据,本系统缓存了前台首页相应性质数据
edu-service:
后台和前台课程服务模块,这里主要为课程的后台课程管理的CRUD以及一些其他功能
msm-service:
短信注册模块,整合阿里云短信服务,完成注册功能
order-service:
前台课程订单模块,客户进行课程购买后生成订单,通过微信支付后完成购买操作
oss-service:
对象存储模块,整合阿里云的OSS对象存储功能,主要存放一些后天上传前台客户端可访问的数据对象,例如课程封面、用户头像等
statistics-service:
后台数据统计分析模块,根据时间段对系统注册、登录人数进行统计分析以及相应时间段课程视频点播数以及新增课程数进行统计分析
ucenter-service:
用户中心模块,前台首页登录(token单点)和注册,登录方式支持微信登录以及账号密码登录等
vod-service:
视频点播模块,整合阿里云视频点播技术,包括后台视频上传至阿里云以及前台用户购买课程后通过视频凭证对相应购买视频进行观看
二、涉及技术及工具
技术点
后端:
SpringBoot、SpringCloud、MybatisPlus、Spring-security、Nacos、Hystrix、Canal、Redis、Swagger、easyExcel、JWT、OAuth2
第三方技术:
阿里云OSS、视频点播、短信服务以及微信支付和登录
版本控制:
git
运维:
Docker容器、Jenkins
前端:
Vue、Element-UI、axios、node.js
开发工具:
IDEA、Maven、centos7、SQLyog、VScode、Xshell或者SecureCRT
总结:
本项目涉及技术点以及功能业务挺多,所以在具体的实现上仅仅只是运用到相关技术的星星点点,但是作为一个自己独立完成的学习式分布式项目,我觉得很完美,项目中重复的代码我写到三四遍之后就可以不用跟着视频教学去一字一句的敲了,其中视频中老师也会留了一些尚未完成的业务功能给学习者,基本上听一下功能实现思路之后就可以自己去实现,或前端或后端都是一样,因为写多了不管脑子里有印象了,就连敲起代码来也不是第一次跟着写的那么别扭了,反正就是感觉很亲切。项目中整合各个技术点的思路以及实现方式很明确,很容易看到代码就很直观的看出实现步骤以及技术点的整合。
在项目中老师总是喜欢先分析实现思路,然后图解步骤,这一点我很喜欢,因为自己也在根据自己的思维方式将不必要或者需要添加的注释以及一些老师没有提及的步骤和知识点通过百度之后,有逻辑的将其添加至自己的笔记中。也是因为这样,后续自己实现某一功能的时候只要跟着相应的设计思路就很容易的实现相关功能。
在写项目时,有一个属于自己的桶来盛装一些第一次接触和学习的知识点很重要,虽然很多学习项目都会有相应的资料及源码,但是那不是自己的,只有自己手敲后,并且能成功实现后并一自己的思维模式总结后才属于自己,毕竟开发这种东西环境不一样引发的很多问题也只有自己经历并解决才会了然于心。
项目中也不乏一些小Bug,个人习惯还是在出现Bug时先百度,用自己的办法去解决,如果解决了,等老师时提及和解决时就对这个Bug的产生、调试、解决等了然于心,虽然时间会花费更多,但是收货也是成一定的正比的。
总的来说,这是我第一个完整的完成分布式项目,清晰的结构有助于之后微服务的学习以及开发,接下来的时间里就是在此基础上挖掘项目中所整合的各个技术点的更深层次的实战运用,然后再总结属于自己的新的开发思维
项目码云地址:
系统功能演示: