淘客熙熙

主题:参考北京购车摇号方式异步响应解决12306售票体验差 -- 不远攸高

共:💬9 🌺12
全看树展主题 · 分页首页 上页
/ 1
下页 末页
家园 参考北京购车摇号方式异步响应解决12306售票体验差

从今年春节还有今年十一,我看到许多关于优化该系统的建议,这些建议基本全部都是基于实时的,可是为什么一定要实时呢?12天后购票人才去乘车,没必要非要赶在购票人点鼠标后的几分钟内告诉他结果。我觉得异步的方式完全可以很完美的解决这种人为非恶意DDOS,可以很平稳很顺利的完成购票。

首先区分一下实时(同步)方式和异步方式。

实时(同步)方式就是提交购票订单->返回购票结果->付款这个过程基本一气呵成,都需要抓紧时间连续操作(付款也必须在45分钟之内完成);异步方式则是不要求连续操作,提交订单后购票人就可以离开电脑,等约定时间系统自动反馈购票成功后再在指定时间段付款。实时(同步)方式典型就是秒杀,奥运购票和北京购车摇号都是典型的异步方式:给一个登录提交申请的时间范围,到指定时间后申请截止,系统根据申请分配名额,通知申请成功的人员付款或办理后续手续。

我的预想:购票申请篇

1、 仍然按照提前12天网络购票的办法,在D+12天7点开始提交购票申请,每个订单最多申请5张票,每个ID申请订单数不限。每个订单提交系统后,系统会审核身份证号码是否已经在该车次重复,如果重复则提醒购票人退回订单或仅仅不提交重复人员信息。身份证号被他人恶意冒用提申请订单造成本人无法申请的,去车站现场解决。购票时就解决身份证重复的问题有助于减少分配车票是重复身份证带来的额外问题,也避免非恶意的DDOS攻击。注意此时仅仅提交申请,不涉及付款。

针对同一个目的地有多个车次的问题,最简单的做法就是针对不同车次提交多个订单,所以订单数不能有限制。

2、 提交订单时间范围可以设置为比如8个小时,则截止时间为15点。该时间范围其实可以设置更长一些,比如24+8小时,但相应的,需要购票人等待的时间就更长。由于每天都卖盘,所以我认为1天作为一个周期是比较合适的。

票数分配篇

15:00,开始进行票数分配。这里需要分配的理论上是12天×每日车次的票,其实由于冷门车票供大于求,没啥可担心的;热门车票其实11天后的也不必考虑,所以重点在当天刚开始出售的车票。由于身份证重复已经被解决,剩下的其实已经比较简单,就是随机分配,当然由于订单内票数从1到5张不等(一个订单内要么全中,要么全不中),比北京购车摇号复杂,跟奥运购票类似。但技术上没有什么难度,针对每一个车次都是循环+随机;各个车次间是可以并行分配的。当前每日人次高峰是600万,车次大概是6000次,3小时应该足够完成运算了。运算完毕还需要存入数据库,发送购票成功短信,提醒购票人员付款。未中签的订单也需要保存相关信息,便于客户查询确认。

付款:

按24小时的周期,虽然申请+分配占用12小时,但可以留给付款的会多于12小时,因为理论上其实只要到下次申请截止时间前付款都没问题。在这样长的时间内完成付款应该绰绰有余,毕竟都是在网上。网站原来的23点到7点关站维护就免了吧,不带这么一直丢人下去的,就是麦当劳都24小时服务呀,这还是计算机哪。由于原来购票的原则是“抢”,对付款时间加以限制是有道理,如今都是定点处理了,其实也不必对付款时间要求太严。

利弊分析

优点:

1、避免了购票“秒杀”带来的短时间高并发冲击。虽然在提交申请的开始和结束阶段、结果公布时间并发肯定也会高,但和当前的并发相比肯定要低的多。

2、由于申请阶段基本没有严重的锁竞争、锁冲突,即使在数据库后端也是最容易并发的插入操作,因此速度可以很快,用户提交申请的体验应该可以比较好。

3、这样避免了人为刷屏造成的非恶意DDOS攻击,即使有人恶意填写海量订单,技术上避免也很容易。由此也大大降低了人为系统压力。

缺点:

1、用户无法实时得到购票结果。提交申请后最长需要12小时才能知道结果,如果购票成功再进行付款操作。对用户耐心比较考验,等待12小时后如果返回结果是没有成功,这种体验和当前形势下没有成功的体验相比较会有什么异同,会做出何种反应,可能需要心理学家,社会学家分析,我们也可以做一个简单投票调查看看效果。我的感觉,对每一个购票者来说,7点开门,7点10分购票成功可能是个非常妙的体验,可以四处夸耀;18点才知道购票成功,好的体验就没有那么强;而8点没有购票成功和18点才知道购票没有成功却是一样差的体验;从这个“朝三暮四”的现代例子来说,改为异步方式确实有些离经叛道,难怪很少有人从这方面推荐

