免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 116704 | 回复: 220
打印 上一主题 下一主题

如何设计高并发高流量的12306在线票务系统 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-17 15:39 |只看该作者 |正序浏览
 
获奖名单已公布,详情请看:http://bbs.chinaunix.net/thread-3675185-1-1.html

“当前访问用户过多,请稍候重试!”“系统忙!”……类似的提示,在旅客登录12306时屡见不鲜。12306的“不堪重负”,一方面是由于巨大的购票需求所致。铁路部门的统计显示,从1月5日起,12306的日均点击量曾连续超过10亿次,访问量环比上月激增10余倍。在我这里我们可以以10亿次/日来稍为计算下12306的并发值,10亿/3600/24=0.00011570亿,大约11000并发值,这个值是非常大的,对数据库、程序、Web应用都是非常有要求的;另外,由于牵涉到票务系统的身份认证,所以安全方面也不容忽视。因此,希望我们能在这里一起来讨论下如何设计高并发高流量的12306在线票务系统的相关话题:

讨论话题:
1.针对目前12306网站的瓶颈进行分析(可以是从我们自身可以获取到的信息进行分析)。
2.如何设计和部署高并发高流量安全的在线票务系统。
3.现在有哪些比较成熟的系统或者方案。(因为12306拒绝了IBM等的成熟方案,选择自己开发)

邀请嘉宾:
老男孩 (老男孩linux培训)老男孩Linux实战运维培训中心总裁
崔晓辉( coralzd )    大众网高级系统管理员
刘晗昭(wenzizone)  昆仑万维高级架构师
胡安伟(king_819)   金游数据运维主管
刘鑫 (gray1982)    宜搜科技 高级系统运维工程师
汪洋(yanyangtian4520) HP高级.net系统架构师
余洪春(yuhongchun)     易瑞特系统架构师、《构建高可用Linux服务器》作者

活动时间:2012.1.17-2012.2.17

活动要求:

  1,针对本次话题可以提出疑问,答疑解惑。
  2,分享此在线票务系统的架构经验,案例,解决方案。
                 
讨论有奖:
活动结束后,我们会评选出三位积极参与话题讨论的网友奖励威刚 USB3.0 16GBU盘一个,对其他积极参与讨论的网友(回帖有参考价值)我们将奖励积分30分。



论坛徽章:
0
221 [报告]
发表于 2015-03-04 10:23 |只看该作者
照搬淘宝

论坛徽章:
0
220 [报告]
发表于 2015-03-04 10:22 |只看该作者
我觉得忽略本身程序问题的话!!!可以参考下淘宝的方法 前端上一个缓存 前端lvs 中间加nginx和jobbs实现动静分离 结合cdn访问完全没有问题了 瓶颈在于数据库 应该实现大型读写分离 结合之前的一个金融系统mysql读写1:9 我们在去ioe大运动下 肯定得上一套分布式系统可以使用hadoop 或TFS  

论坛徽章:
0
219 [报告]
发表于 2014-10-14 17:07 |只看该作者

欢迎拍砖

本帖最后由 wread 于 2014-10-14 17:09 编辑

集群、redis,这些啥的,都是术的概念,解决不了问题。

必须研究业务,才可对症下药。刚刚看了12360订票的流程。
先看看第一部分,车票查询。

主要查询条件:时间、地点、车票往返。

说白了就是车次,其中涉及到数据一致性,车票剩余数量(可略有误差)。
其实剩余数量稍有偏差是没有关系的,最后得由购买的最后动作确定结果。

1.车次的缓存,形成车次查询结果列表
车次预知,数据量不大,不超过2G, ,99.99999%的查询操作。
查询支持内存查询,多条件,选择mongodb。
如果并发量大,可以考虑mongodb的负载均衡。

2.查询列表的剩余票数处理
异步从关系数据库中获取剩余票数。

3.车次关系数据库的切分
根据车次主键奇偶性[可拓展],进行水平切分存储,为2的查询性能进行优化。

后续部分再讨论,还没有看完整的流程。


   

论坛徽章:
0
218 [报告]
发表于 2014-07-17 16:33 |只看该作者
白痴连样式都没有分离你还指望他搞缓存,读写分离,CDN

论坛徽章:
0
217 [报告]
发表于 2014-07-01 15:14 |只看该作者
这个是关系到民生的系统,怎么他们做得那么稀烂。解决方案:1.提高硬件性能,2,估计的大改框架,3,提升运维管理能力,运维管理没有解决掉,其他的都是白搭。

http://www.chinae8.net/cn/cpzx/info_4.aspx?subnavID=125

论坛徽章:
0
216 [报告]
发表于 2013-09-19 00:13 |只看该作者
其实完全可以考资金充值到系统,铁路部门何乐而不为呢,呵呵!就这么简单!

论坛徽章:
0
215 [报告]
发表于 2013-08-26 14:26 |只看该作者
    12306这个系统绝非多数人想像的那么简单,其实前端的门户并发量的提高这块,大家提到的意见基本上都很到位。
    这个系统关键的地方是票务交易这块,这块由于订票业务的自身属性,存在着较大的优化局限性。具体的说,订票过程中,不可避免的会产生大量的交易锁。
    举例说明:比如某个具体车次的票,当一个人抢到一张票后,系统为该张票创建一个临时锁,只有当用户支付成功后,交易才会成功;如果交易超过一定时间(比如30分钟)用户还没有进行支付,系统则会回滚该交易。只有这两种情况之一发生后,系统才会解除这个临时锁。
    所以用户大量频繁的订票交易,数据库会不断创建大量的交易锁。这种交易锁会急剧降低数据库的性能,降低系统的并发性。
     

论坛徽章:
0
214 [报告]
发表于 2013-06-09 01:13 |只看该作者
gotolinux 发表于 2012-01-17 19:04
我认为这篇讨论大部分地方可以参考:http://bbs.chinaunix.net/thread-3626937-7-1.html

主要值得提出来 ...

12306这个傻系统设计的时候就没有仔细考虑用户的行为,后来竟然给自己制造拥塞。还有不能实现充值,导致用户订票时间等待时间长,浪费系统资源。

论坛徽章:
0
213 [报告]
发表于 2012-09-28 15:10 |只看该作者
技术高的人就是厉害!膜拜下!回复 8# yanyangtian4502


   
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP