并发购票系统开发(第二天)
一.核心抢票接口开发(重点!!)
主要分为四个步骤:
*步骤一:规范请求与响应数据
创建数据验证与序列化模型文件app/schemas.py
高并发接口中,为了防止浪费MySQL连接资源,我们对前端输入参数的校验必须在最外层完成
使用Pydantic v2中的内容,严格操控前后端交互的数据格式
*步骤二:编写核心抢票业务逻辑(乐观锁防止超卖)
创建app/api/tickets.py,也可以称为“路由”,这里是实现高并发抢票的核心逻辑
为了实现高并发,使用乐观锁进行操作,通过使用version的判断,确保在高并发情况下,只有第一个执行更新的人能够成功,其余的所有人都会收到冲突请求,从而保证不会超卖
*步骤三:组装路由器与总入口
现在路由已经创建好了,我们需要创建主入口将路由挂上去,让整个web服务器能够真正跑起来
创建app/main.py。建立FastAPI的主入口文件
*步骤四:简单测试
启动web服务器,模拟一次真实抢票
第一次抢票:车票状态从0变成1
第二次抢票:显示该座位已被锁定或售出,代表防超卖成功
二.订单管理和状态机设计(高并发状态扭转)
*步骤一:规范订单查询与支付的模型
在app/schemas.py中添加几个接口,先把“中间商”搞定
*步骤二:编写订单查询与模拟支付业务逻辑
创建app/api/orders.py文件
专门负责处理订单详细查询和模拟支付,要实现一个基础的状态机守卫:只有状态为零的订单才可以进行支付,防止重复扣款或对已取消的订单进行支付,状态为1是锁定,2是已售出。
*步骤三:总入口挂载路由器
order.py已经创建好了,所以要将接口接到主入口,将订单路由挂载到主入口即可
*步骤四:简单测试
支付之后,车票显示已激活,在datagrip中看到车票状态变为2,version变为1(有人购票),代表成功了
浙公网安备 33010602011771号