当前位置: 首页 > news >正文

12306售票系统分析与实战

image

1. 内容介绍

MVP:Minimum Viable Product 最简化实行产品
核心功能:

  • 实体管理
  • 生成座位
  • 放票
  • 查询余额
  • 抢票
  • 生成订单
  • ...

核心内容:

  • 需求设计
  • 数据库设计
  • 项目搭建
  • 流行的设计思想
  • 后台管理实现
  • 前台查余票及购买
  • 组件使用及实践

主要技术栈:

  • springboot2.x
  • mybatis
  • elasticsearch
  • redis
  • rabbitmq
  • mysql
  • sharding-jdbc
  • canal

2. 需求设计与拆解

2.1 12306 购票分析

用户查询车次时需要提供的数据

  • 出发城市/到达城市 | 出发车站/到达车站
  • 出发日期
  • 座位类型
  • 火车类型:高铁/动车

车次查询结果

  • 车次
  • 车次详情
  • 出发/到达时间
  • 时长
  • 座位类型及等级
  • 车票价格
    创建订单前的数据页面
  • 车次
  • 车站
  • 时间
  • 座位
  • 乘客信息
  • 抢票操作

订单创建页面

  • 车次
  • 车站
  • 实际座位
  • 支付信息
  • 支付/取消操作

2.2 业务实体确定

  • 城市:TrainCity
  • 车站:TrainStation
  • 车次:TrainNumber
  • 车次详情:TrainNumberDetail
  • 座位: TrainSet
  • 乘客:TrainTraveller
  • 用户:TrainUser
  • 订单:TrainOrder
  • 订单详情:TrainOrderDetail

2.3 核心流程说明

  • 基础数据准备:城市管理 ==> 车站管理 ==> 车次管理 ==> 车次详情管理
  • 管理员日常运维:生成车票 ==> 搜索车票 ==> 放票
  • 用户操作:查询指定日期车票(车次及余票)==> 提交订单 ==> 查看/支付/取消 / 维护乘客信息

2.4 任务拆解与业务介绍

  • 基础数据管理

    • 城市管理
      • 新增城市
      • 更新城市
      • 查询城市
    • 车站管理
      • 新增车站
      • 更新车站
      • 查询车站
    • 动车车次属性
      • 动车类型
        • CR2
        • CR5
        • ...
      • 座位等级
        • 商务座
        • 一等座
        • 二等座
      • 座位价钱
        • 成人价
        • 学生价
    • 车次管理
      • 车型及座位维护
      • 新增车次 数据写入es
      • 更新车次 数据更新es
      • 查询车次
    • 车次详情管理
      • 新增车次详情
      • 删除车次详情
      • 车次详情列表查询
      • 根据车次id查询车次详情列表
  • 日常运维
    image
    image
    image
    image

    • 实际座位管理
      • 生成座位:sharding-jdbc分库分表
      • 座位数据同步:cannal异构写入redis
      • 座位查询:影响分库分表的设计
      • 手工放票:cannal异构写入redis
  • 用户端维护

    • 查询车票
      • 站点列表选择
      • 确认涉及的车次:借助es获取满足条件的车次
      • 查询涉及的车次详情
      • 查询满足要求的座位:确认每一段路程都未被占座的座位

image

  • 提交订单
    • 实际占座
      • 单个座位占座成功 整体占座成功
      • 单个座位占座失败 尝试新座位
    • 生成订单及详情
      • 成功, 等待支付
      • 失败,占座回滚 回滚失败?
  • 其他
    image

image

3. 项目搭建与DB设计

4. 核心功能开发

5. 高可用保证

6. 课程回顾与总结

http://www.gsyq.cn/news/51417.html

相关文章:

  • Java StringTokenizer 类 Scanner 类详解
  • Java 断言(Assert) 简介
  • 实用指南:IntelliJ IDEA 2023中为 Spring Boot 项目添加注释模板
  • 量化存储墙(三):GEMM EMA 下限解析解以及硬件静态资源分配设计
  • c# 获取当前时间
  • YOLOv3 深度解析:网络架构、核心改进与目标检测实践 - 指南
  • ai学习机是不是智商税?到底有没有用?2025年学习机推荐指南
  • docker命令提示插件
  • C语言和C++有什么区别
  • Snipe-IT支持Oauth2登录
  • 绝对值的性质
  • 智能硬件利用小聆AI自定义MCP应用开发操作讲解
  • Linux - sudo -i
  • 科学计算复习
  • 2025年11月石笼网厂家最新推荐,聚焦资质、案例、售后的五家企业深度解读!
  • windows安装mingw
  • filebeat + logstash接入OpenStack日志
  • 11 月 13 日
  • Lombok踩了无数次的坑
  • 11 月 11 日
  • 2025年烘干机厂家排行榜前十强推荐:行业精选与选择指南
  • [论文笔记] Lifting On-Demand Analysis to Higher-Order Languages
  • 全国性搬家公司推荐榜:从运费优势、专业度、靠谱口碑、费用便宜划算等综合实力排名
  • Invicti v25.11 发布,新增功能简介
  • 2025-11-14 PQ v.Next日志记录
  • 微前端架构演进:决策、实践与协同
  • OI 技术动作 注意事项集合
  • 大模型基础补全计划(七)---Transformer(多头注意力、自注意力、位置编码)及实例与测试
  • dfad
  • 2025年品质卓越的羊毛地毯工厂综合推荐与选择指南