1. 项目总体内容划分:
- 项目介绍
- 注册登录
- 目的地
- 旅游攻略
- 旅游日记
- 内容评论
- 数据统计
- 网站首页
- 项目相关
2. 项目介绍
基于SpringCloud Alibaba+Spring boot的分布式微服务旅游点评网站。面向的受众是旅游爱好者。致力于打造一个真实详细的自助旅游咨询平台。提供景区旅游、宾馆酒店、渔乐家住宿、旅游车船、休闲娱乐、旅游购物等服务,是一个点评类内容的互联网旅游导向的项目。
-
核心模块:
目的地、旅游攻略、旅游日记、站内搜索。 -
用户与角色:
普通用户、后台管理员、游客 -
系统关键词:
平台、后台管理 -
系统基本结构
展示前端 (所有客户使用)、管理后端 (企业营运人员使用)、数据服务(项目数据维护)
2.1 项目目的
- 为了了解整个旅游点评项目各个流程和需求,对实际项目的开发有一个较为深刻的理解;
- 掌握项目中的一些重要的第三方工具/框架;如:oss、CKeditor、vue等的使用;
- 掌握提升自我价值的知识点;如:redis、mongodb、es、mbp等;
- 掌握如何从0到1项目的开发;
2.2 项目需求
2.2.1. 前端旅游网站
2.2.2. 后端管理
2.3 项目演示
2.4 技术路线
数据库:mysql+redis+es+mongodb
持久化层:spring-data+mbp
业务层:springboot
Web:springMVC
微服务方案:springcloud alibaba
前端:管理后台 jQuery+BootStrap3+layui+vue 前端展示 vue+css+jQuery
开发模式:管理后台 前后端分离 前端展示 前后端分离
2.5 项目搭建
2.6 项目细节
3. 微服务项目拆分
3.1 模块划分
- 目的地模块
- 攻略模块
- 游记模块
- 机票模块
- 酒店模块
- 评论模块
- 问答模块
- 搜索模块
- 用户模块
3.2 服务拆分原则
3.2.1 基于业务逻辑
简而言之就是基于模块去拆分
可能由于模块之间耦合度高造成一定的问题
3.2.2 基于稳定性
一个稳定的服务 和一个不稳定的服务
不稳定的服务频繁更新,会造成稳定的服务出现问题
3.2.3 基于可靠性
按照可靠性进行排序,对可靠性要求高的核心模块归在一起,对可靠性要求不高的归在一起
核心服务 非核心服务
3.2.4 基于高性能
对于用户访问量大的模块,要求服务性能好,单独拆分
对于请求量不大的服务,可以划分一起
3.3 拆分结果
- 文章模块(旅游目的地管理攻略,游记管理)
- 评论模块(文章评论管理)
- 用户模块(登录注册)
- 搜索模块(基于es实现全文搜索)
- 数据模块(文章数据统计)
- 问答模块(暂不考虑)
用户服务、文章服务、点评服务、数据服务、搜索服务
4. 开发周期与人员配比
- 产品公司
周期:3个月
人员:后端6+ 前端3+ - 外包公司
周期:3-4个月
人员:后端5- 前端2
5. 项目结构规划
微服务:用户服务、文章服务、点评服务、数据服务、搜索服务
网关:网关服务
前端服务:后台管理服务管理前端、前台展示页面服务
- 父项目
- 网关
trip-gateway - 前端
trip-website
trip-mgrsite - 公共模块 父项目
trip-common
trip-common-core
trip-common-redis
trip-common-es
trip-common-xxx
... - 微服务 api 父项目
trip-server-api
trip-article-api
trip-comment-api
trip-user-api
trip-data-api
trip-search-api - 微服务
trip-server
trip-article-server:文章/目的地
trip-comment-server:评论
trip-user-server:用户
trip-data-server:数据统计
trip-search-server:搜索
- 网关
6. 项目创建
jdk:1.8
创建父项目trip-cloud:使用父项目进行统一依赖版本管理
创建网关模块trip-gateway:spring-cloud-starter-gateway spring-cloud-starter-alibaba-nacos-discovery
创建两个前端项目模块:trip-website trip-mgrsite
创建公共模块trip-common:不管理依赖,作为父模块的存在
trip-common-core:公共核心模块,导入lombok依赖
创建server父模块
创建api父模块
7. 用户服务
7.1 用户实体类
7.2 配置文件
7.3 小细节
使用构造方法注入:学习这种构造方法,与Autowired注入的不同之处
配置nacos命名空间:每个项目有自己的命名空间,不同的项目放到不同的命名空间下
本地配置转移到nacos配置中心:本地使用bootstrap.yam
配置文件profiles:activate:dev环境表示:开发环境
7.4 共享配置
7.4.1 单项目配置共享
nacos共享配置文件,使用profile:activate:test(dev)一键切换。