论坛首页 Java企业应用论坛

对于网上购票系统12306,如果你是架构师,你会怎么办?

浏览 37550 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-01-13  
画了个图,如下
  • 大小: 115.3 KB
2 请登录后投票
   发表时间:2012-01-13  
情已逝 写道
alan0509 写道


估计都是没有坐过火车的,试问。。

你从广州到北京,
到了长沙 ,你旁边的靓妹下了,这个座位你还要留着给从长沙上来的人吗???

如果这样,站票还一个价,难道那靓妹的钱比你的钱大?


以前一个座位只卖一次票。

现在确实是中途下车了可以再卖票的,至于公平不公平就不知道了。

铁路本来就是按里程收费的,所以才会导致业务的复杂性。老实说没有见过千万级数据处理的人,设计出来的方案肯定是臆想,很难满足实际需要的。
0 请登录后投票
   发表时间:2012-01-13  
ieanwfg201 写道
linliangyi2007 写道

楼上的大谈NoSQL+RDB是辛苦了,换我也会采用类似方案。但是

那帮子搞这套系统的人说不定连啥子redis都不知道呢。

不是哥小看人,而是体制内的事情就是这么荒唐!

我们整天谈事物完整性,这个几乎是做IT数据库的基础知识和基本要求,当我看到CCAV
的新闻说,钱扣了,票没出,真是让哥大跌眼镜!这他x连最基本的东西都没了,还奢谈个屁的性能,高并发!


钱扣和出票有半毛钱关系呀,不扣钱还不是照样可以出票,两个完全是调用的外部系统,敢问如何做到一个事物中?求解。要知道就算是航空业务系统将订票和查票分开这样子,也是又无法出票的情况的。


你以为事务的概念就是那么狭义的单数据库或者单系统?!典型是没做过跨系统集成的人才会有这样的想法。
0 请登录后投票
   发表时间:2012-01-13  
诺亚之舟 写道
情已逝 写道
alan0509 写道


估计都是没有坐过火车的,试问。。

你从广州到北京,
到了长沙 ,你旁边的靓妹下了,这个座位你还要留着给从长沙上来的人吗???

如果这样,站票还一个价,难道那靓妹的钱比你的钱大?


以前一个座位只卖一次票。

现在确实是中途下车了可以再卖票的,至于公平不公平就不知道了。

铁路本来就是按里程收费的,所以才会导致业务的复杂性。老实说没有见过千万级数据处理的人,设计出来的方案肯定是臆想,很难满足实际需要的。


我提的方案 http://www.iteye.com/topic/1119804 就考虑到了中途下车的情况,也没见复杂的没法做。
0 请登录后投票
   发表时间:2012-01-13  
linliangyi2007 写道
抛出异常的爱 写道
linliangyi2007 写道
jiaoronggui 写道
情已逝 写道
看了这多回复,各位都是网商的应用做多了吧。。

有没有从铁路售票的业务去考虑架构,
这个系统需要支持超大并发像秒杀一样一秒钟就把票卖完吗?

我觉得就在原来的系统上在做个叫号系统就行了,限制进入购票中心系统的用户。轮到号了才允许进入买票。
体验方面,提示用户前面排队的人数,按照实际系统每秒出票数量计算出需要等待的时间并告诉用户。

说白了就是用户体验做做好就行了。



这哥们思路新颖啊。。。支持


关于排队的思路,我昨天在隔壁帖子中就给出了基本的思路了

引用
1.排队等待子系统
  
  如此大的并发量不是简单的群集能承受的,因此,系统需要一个缓冲区,就好比在窗口面前排队一样,在进入订票流程前,应该有个排队处理系统,简单的页面,让电脑面前的用户知道自己的请求已经提交,系统慢,大概还需要几分钟才能受理你的订票请求。

  如果大家玩过wow,下过魔兽的副本,就知道有个副本排队系统了,这样也一样。
  此系统需要大量的HTTP前端服务器,接受用户请求,但不需要很复杂的业务逻辑。

2.订票流程处理子系统

   进入该子系统的用户开始正式的订票流程,如,填写各种表单。该子系统关键在于需要一张表,用来记录用户已经订出的票,扣除系统剩余票数,这样不至于用户交钱了票没了。只有用户取消订票时,将票退回系统。
   同时,该系统应该记录用户在订票流程的日志。


3.订票确认与分发子系统
   用户完成所有信息填写后,进入该子系统,该系统负责最终登记用户的订票信息,并正式的将票据出售,同时从用户的资金账户中扣除钱款,并在系统中锁定票号。
    用户将从这个系统中,最终确认自己的购买的票据时间,票据,出发到达等信息,即提供最终票务状态的查询。


剩下的具体设计,如,数据库集群设计,负载均衡设计,动态服务扩展设计,高可用性设计,高速缓存设计,这些议题大家平时都在讨论,这里就不多说了。

大方向设计出来了,小细节的可选方案就灵活了。我就不信这样的设计会出现钱扣了,票没出的情况...


1.如果秒杀在设计方案上是个伪命题......
2.显示方式以域名区分.
bj_sh.12306.com\2012\1\20_21_22,返回北京到上海的20号到22号之间的可用车次最多七天.
sh_bj.12306.com\page\1返回上海到北京的可用车次可案星期翻页
这样可以水平集群.不同压力使用不同服务器与策略.

