铁道部网络购票网站存在的一个大问题----一个大大的事务!!!
来源:互联网 发布:安徽师范大学网络教育 编辑:程序博客网 时间:2024/04/29 22:30
原来的帖子《铁道部网络购票网站存在的一个大问题----一个大大的事务!!!》放到这里:http://blog.csdn.net/dragonimp/article/details/7192777
这几天的评论里面,大部分是比较理性思考的,而也有部分朋友不理解全文就进行批评。首先非常感谢大家的关注,但也希望在评论前认真地阅读文章内容,冷静思考。
这里对原来帖子的观点和思路,以及大家的评论里面我个人比较赞同的内容重新做了整理,内容如下,欢迎大家拍砖。
关于铁道部购票网站业务流程的问题分析和改进建议----可减少大量并发请求
- 现有购票流程问题
优点是:先锁定票,然后再支付,确保客户支付成功都有票,“客户满意度高”。 缺点很多,个人觉得这个流程问题也是造成目前网站不堪重负的原因之一,具体说明如下:
1、 票被锁定,但实际未销售。因为支付过程存在不确定因素,可能因为银行系统问题或者本人操作原因或者其他各种原因,没有支付完成。更有可能有人给你锁定了却不支付。
2、 对于传统渠道,只要系统实际票没售出,他就可以出票,但现在一旦余票全部被锁定,此时虽然实际还有票,但现在他出不了,而且他无法跟网上一样在队列等待,他只能回到队伍重新排,但轮到他的时候票可能还是锁定状态,他根本无法买到票。在我的原帖里提到这个事情,我亲身经历了在火车站被告知票全部被网站锁定了,去网上还能查到很多余票,并且经过半个多小时经过很多次的订单提交后终于买到的情况。可以想像一下,在我去火车站的那个时间点,其实还是有很多票的,如果那个时候给我票了,我就没必要去网站又贡献了那么多点击量。而且这个时候我已经骂娘无数次了,你明明有票,我这都来排到队了,干嘛不直接给我买啊。
3、 因为支付结果具有不确定性的原因,没有锁定到票的人,就想尽办法来刷新等待别人没支付成功的退票,对于买票的人,也很浪费时间和资源,需要耗着等,对于大部分人来说,本来几分钟完成的事情,现在买不到的话就可能要好几个小时甚至更多。更重要的问题是造成了大量的访问,平白增加了造成大量系统请求,浪费系统资源。而不管买不买得到,本来每个人买票就访问一次就好了,结果现在不知道要访问多少次了。我猜这也是12306网站访问量已经到达14亿的原因之一。
- 建议的流程及收益
这里的核心思想就是想办法把现在的访问量尽量减少到每人一次的话,那算下来访问量将可能少掉几十倍。而经过简单的流程调整就可以达到这样的效果,提升性能,减少访问量,收获会比任何海量设计都来得容易,实在。流程优化说明如下:
1、 基本思想:去掉锁定功能。在下单后进行支付,支付完成直接出票,出票时如真的没票了,那就退款。(看到这里别急着评论,请继续往下看完,看完再客观思考一下利弊,谢谢。俺实在没有时间重复解释每条评论,很多没看完就反对的,大部分可能是站着说话不腰疼的----自己可能根本不买票。可以想象一下当年没准也有这样的提案但被某些人一刀否决的场景)
2、 提前支付:前面的下单和支付过程可以提前完成,这个可以根据情况定,但由于这个过程是提前的,所以大家完全没有必要在一个时间点进行,于是系统压力就分散了,并发需求大大下降。大家也可以从容支付,不要数着那45分钟的时间来完成。
3、 批量出票:在遇到秒杀情况(大量抢同一个车次的情况),出票则可以考虑批量出,也就是收集所有已经支付的订单,按照一定的规则(时间或者有人建议的抽奖的方式都行)进行分配,这个过程处理简单,无论有多少请求,因为是在后台处理,相信性能都没有问题。
4、 批量出票2:下单时可以做个跟银行账户金之类的或股票之类的“挂单”,你支付完钱,就可以把这个单子挂着,系统一旦有票,一旦轮到你了,就给你成交,也就说,你只要交完钱,只要你愿意,你可以把这个订单留着,等着系统给你出票了,但你如果提交得实在太晚,都没有票也可以告诉你,你自己撤单,把钱退到你自己在网站的“账户”下,可以接着下单。(这个方法有些网友的评论也提到了,我觉得很好。)
5、 及时退款:由于存在支付完但没票的情况,所以必须能及时给人退款。考虑银行应该都提供批量转出(退款)借口,第二天或第三天即可转回客户帐。典型的比如支付宝的提现功能,好像就是第二天到账(现在还看到一个2小时速体现功能)。而这个过程因为也是批量文件交互,也不存在大家担心的流量啊资源什么问题,这是银行日常问题的业务之一,性能更不在,也没有增加什么成本。而铁道部如果想要实现及时退款,我想他不可能输给支付宝吧,我想这不是技术问题,而是政治问题。
6、 这个流程可以得到的收益就是,每个人只要支付一次,提交一次订单就不用操心了,不管买不买得到,答案在提交的时候就已经确定,也不需要等待,在网站上耗着,从系统性能来说,那就是可能减少了几十倍的并发访问需求,系统整体可用率得到保证。但要付出的一个代价就是在秒杀情况下,可能需要退款,这就会造成大家的质疑(帖子后面的留言就能看出来了,很多人没看清楚全贴,就在那边骂了),但如果及时进行批量转出,不消耗资源但又能快速(2小时)退款,这个问题解释清楚也许大家也能支持。
对比两个流程图:
- 铁道部网络购票网站存在的一个大问题----一个大大的事务!!!
- 铁道部网络购票网站存在的一个大问题----一个大大的事务!!!
- 铁道部购票网站不是单纯的电子商务
- 铁道部购票网站可能造成另一次的密码危机
- 对铁道部12306火车票购票网站的浅析
- 大大的一个决定
- [置顶]铁道部购票网站可能造成另一次的密码危机
- 铁道部12306火车票购票网站浅析
- 大型企业网站建设存在的十大问题分析
- 铁道部关于火车票电话订票、网络购票及预售期调整的最新通知(注释版)
- 技术就是一个大大的迷宫
- 技术就是一个大大的迷宫
- 从铁道部12306.cn网站漫谈电子商务网站的“海量事务高速处理”系统
- 关于CreateService的一个大问题:权限问题
- 一个小失误引起的大问题
- 一个不错的网络硬盘网站
- 一个不错的网络学习网站w3school
- 我的一个模块化程序(自助购票)
- Qt 各种数据类型转换
- 使用Apache+Tomcat比单独使用Tomcat的优缺点
- WebService写系统日志
- 在纯DOS下查找文件及文件中的字符串的方法 操作系统---System
- 推荐引擎算法学习导论
- 铁道部网络购票网站存在的一个大问题----一个大大的事务!!!
- JBoss6 消息驱动文件配置
- wml+jsp开发手机网站
- Java正则表达式应用详解
- C语言和设计模式(命令模式)
- WAP网站设计之xhtml mp
- 组织行为学笔记:第十三章 技术与人
- xhtml mp
- DRP项目(五)----servlet运行原理