数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 7252|回复: 2

A2: 火车票购票网站优化

  [复制链接]
发表于 2013-8-25 20:43:16 | 显示全部楼层 |阅读模式
   火车,是人们出行的重要的交通工具之一。尤其在节假日,购买火车票的旅客将会非常多,能买到一张火车票是每个旅客的愿望。中国从2011年开始实行网络售票,购买火车票的方式从只能到火车票售票口排队购票,逐步发展为可通过电话订票和网站订票等多种便利的途径。网络购票给人来了便利,旅客可以不出家门在网络上就能买到车票,售票窗口也不用那么繁忙,节省了大量的人力物力。网络售票给人带来便利的同时,也出现了不少问题。典型的是2013年春节的时候,购票网站出现了包括登录、购买、付款等各个环节的问题。为了保证网站更稳定的工作,需要你帮忙提出优化意见。
为了便于对问题的分析,现对网站的订票过程做如下简化:
1、登录网站:根据用户名和密码登录网站;
2、查询余票:查找某趟列车的剩余车票;
3、生成订单:锁定剩余车票中的一张作为购买的车票,根据车票信息和购票人信息生成支付订单;
4、付款完成:车票购买完成;付款失败:车票回收继续等待预定。经分析,网站订票的瓶颈可能是以下两方面的原因:
   第一,网站并发问题,也就是同一时刻订票人数过多的问题。在同一时刻(例如1秒之间)访问网站的人数过多,服务器无法响应所有人的请求,导致无法登录、无法查询票车票等问题。在春节期间网站的访问量是非常大的,网站的日访问量可以参考alexa的记录(见参考资料)。为了缓解同一时间段内网站访问量过大的问题,网站采取了分时购票的方法,相当于分散了请求量,减轻了同一时间段并发访问过大的问题。
   第二,唯一资源问题,也就是唯一的一张车票。所有来订票的人先要锁定一张车票,如果出现多人同时请求订购同一张票,那么系统就无法判断这张车票该给谁锁定,这样系统就会让请求重试。如果一直无法锁定车票,就会导致系统死锁、订票失败。为了应对车票这唯一资源的分配问题,网站又采取了排队的方法,即请求到来先获取一个号码等待排队,这样就避免了对车票直接造成死锁。获取一个号码,入队列的过程相对于处理一张车票的过程(包括锁定车票、生成订单、检测支付等一系列操作)是非常快速的。(这个过程可以和银行的操作流程对比,先获取一个号码排队等待处理,服务窗口是处理器,按照队列先进先出的顺序依次处理)。
   订票网站想要利用一种队列来满足现在的订票需要,附件给出了这个队列的测试数据:一个队列的入队列数据和一个队列的出队列数据,这些数据只是测试队列性能使用的,不是预测这一时间网站请求量的依据。
   根据资料回答以下问题:
  1、根据队列的数据估计该队列每秒最多能处理多少数据,错误率是多少。
  2、根据网站日累计访问量数据(见参考资料)和现行的网站分时策略,模拟2013年1月17日的网站订票请求量数据,计算需要多少个队列可以满足需求(总的票数用N表示,要求入队列错误率低于0.1%,要求队列排队的时间不超过30分钟)。`            
  3、评价现行的分时购票策略是否合理,可以如何优化(要求分时不超过10个)根据优化的分时策略重新计算第2问的问题。
  4、给网站提出一个建议书,可以包括其他的方面,例如预售期、退票等,不需要建模模型说明。


对于第二题问题的分析中,模拟数据来求需要多少个队列可以满足需求,不懂,且队列排队时间该怎么考虑,请大师帮帮忙
 楼主| 发表于 2013-8-26 12:37:14 | 显示全部楼层

RE: A2: 火车票购票网站优化(大家有思路的互相交流一下)

大家交流交流啊,
发表于 2013-8-26 23:10:43 | 显示全部楼层
说点题外话。
排队这种思路完全是按传统售票的方式来解决互联网问题。队列肯定要有,但是解决不了根本的问题。
国内火车票网购的问题是一个很复杂的问题。可以看一下这篇文章:从12306.cn谈大网站架构与性能优化 <http://www.ha97.com/5169.html>。
文中还提到了另外一篇文章,是讲排队方式的。
我个人觉得,把放票时间改为每趟车发车时间的前X天,可以一定程度减少高峰时段的压力。
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-11-30 07:48 , Processed in 0.075836 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表