571
社区成员
发帖
与我相关
我的任务
分享很多高校提供一个教学资源共享平台,用来实现学习资源的建设和共享,同时也将课程资源平台可以作为教师日常教学辅助和学生学习及增强校企合作培训人才的一个工具。国内外已经有了一些成熟的视频流媒体共享网站,例如国内的慕课平台,国外最著名的是Coursera,为学生提供了海量的学习资源。
但是不管MOOC和还是Coursera都只主要提供了学习相关的视频教学。对于一个校园共享平台,还应该具有其他更完善的功能。比如在线考试,完成作业并提交,运行代码等功能。
本项目计划使用微服务架构,因为传统单体应用架构,将所有应用服务封装在一个应用中,不同部分的功能耦合性强,不易于拓展,可靠性弱。而微服务架构中每个服务足够内聚,足够小,服务之间是松耦合的,易于拓展。每个功能模块都是可以独立运行的,通过模块之间的相互调用实现最终的功能。
本项目基将对去年项目进行整合以及增加更丰富的功能,预期增加在线运行代码,用户认证鉴权功能,改进流媒体播放等功能,最终搭建一个集视频学习,作业提交,课程考试,文件下载,在线运行代码等功能于一体的网络共享平台。
教师端:

学生端:

管理员:


微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。
服务之间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API ) 。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。
另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务。可以使用不同的语言来编写服务,也可以使用不同的数据存储。
微服务架构具有以下优点:
根据需求分析确认的系统功能,将系统服务模块划分如下:
登录模块,文件上传下载模块,视频播放模块,在线答题模块,运行代码模块,统计模块。
为了实现单点登录和统一的认证鉴权管理,在微服务模块之前搭建网关gateway,使用JWT认证,拦截器进行鉴权,微服务模块之间统一通过网关交互。
系统架构图如下:

项目中使用了springboot以及springmvc中的拦截器,其中涉及很多涉及模式,概况如下:
Spring中的BeanFactory就是简单工厂模式的体现,根据传入beanName来获得Bean对象,先从缓存中取,缓存中没有再创建。
Spring中依赖注入的Bean实例默认是单例的。
Spring的依赖注入(包括lazy-init方式)都是发生在AbstractBeanFactory的getBean里。getBean的doGetBean方法调用getSingleton进行bean的创建。
spring AOP就是基于动态代理的,如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用JDK Proxy去进行代理了,这时候Spring AOP会使用Cglib,这时候Spring AOP会使用Cglib生成一个被代理对象的子类来作为代理。
Spring事件驱动模型就是观察者模式很经典的应用。
事件角色:ApplicationEvent(org.springframework.context包下)充当事件的角色,这是一个抽象类。
事件监听者角色:ApplicationListener充当了事件监听者的角色,它是一个接口,里面只定义了一个onApplicationEvent()方法来处理ApplicationEvent。
事件发布者角色:ApplicationEventPublisher充当了事件的发布者,它也是个接口。
Springmvc中的过滤器和拦截器使用的就是过滤器模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。来自按前端的请求被拦截通过验证之后放行,这样一层层下来最后抵达控制器。
学号:361