项目简介
互联酒旅项目依托微信小程序和app客户端为用户提供线上预定酒店和旅游产品的互联网产品。项目基于前后端分离架构,前端基于uniapp开发,后端使用Spring Cloud微服务架构。
项目流程
项目架构
技术架构
- 请求DNS解析中(包括了WAF、CDN、防火墙)
- 进入nginx集群(作用:反向代理与虚拟主机)
- 由nginx集群进入到Webflus网关 ,作用:↓
- 通过SpringClousGetway网关中的Predicate(断言)、Filter(过滤)
- Sentinel+Shard(认证+令牌限流)、中间还可以整合Redis来实现令牌限流(请求限制)
- 结合nacos进行动态配置、服务注册发现、监控报警、日志。
- Webflus网关由Ribbon(负载均衡)和Sentinel(熔断降级)链接业务集群,业务集群作用:
- 先通过SpringSecurity框架也OAth2认证中心整合JWT进行公钥私钥的颁发授权与相应验签认证功能。
- SpringBoot在业务集群中通过openFeign来进行业务集群间业务的调用
- 整合Redis:分布式缓存
- 整合MySQL:持久化操作
- 整合RabbitMQ:异步调用
- 整合ES:全文索引
- 整合OSS:阿里云OSS云存储服务
- 整合JOB:xx-job进行分布式任务调度
- 整合kibana、logstash ... ... 等
- 业务集群使用分布式有
- 分布式主键
- 分布式锁
- 分布式事务
- 分布式事务采用CAP和Base定理
- 日志收集使用下
- 通过Beats:数据采集器
- 进入Logstash:实时数据传输与过滤
- 进入Kafka:分布式发布订阅消息
- 进入ElasticSearch:全文搜索引擎
- 进入Kibana:可视化管理ElasticSearch
- 以Skywalking为核心的运维监控中心可用提供链路追踪和监控报警机制,与运维报警系统Prometheus结合Grafana最终和Alertmanager通过短信、微信或者邮件的形式给模块负责人发送警告通知。
- 最后Developer将代码文件上传到GitHub上通过docker容器部署,使用K8s AP对资源进行编排,管理应用的全生命周期,同时也提高发布与更新版本的效率,然后通过Jenkins Pipeline进行整个构建、测试、交付等持续集成,运维人员继续对这些进行维护。
工程结构
数据库设计
使用工具:chiner
API设计
使用工具:APIPost
项目编码
项目结构
- hotel—common 工具类及通用代码模块
- hotel—mbg—plus MyBatisGenerator生成的数据库操作代码模块
- hotel—auth 基于Spring Security Oauth2.0的统一认证中心
- hotel-gateway 基于Spring Cloud Gateway的API网关服务
- hotel—monitor 基于Spring Boot Admin的监控中心服务
- hotel—search 基于Elastic的搜索系统服务
- hotel—config 配置中心服务
- hotel—admin 后台管理系统
- hotel—portal 门户网站服务
项目心得
- 学习了整个项目的流程。
- 项目流程梳理
- 需求分析
- 数据库设计
- API设计
- 代码编程
- 代码优化
- 项目部署
- 项目总结
- 学会使用Git仓库,进行代码管理
- 针对代码优化
- if语句直接返回,避免多次循环
- controller层不做业务处理,业务处理放在service层
- 命名规范(见名知意)
- 不使用try-catch
- VO DAO 大写
- 规范注释
- hutool工具的使用
- 容器部署
- API接口管理
- 其他工具使用
- 团队协作