2、原来只需要借助电脑一次,现在需要两次。

由于需求大于供给,总有人会买不到票,总有人会骂。何况有的人就是喜欢发泄,所以指望改进购票技术手段解决挨骂的问题是不可能的,但只要有了大家认可的规则,能够让那些理性的人接受,骂声能够小些就够了

另及:最大的弊病我想了想其实还是又回到了老话题:ZF的公信力。对单个P民来说,这个后台随机分配票数指不定有多少黑幕。虽然我们都知道铁路会预留关系给相关部门,但给计算机加个白名单,想要啥票要啥票,想给谁就给谁,这在技术上也没有难度。这些哪怕公证员天天趴在机房的机柜上面也没用呀,他们还在那里念“经过公证”,又有谁会信呢?尽管如此,但做一点还是好一点,毕竟要相信整个社会是会进步的。

顺便做个投票吧,谢谢!

投票:你觉得12306异步售票方式可不可行

该文是对不远攸高:突然想到的:12306为什么要做成实时?完全可以异步的细化和完善

关键词(Tags): #12306#火车#购票#异步通宝推:铁手,

本帖一共被 3 帖 引用 (帖内工具实现)
家园 火车票的时效性可比车牌和奥运门票重要的多

不如将提交信息时间往前推,而且一次可以提交多条要求,按照优先级来,买到哪张就结束

家园 提交信息时间往前推是可以的,但总的提前时间是有限的

除了春节、十一,非要大家提前3周定行程其实要求也高了,提前12天和提前20天其实差不了多少。不过给更多填写订单申请的时间是有好处的,毕竟总有的人喜欢在最后一刻着急

一次可以提交多条要求,按照优先级来,买到哪张就结束

提多条需求现在就可以,按优先级这个属于锦上添花,能实现当然好,初期实现不了大部分人应该可以接受,毕竟如果是冷门目的地大家不会重复提交,热门目的地连续中签概率较低不是么

即使产生了,不付费第二天接着其他人申购中签就好了

家园 这种方式有个致命的问题

这种异步的方式问题在于, 当客户存在不同选择时,不能及时给与答复,那是不能容忍的。 因为现在交通出行方式多种多样,你可能同时有很多选择。比如你想从A->B可以选择高铁、动车、普通列车,如果路程较远的话也可以选择A->C->B或者直接选择飞机或者长途车。当你登陆12306选择想要的火车票时,它不能给你及时回复有或者无,必须12小时后才能知道结果。这12小时内你有无法去选择其他方式(钱太多得除外)。那你很有可能最后会丢失其他机会。而且这种可能性,现在来看是很大。。。

家园 不选择铁路,走飞机和长途客车,提前11天应该是足够了吧?

这12小时内你有无法去选择其他方式(钱太多得除外)。那你很有可能最后会丢失其他机会。

这个根据我的经验似乎没有这么厉害,飞机票通常都有的,提前12天和提前11天似乎区别也不是特别大。除非是春节,那么现有模式下似乎也是一样的;长途客车好像也类似

家园 但是光铁路内也有很多种选择方式

高铁、动车、还有其他不同的班次。。。买火车票那就是争分夺秒阿。。12小时的等待期 不能容忍。。。

或者可以一次选择n个班次,然后按照优先级来选?不过感觉这种方式要求订票人有充分的准备阿。。感觉也不是太靠铺。

家园 异步方式就是不要求争分夺秒呀,除非你在截止时刻去填申请

针对同一个目的地有多个车次的问题,最简单的做法就是针对不同车次提交多个订单

8个小时,有多少车次也够你填的呀

一次选择n个班次,然后按照优先级来选

这个建议许多河友都提到了,如果是我开发,我一定一定实现该功能,但我一直觉得这个属于锦上添花,毕竟如果是冷门目的地大家不会重复提交,热门目的地连续中签概率较低不是么

12小时等待太熬人,这个~~,看来大家都是宁可死得痛快些,不愿意等待呀,也许这和上网人员分布有关:经常上网的都觉得自己鼠标够快、网速够快、机器够快

家园 其实12306忙得也就是那几天。这个都可以预见到

或者这个抓鸠方案可以就在特别忙得那几天实施,其他时间还是实时订票比较好。毕竟有时候会有急事想早点安排好时间。。等个半天真要急死人啊。。

家园 确实如此,河友也反映这几天车票已经好买了

所以仅在需求远大于供给时才有必要使用这种手段,平时还是实时方式更方便快捷

回过头看,其实12306表现还是不错的了,也就春节十一超级抢购的时候才撑不住,对比看看去年光棍节多少银行的网银倒下就知道了。对铁道这种求全责备,估计一方面有人特意黑铁路,一方面也是大家对铁路的殷切期望吧

全看树展主题 · 分页首页 上页
/ 1
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河