1 业务复杂度高于淘宝
1.1 动态库存
上海-南京-北京:
- 买上海-北京,就是一张票
- 买上海-南京,南京-北京,就是两张票
1.2 选座功能
下完单还能选座位
1.3 线上+线下
淘宝只能线上。
1.4 不停刷票
即使没票了,还是会被刷。持续高并发业务,需要更综合的高并发设计。
1.5 杜绝超卖
2 业务量
- 2020年高峰期:一天的请求量大概1600亿,平均180万/s
- 平均一年售出30亿张,高峰期日售票能力达到了2000万张
- 高峰期1秒可卖出1300张票。淘宝双11: 58万笔/秒
3 解决系统忙
3.1 提高处理能力: QPS和TPS
- 堆积硬件
- 软件:Gemfire 商业软件分布式内存数据库
- 算法:模型、逻辑
3.2 削峰
- 业务:验证码、分时段、排队(反正最后能买到就行,我等得起)
- 技术:限流、异步
4 模型设计+逻辑实现
4.1 余票查询
记录站站余票。一列火车有5个站,可拆分成4+3+2+1=10条站站记录。
将卖票变成01二进制数的计算
4.2 座位购买
记录座位销售详情。
一列火车有5个站A~E,1号座位: 0111(参照 4.1 最后的销售详情值),代表只剩A~B可买。
上面两步要保证事务性。
标签:余票,4.1,记录,系统,12306,高峰期,淘宝,设计,座位 From: https://blog.51cto.com/JavaEdge/8938025