前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你会怎样设计铁道部购票网站?

你会怎样设计铁道部购票网站?

作者头像
四火
发布2022-07-15 19:59:51
4410
发布2022-07-15 19:59:51
举报
文章被收录于专栏:四火的唠叨

最近铁道部购票已经成为了热点话题,毛病多得一塌糊涂,如果让你来设计铁道部购票网站,你会怎么做?

这样的网站属于实时性要求较高、并发性要求非常高、容量要求一般的类型,以下是我简单的想法:

1、部署是基于 CDN 的,对于车票查询的环节来说,这是没有问题的。

2、数据库表设计上面,应当有一张车次表,每行代表一趟车,至少有这样的字段:还剩多少张,已被锁定多少张。

3、每次发生订票操作时,先去查询当前是否有余票,有的话锁定一张等待用户操作,如果半小时内无法完成,锁定票放回。

4、查询部分,集群中放置分布式缓存,存放数据的静态页面,但由于车票查询实时性有一定要求,可以设置每个查询页面有 10 分钟的生命周期,缓存文件管理算法用 LRU 就可以,被动更新。如果车票信息在本地,数据库节点应该会是瓶颈,好的缓存设计会很讨巧,可以大大减小数据库压力。

5、应用节点的负载分担是一定要做的,查询和订票操作可以分开集群,有条件的要做硬件负载。

6、静态资源合并,落到单独的域名服务器上。

7、流量控制部分,不能只给出用户提示,应当给出用户当前在等待队列中的位置,定时更新当前位置,在排队到达后,要页面通知到用户来完成操作。

8、订票当次处理成功以后,接下去的出票等等操作放在队列中进行,等待银行把款转过来,这部分也有一定实时性的要求,应当和响应用户的应用服务器分开,免得互相干扰。

还有一些疑问也值得讨论,很有意思,比如遇到那些抢票机器怎么处理。

——————————————————————————————————————————-

2012-1-14,根据大家的讨论摘选有意义的进行补充:

1、车次票需要包含若干个区间票。

2、倘若按照 10 分钟的页面缓存过期时间,用户很可能还是不愿意接受的,需要把数据直接写到内存里面,查询在内存里面查询,数据库只做适当时机下的持久化和数据同步用。

3、关于和淘宝相比的访问量,不见得有淘宝的大,见日均 IP 的统计:

关于 PV,这句话很有道理:

“12306 真的有这么大的 PV 量吗?现在的 PV 这么大,那是因为我查询 100 次,1 次也查不成功,所以我就不断的刷,这本身就是在逼迫全国人民对其进行 Dos 攻击。如果查询的成功率、订单的成功率提升了,估计 PV 会直线下降。”

所谓恶性循环变指此吧。

4、关于数据库要不要集群,从目前的系统看,瓶颈不在此,而在考虑了采用内存数据存储和直接命中以后,似乎还没有这个必要。

文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》

×Scan to share with WeChat

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档