学成在线总结(1)

学成在线是一个在线教育平台,提供IT职业课程在线学习,它有门户、课程管理中心、系统管理中心、学习中心等系统。

门户系统负责,注册登录、门户首页展示、课程搜索等功能。
教学管理中心提供:课程管理、媒资管理、问答管理等功能。
系统管理中心提供:CMS页面管理、数据字典、分类管理等功能。

本项目采用前后端分离的技术架构、前端采用vue.js+elementui技术栈、后端采用springboot + springCloud等技术栈。

所有微服务基于Spring Boot、Spring Cloud构建
1) 控制层:
Spring MVC、Spring Security Oauth2 、Swagger
2)业务层:
事务控制:Spring 任务处理:Spring Task
数据缓存:Spring Data Redis 消息队列:Spring RabbitTemplate
搜索: Elasticsearch
3) 持久层:
操作MySQL:MyBatis、com.alibaba.druid(采用druid-spring-boot-starter)Spring Data Jpa
操作MongoDB:Spring Data Mongodb
4) 数据层,
采用MySQL和MongoDb存储数据,MySQL存储用户、课程等系统核心信息,MongoDb存储
cms、配置信息等

CMS系统总结:
我们的项目包含多个站点每个站点包含多个页面我们可以将每个页面拆分成一个一个的小页面,通过cms去管理这些小页面。当要更改部分页面时只需要更改具体某个小页面。
我们通过nginx的SSI技术将多个子页面合并并渲染输出。

学成在线总结(1)_第1张图片
CMS系统负责

  1. 页面管理
    管理员在后台添加
    添加、修改、删除页面信息

  2. 页面预览

    管理员通过页面预览功能预览页面发布后的效果。

  3. 页面发布

    管理员通过页面发布功能将页面发布到远程门户服务器。
    页面发布成功,用户即可在浏览器浏览到最新发布的页面,整个页面添加、发布的过程由于软件自动执行,无需人 工登录服务器操作。
    CMS后台系统API
    学成在线总结(1)_第2张图片
    学成在线总结(1)_第3张图片
    前端管理界面看一哈:
    学成在线总结(1)_第4张图片

1.页面管理功能就不说了,就是简单的增删改查
2.页面浏览功能:需要生成静态页面然后直接返回流给前端展示。

  • 生成静态页面步骤:
    学成在线总结(1)_第5张图片
    1.获取模型数据
    因为cms_page表中有一个字段叫data_url 我们可以直接根据这个url去请求我们需要的模型数据
    请求到的是一个CmsConfig对象,API接口就定义在当前工程中,所以直接用RestTemplate访问当前工程的接口。
    2.获取模板文件
    根据cms_page表中的templateid查询一个CmsTemplate对象 然后根据templateID去GridFS中下载文件。
    3.利用freemaker将模型数据渲染到模板文件中,然后执行静态化,直接返回给前端进行页面预览。

上面步骤当中肯定包含dataurl管理和模板管理等,这些并没有开发,业务流程如下:
学成在线总结(1)_第6张图片
学成在线总结(1)_第7张图片

在这里插入图片描述
学成在线总结(1)_第8张图片

学成在线总结(1)_第9张图片

页面发布功能:

因为之前介绍的页面预览功能会拿到模型数据和模板页面生成一个静态页面,预览功能只需要直接将这个静态页面返回给前端展示,而页面发布功能需要将该静态页面发布到该页面对应的前端工程服务器上。

我们将另外开发cms客户端 这个客户端负责将页面存储在对应的前端工程下。
为了使CMS管理系统 不依赖于cms客户端,降低耦合,我们使用到了消息队列
开发步骤如下:

  1. 前端页面点击页面发布按钮
  2. cms管理系统执行页面静态化将文件存储到GridFS中并发送页面ID消息到消息队列中
  3. cms客户端从消息队列中接收到信息,从gridFs中获取文件,存储在对应的前端工程下

因为该项目分不同的站点,每个页面都有它所在的站点,比如轮播图页面就属于门户站点
我们会为每一个站点都开发一个cms客户端程序。
这多个cms客户端程序只需要接收到自己站点的页面信息进行发布

根据这个场景我们采用了rabbitmq中的routing模式进行开发 页面发布功能
我们为每个站点创建一个队列,将站点id作为routingkey 各个cmsclient监听自己站点的队列
这样页面发布的时候把该页面的站点id为routingkey就可以转发到指定的队列由对应的cms客户端进行发布

你可能感兴趣的:(学成总结)