当前位置 : 主页 > 编程语言 > java >

带你分析 12306 系统设计

来源:互联网 收集:自由互联 发布时间:2023-12-28
1 业务复杂度高于淘宝 1.1 动态库存 上海-南京-北京: 买上海-北京,就是一张票 买上海-南京,南京-北京,就是两张票 1.2 选座功能 下完单还能选座位 1.3 线上+线下 淘宝只能线上。 1

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可买。

上面两步要保证事务性。

【文章原创作者:美国服务器 http://www.558idc.com/mg.html提供,感恩】
上一篇:HTML对接PUSDN富文本编辑器 - 编辑文档
下一篇:没有了
网友评论