?基于SpringBoot + SpringCloud+Spring security + Oauth2+ ElasticSearch + RabbitMQ + Logstash开发的在线教育系统
在线教育平台服务端基于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等
CMS(Content Management System)即内容管理系统,本项目对CMS系统的定位是对各各网站(子站点)页面的管理,本项目的CMS系统不去管理每个子网站的全部资源,比如:图片、CSS、html页面等,主要管理由于运营需要而经常变动的页面,从而满足根据运营需要快速开发、上线的需求。
功能包括:
1、站点管理,站点就是本项目各各子网站,站点信息包括:站点名称、站点域名、端口、服务器物理路径等。
2、模板管理,由于要对页面进行静态化,使用freemarker引擎技术,所以需要定义模板。
3、页面管理,包括:页面添加、页面修改、页面删除等操作。
4、页面预览,对页面静态化,在浏览器预览页面静态化内容。
5、页面发布,将页面静态化后发布到所属站点服务器,通过rabbitmq实现页面的解耦发布。
功能需求
每个教学机构都可以在媒资系统管理自己的教学资源,包括:视频、教案等文件。
媒资管理的主要管理对象是课程录播视频,包括:媒资文件的查询、视频上传、视频删除、视频处理等。
本项目采用 HLS 技术实现视频点播
1、使用FFmpeg对视频进行编码处理,生成m3u8文件及ts文件
2、使用Nginx作为媒体服务器
3、客户端使用video.js播放视频
使用阿里云oss服务实现图片上传的需求
架构图
不管是来自于客户端(PC或移动端)的请求,还是服务内部调用。一切对服务的请求都会经过Zuul这个网关,然后再由网关来实现 鉴权、动态路由等等操作。Zuul就是我们服务的统一入口。
服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由、均衡负载功能之外,它还具备了权限控制
等功能。为微服务架构提供了前门保护的作用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体能够具备更高的可复用性和可测试性。
主要功能
身份认证与安全:识别每个资源的验证要求,并拒绝那些与要求不相符的请求。(对jwt鉴权)
动态路由:动态地将请求路由到不同的后端集群。
负载均衡(loadBalance)
Spring security + Oauth2完成用户认证及用户授权
认证授权流程如下:
1、用户请求认证服务完成身份认证。
2、认证服务下发用户身份令牌和JWT令牌,拥有身份令牌表示身份合法,Jwt令牌用于完成授权。
3、用户携带jwt令牌请求资源服务。
4、网关校验用户身份令牌的合法,不合法表示用户没有登录,如果合法则放行继续访问。
5、资源服务获取jwt令牌,根据jwt令牌完成授权
基本架构
主要功能就是对各种服务进行管理。
在虚拟机中通过docker进行以下中间件与数据库的配置:
并将配置文件中所有和虚拟机相关的ip进行修改
本机中需要的配置:
封存在config文件夹下,包括项目中最终版本的nginx.conf,以及本项目所配套的完整mongodb和mysql数据库