论坛首页 Java企业应用论坛

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

浏览 37493 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-01-13  
linliangyi2007 写道
jiaoronggui 写道
情已逝 写道
看了这多回复,各位都是网商的应用做多了吧。。

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

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

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



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


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

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

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

2.订票流程处理子系统

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


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


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

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




让电脑面前的用户知道自己的请求已经提交,系统慢,大概还需要几分钟才能受理你的订票请求。着是B/S应用 ,不是C/S应用,等待几分钟。。。你可以用你的浏览器试下,刷个网页几分钟没反应,会出现什么结果。
0 请登录后投票
   发表时间:2012-01-13  
诺亚之舟 写道
情已逝 写道
alan0509 写道


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

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

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


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

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

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



那也是人比较少的时候,整节车厢都是到某个地方的。

春运,你觉得有可能吗?
0 请登录后投票
   发表时间:2012-01-13  
shinkadoki 写道
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  
wisesean 写道
我觉得应该这样做:让铁道部写需求文档,各位大神集思广益免费给铁道部设计个系统,以服务社会。

理论上极其可行
0 请登录后投票
   发表时间:2012-01-13   最后修改:2012-01-13
引用
很显然,系统问题不是出在这里。
你能查票。能看到票的及时信息,这些不是假的吧?

问题出在,点了预订后订票阶段:

我觉得可能是 为了兼容电话订票。 还有就是,可能铁路部门一直用的卖票系统太过垃圾,根本就不适合在线搞。



1.靠之前查寻出来结果集提交定单
2.靠后台一个小时的搓合方式给出结果.(没有最优选择)像高考发榜一样.
3.支付,你可能想要个卧铺但也选了站位,那你就有可能只拿到站票.如果你只选卧铺很有可能发榜时一无所获
0 请登录后投票
   发表时间:2012-01-13  
我就觉得你们在讨论一个莫须有的问题
本人觉得网站这样原因有很多,主要有下面
a  巨量人数访问, 目前除了非死不可 等 在短期内这样大啊访问数罕有,可以解释排名问题得到证据
b 被你们忽略的zf的办事作风,有能力的公司并得不倒认同
c b点原因很很快挫败正确意见,因为这种人会得到领导的信任
d 团队领导里有蠢驴!!

所谓什么技术架构,啦选型啦啥的,根本不是问题所在!!!!
0 请登录后投票
   发表时间:2012-01-13   最后修改:2012-01-13
kjj 写道
我就觉得你们在讨论一个莫须有的问题
本人觉得网站这样原因有很多,主要有下面
a  巨量人数访问, 目前除了非死不可 等 在短期内这样大啊访问数罕有,可以解释排名问题得到证据
b 被你们忽略的zf的办事作风,有能力的公司并得不倒认同
c b点原因很很快挫败正确意见,因为这种人会得到领导的信任
d 团队领导里有蠢驴!!

所谓什么技术架构,啦选型啦啥的,根本不是问题所在!!!!

不能由于环境就不进步......黑暗中世纪,也有被烧死的卫道士

PS:我想到一个可以解决这东西的问题.
那就是只能回身份证的地址.......我太聪明了.
0 请登录后投票
   发表时间:2012-01-13  
kjj 写道
我就觉得你们在讨论一个莫须有的问题
本人觉得网站这样原因有很多,主要有下面
a  巨量人数访问, 目前除了非死不可 等 在短期内这样大啊访问数罕有,可以解释排名问题得到证据
b 被你们忽略的zf的办事作风,有能力的公司并得不倒认同
c b点原因很很快挫败正确意见,因为这种人会得到领导的信任
d 团队领导里有蠢驴!!

所谓什么技术架构,啦选型啦啥的,根本不是问题所在!!!!

团队领导里有蠢驴!!!
0 请登录后投票
   发表时间:2012-01-13  
抛出异常的爱 写道
kjj 写道
我就觉得你们在讨论一个莫须有的问题
本人觉得网站这样原因有很多,主要有下面
a  巨量人数访问, 目前除了非死不可 等 在短期内这样大啊访问数罕有,可以解释排名问题得到证据
b 被你们忽略的zf的办事作风,有能力的公司并得不倒认同
c b点原因很很快挫败正确意见,因为这种人会得到领导的信任
d 团队领导里有蠢驴!!

所谓什么技术架构,啦选型啦啥的,根本不是问题所在!!!!

不能由于环境就不进步......黑暗中世纪,也有被烧死的卫道士

PS:我想到一个可以解决这东西的问题.
那就是只能回身份证的地址.......我太聪明了.


我只能说,你保持有改变环境的理想很可贵,黑暗世纪长达好几百年,烧死多少卫道士

如果技术成熟,人类不进步的原因只有一个,那就是技术被人为有意抑制,为了铜制需要

奴隶时代,因为新发明的犁很大提高耕作效率而被奴隶主放弃,因为那样会导致大量的奴隶没事可干,而威胁奴隶主的铜制

至于现在讨论,哟你个什么架构,和孔乙己讨论茴香豆的茴字有几种写法有异曲同工之妙啊

技术都是玻璃瓶中的小老鼠而已!!
0 请登录后投票
   发表时间:2012-01-13  
以目的地为不同的省份建不同的网站,我订票时一直看我的地方有票,就是下不了单,如果我订票的地单分一个网站就好了,
0 请登录后投票
论坛首页 Java企业应用版

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