• Stars
    star
    242
  • Rank 167,048 (Top 4 %)
  • Language
    Java
  • Created over 6 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

本项目是基于微服务架构的班车预约系统,采用两个版本第一个版本:springboot+mybatis+dubbo+rocketmq+mysql+redis等。第二个版本:spring-cloud重构,当然,该项目也是前后端分离,前端采用比较流行的vue框架。

SchoolBus

引言

所涉及的技术包含:

  • 后端:
    • V1
      • Springboot
      • MyBatisPlus(可自定义sql语句)
      • Dubbo(RPC、负载均衡)
      • Mysql
      • Redis(监听key过期->发布订阅模式)
      • RocketMQ(最终一致性、幂等性)
      • Swagger2
      • Validated
      • Druid监测
      • Spring定时器
      • 单点登录
      • Sentinel熔断降级限流
      • 分布式唯一ID(雪花算法)
      • 持续补充...
    • V2
      • spring-cloud-alibaba
  • 前端:
    • vue
    • vuex
    • vue-router
    • axios
    • vant-ui
    • 持续补充...

计划

  • 环境搭建的文档(Java、MySQL、Redis、Zoookeeper、Dubbo和RocketMQ)
  • Redis绑定用户Token分析文档
  • 用户服务所有接口分析文档
  • 班车服务所有接口分析文档
  • 订单服务所有接口分析文档
  • 支付服务所有接口分析文档
  • 添加订单、支付和退款的业务结合消息队列
  • Redis的Key键到期策略结合订单自动取消业务
  • SQL语句调优
  • spring-cloud版本更新完毕

访问入口

文档

架构图

架构思考

  • 团队开会文档记录记录一些开会讨论的事情以及接下来要做的计划
  • 数据模型建立记录 逐渐建立数据库模型
  • 我也是第一次做这样的项目,没有什么经验,希望大家提供一些建议和经验,我也在这条坎坷的路上不断的去尝试和总结。希望大家多多支持,🙏
  • 注意:由于学生,没有能力买好一点的服务器,因此采用内网穿透技术将本地服务映射个人的阿里云。
  • 根据本校小程序的页面:pages,由于疫情期间,下单模块的页面暂时无法分析。日后会补充...
  • 根据仅有的页面:班车预约主页车次列表页面我的车票页面用户登陆注册修改页面和待定的订单和下单页面
  • 暂时采用的架构技术图,后续会改善其中的所采用的技术,并且会针对每一个所涉及的技术的使用场景
  • 后端环境搭建,暂时没有采用分布式,数据库忽略,后续补充。后端搭建
  • 后端部分启动测试,包括Zookeeper、Dubbo、Tomcat、RocketMQ、RocketMQ-Console等启动图及命令
  • 为了快速搭建项目考虑采用guns框架进行二次开发。从而将一些中间件集成进去。
  • 2.24根据讨论,绝对项目中采用哪些服务.架构图

技术选型

技术选型

架构路线图

架构路线图

环境搭建

后端环境端口

端口

环境启动

环境启动

guns

注意:在guns基础进行快速开发,使用guns的版本是:4.2

  • 我们使用的rest风格,因此上述项目中的admin和generator没有用上。
  • 创建数据库,sql在你rest的db文件中
  • 直接复制其项目中的rest和core就可以了,修改rest中的数据源,启动即可。
  • 访问http://localhost:8080/auth?userName=admin&password=admin,即可看到jwt的信息了

调试工具

  • postwoman 采用这个,没必要下载多余的插件
  • postman 谷歌插件有,翻墙即可

生成db模型

  • guns-rest的test目录下有生成数据库模型代码,注意输出目录的包名即可
  • 安装idea的easycode插件

一些文档

模块

  • 用户模块
  • 班车模块
  • 订单模块
  • 支付模块

服务端口

服务名称 端口
用户服务 8081
班车服务 8082
订单服务 8083
支付服务 8084

Gateway

服务名称 端口
GateWay 8087

Dubbo端口

服务名称 端口
用户服务 20881
班车服务 20882
订单服务 20883
支付服务 20884

文档树

.
├── doc
├── imgs
└── school-bus
    ├── guns-api
    ├── guns-bus
    ├── guns-core
    ├── guns-gateway
    ├── guns-order
    ├── guns-pay
    └── guns-user
  • doc:记录一些文档,如会议文档等
  • imgs:存放写文档的图片,方便渲染
  • guns-api: 存放业务逻辑服务的相关接口,以及各种Dto实体等。
  • guns-core: 存放一些工具类,一些公共配置文件以及常量文件等。
  • guns-bus: 存放班车和场次相关的model,mapper,service等文件。
  • guns-order: 存放订单相关的model,mapper,service等文件。
  • guns-pay: 存放支付相关的model,mapper,service等文件。
  • guns-user: 存放用户相关的model,mapper,service等文件。

前端页面

用户服务页面

太模糊了-->高清

前端用户服务页面

班车服务页面

太模糊了-->高清

前端班车服务

下单服务页面

太模糊了-->高清

下单服务页面

支付服务页面

太模糊了-->高清

前端支付页面

我的订单页面

太模糊了-->高清

前端我的订单

简历

微服务在线班车预约平台

描述

该平台是针对电子科技大学班车预约平台利用最新的技术进行重构,其中主要提供沙河和清水河的班 车场次的功能、下单功能、支付功能、退款功能等,并且按照学生需求增加相应的功能,比如未支付 订单列表,未支付订单超时自动取消等。

涉及技术

Java、Springboot、MyBatis、Redis、MySQL、Dubbo、RocketMQ 等。

设计技术

  1. 采用 Dubbo 的架构开发,整个项目分为用户、班车、订单、支付四个服务,达到易维护的效果。
  2. 基于 JWT 的 SSO 单点登录,并依携带的 Token 可以访问系统中其他服务,采用 Redis 缓存绑 定用户,达到用户登录一次处处能访问各个系统。
  3. 采用 Redis 的 list 数据结构缓存班车场次列表,并基于 Spring 定时器优化班车场次到点更新班车 状态的业务,最后配合阿里巴巴开源的 Sentinel 中间件进行接口限流达到高并发、高可用的效果。
  4. 下单和支付服务均采用基于阿里巴巴开源的 RocketMQ 消息中间件保持数据的最终一致性,并且 采用 Redis 缓存维持 RocketMQ 消息的幂等性,接着采用 RocketMQ 和 Sentinel 进行接口限流维 护系统的稳定性,最后采用 Redis 的监听 key 键过期事件保证未支付订单超时自动取消业务,达到高 并发、高可用的效果。
  5. 分别采用 Dubbo 和 Nginx 提供的负载均衡机制将班车服务、订单服务、网关分配到不同的服务 器上,达到了高性能的效果。
  6. 接下来的计划是 MySQL 读写分离、Redis 读写分离、以及分布式唯一 ID、集群管理等。