12306售票系统后台开发需求分析和概念设计

火车售票后台开发需求分析和概念模型

1.前言

本项目是立足于目前12306火车售票系统,对售票系统从数据库的设计、接口实现,到与前端交互等,逐步分析,尽可能优化,以便提供一个高性能、高并发的售票系统。

2.项目简介

题目基本要求

  • 参考12306站点进行售票系统建模设计,尽可能接近覆盖真实线上系统,实现的功能有但不限于:
    • 用户信息注册
    • 查询余票: 根据时间,车次,站点区间,座次(一等座,二等座,硬卧,硬座…)查询余票
    • 售票: 支持一次购买同一车次的多张车票(多人),支持订单30分钟内锁定,超时释放。支付接口可以mock。
    • 退票: 支持一个用户账户下的批量退票
    • 改签: 同一用户一张车票只能改签一次
  • 所有读写接口延迟要求 <= 500ms
  • 单机支持到500qps的并发请求

3.需求分析

  1. 用户可以注册账号并登录12306客户端软件;
  2. 用户可以查看自己的相关信息,包括待出行订单、历史订单等;
  3. 用户还可以查看自己未支付的订单,和正在抢票的订单;
  4. 用户可以通过多种条件进行查询车票情况,比如起始站点、目的站点、时间和购票类型(高铁和学生票)这些信息来查询车次有无余票;
  5. 不仅可以查询余票,用户还可以通过出发地+目的地+时间查询相关的车次但是不显示余票、通过车次+时间查询该车次经过的车站和到达的时间、通过车站+时间查询当天在车站停留的车次
  6. 用户查询余票之后可以选择还有余票的车次,选择车位和乘车人然后支付票价进行购票
  7. 用户通过选择没有余票的车次来进行候补票
  8. 用户可以退票或者改签

4.人员分工

为了方便开展项目,我们对项目进行了粗略的分工,根据业务的逻辑进行了一定的拆分,不同的业务可能会运行在不同的服务器上。每个业务都至少有两个人参与,杜绝独立实现项目,促进团队合作。

  1. 个人信息,包括了历史记录、登录、注册、实名验证
  2. 查询车次,包括通过出发地起+目的地+时间查询相关的车次但是不显示余票、通过车次+时间查询该车次经过的车站和到达的时间、通过车站+时间查询当天在车站停留的车次
  3. 查询余票,购票、改签
  4. 候补、退票、支付

5.用例建模

6.业务建模

7.数据建模

为了达到高并发的效果,我们采用二级缓存,将所有与车票相关,查询频率较高的数据都放在redis中存储,数据会定时同步到mysql数据库中。







8.总结

  本文主要对12306进行概念模型分析,对其各功能模块逐步设计,对工程实践的实现有了更好的把握。
posted @ 2020-12-14 13:44  tomyu123  阅读(1667)  评论(0编辑  收藏  举报