3.用户一般不需要注册用户.所以只需要有身份证号,姓名,手机号,在前台用一个隐藏域保存不用存数据库就可以减少集群的压力
4.先行使用支付宝支付.如果有票那么就可以支付.并等待(1小时一次公布)
5.使用撮合算法.撮合最大可能性.并去掉已购票的身份证号,手机号
6.用户查寻放票榜,不成交的号进入下次池中
7.支付宝将支付后的定单完成.不点击完成的号成为不成交号进入下次池中,
8.如果一直没有买中的票则从支付宝退款.
9.可以短信提示注册号 增高 机器人刷票.成本



牛人驾到,直接辗压那些“系统超复杂”论调!

蓝山,这个绝对牛,极其有可行性,分析的相当透彻,学习,拜读了。
0 请登录后投票
   发表时间:2012-01-13  
linliangyi2007 写道
wangda.cn 写道
楼主同志,你说的这些在网上随便一搜一大堆的方案啊。这些没有用,起不了关键作用。你要先了解铁路订票的业务以后才有资格说话。
订票这套业务肯定比你我想的都要复杂的多。


"订票这套业务肯定比你我想的都要复杂的多"多么冠冕堂皇的理由啊,有了这个理由,你说啥都没用!

一句话,你们地球人的智商是做不了这个系统的!


体制推卸责任就两招:
1: 神秘主义,这事我搞砸了是客观条件太复杂了,你们P民不懂的。但是从来没有解释复杂在哪的。常用句式:你不懂的,别废话。
2: 二元论,只给你“不做”和“做差”两个选项,绝口不提“做好”这个选项。常用句式:你们p民真难伺候,做也挨骂,不做也挨骂。
1 请登录后投票
   发表时间:2012-01-13  
ieanwfg201 写道
linliangyi2007 写道

楼上的大谈NoSQL+RDB是辛苦了,换我也会采用类似方案。但是

那帮子搞这套系统的人说不定连啥子redis都不知道呢。

不是哥小看人,而是体制内的事情就是这么荒唐!

我们整天谈事物完整性,这个几乎是做IT数据库的基础知识和基本要求,当我看到CCAV
的新闻说,钱扣了,票没出,真是让哥大跌眼镜!这他x连最基本的东西都没了,还奢谈个屁的性能,高并发!


钱扣和出票有半毛钱关系呀,不扣钱还不是照样可以出票,两个完全是调用的外部系统,敢问如何做到一个事物中?求解。要知道就算是航空业务系统将订票和查票分开这样子,也是又无法出票的情况的。

这个基本上是找喷的,跨系统来操作的例子太多了,如果是央行的系统,不好意思又提出来央行了,做不到这一点,就差不多一切可以妄谈了。
0 请登录后投票
   发表时间:2012-01-13  
alan0509 写道
jiaoronggui 写道
情已逝 写道
看了这多回复,各位都是网商的应用做多了吧。。

有没有从铁路售票的业务去考虑架构,
这个系统需要支持超大并发像秒杀一样一秒钟就把票卖完吗?

我觉得就在原来的系统上在做个叫号系统就行了,限制进入购票中心系统的用户。轮到号了才允许进入买票。
体验方面,提示用户前面排队的人数,按照实际系统每秒出票数量计算出需要等待的时间并告诉用户。

说白了就是用户体验做做好就行了。



这哥们思路新颖啊。。。支持



动不动就排队,几十W人请问你怎么排,
同时1W人刷新网页?请问你又怎么排。。。
很明显走排队的思路就是错误的。


排队都做不了的话,你还来接铁道部的这个单子啊
0 请登录后投票
   发表时间:2012-01-13  
linliangyi2007 写道
ieanwfg201 写道
linliangyi2007 写道

楼上的大谈NoSQL+RDB是辛苦了,换我也会采用类似方案。但是

那帮子搞这套系统的人说不定连啥子redis都不知道呢。

不是哥小看人,而是体制内的事情就是这么荒唐!

我们整天谈事物完整性,这个几乎是做IT数据库的基础知识和基本要求,当我看到CCAV
的新闻说,钱扣了,票没出,真是让哥大跌眼镜!这他x连最基本的东西都没了,还奢谈个屁的性能,高并发!


钱扣和出票有半毛钱关系呀,不扣钱还不是照样可以出票,两个完全是调用的外部系统,敢问如何做到一个事物中?求解。要知道就算是航空业务系统将订票和查票分开这样子,也是又无法出票的情况的。


你以为事务的概念就是那么狭义的单数据库或者单系统?!典型是没做过跨系统集成的人才会有这样的想法。

+1 严重支持,我一直找不到比较合适的话来喷。
0 请登录后投票
   发表时间:2012-01-13   最后修改:2012-01-13
情已逝 写道
alan0509 写道
jiaoronggui 写道
情已逝 写道
看了这多回复,各位都是网商的应用做多了吧。。

有没有从铁路售票的业务去考虑架构,
这个系统需要支持超大并发像秒杀一样一秒钟就把票卖完吗?

我觉得就在原来的系统上在做个叫号系统就行了,限制进入购票中心系统的用户。轮到号了才允许进入买票。
体验方面,提示用户前面排队的人数,按照实际系统每秒出票数量计算出需要等待的时间并告诉用户。

说白了就是用户体验做做好就行了。



这哥们思路新颖啊。。。支持



动不动就排队,几十W人请问你怎么排,
同时1W人刷新网页?请问你又怎么排。。。
很明显走排队的思路就是错误的。


排队都做不了的话,你还来接铁道部的这个单子啊

我作过的最大的孽,
西直门13号线换乘铁排队.
那个排队是为了防止自动售票机最大流量.
每天至少要花半个小时排队

第一次看到铁笼子的时候 .
想到的是塔防.....

再之后是天才的龙泽铁壁
再后来是回龙观迷宫II

铁路部门最会排队了
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics