锁定老帖子 主题:讨论火车票订购网站架构
精华帖 (6) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (5)
|
|
---|---|
作者 | 正文 |
发表时间:2012-01-04
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-01-04
我也设计不出来,求答案
|
|
返回顶楼 | |
发表时间:2012-01-04
最主要的还是负载均衡吧,我觉得可以将数据分布到各个省的数据中心去,然后各做各的负载均衡!当然估计还是承受不了的,所以还需设置一个队列系统,让用户排队。最后限制在线时长!!!而不是一直说用户忙,用户多之类的!!
|
|
返回顶楼 | |
发表时间:2012-01-04
jiuyuehe 写道 最主要的还是负载均衡吧,我觉得可以将数据分布到各个省的数据中心去,然后各做各的负载均衡!当然估计还是承受不了的,所以还需设置一个队列系统,让用户排队。最后限制在线时长!!!而不是一直说用户忙,用户多之类的!! 主要是游击队做的软件,负载均衡估计啥都没做。。。
|
|
返回顶楼 | |
发表时间:2012-01-04
jiuyuehe 写道 最主要的还是负载均衡吧,我觉得可以将数据分布到各个省的数据中心去,然后各做各的负载均衡!当然估计还是承受不了的,所以还需设置一个队列系统,让用户排队。最后限制在线时长!!!而不是一直说用户忙,用户多之类的!!
呵呵,做了队列,还限制了等待时间,如果队列长度超过了票的总数,你除了说用户忙,票不足,你还能怎么样? |
|
返回顶楼 | |
发表时间:2012-01-04
唉 不行啊 网上订票系统只是浮云
|
|
返回顶楼 | |
发表时间:2012-01-05
最后修改:2012-01-05
按10亿人口(当然网络购票绝对不会有10亿人)、售票高峰15天,每天12小时出票来计算,若每次都能购票成功,则每秒的理论并发为1543个(事实上1543的并发完全不需要多余的负载)。但若出现阻塞的情况,就会导致用户不停的刷新,从而导致系统更加繁忙。
要解决这个问题,可以从几个方面下手: 1.使用异步排队的方式(或者AJAX提交,提交完后把页面给锁了,直到服务器响应),当购票请求提交后提示用户“您正在排队,您前面有XXXX位。。”,当排队成功后,一天之内付款,购票成功!这样就可以避免购票者不断提交造成的压力。 2.提高系统并发,使用nginx作为HTTP服务器,据说nginx的并发高达3万,这个我没有具体测试,当然这个也取决于业务逻辑的复杂度。 3.缓存所有车票信息,提高查询的响应时间 |
|
返回顶楼 | |
发表时间:2012-01-05
所谓码农 写道 按10亿人口(当然网络购票绝对不会有10亿人)、售票高峰15天,每天12小时出票来计算,若每次都能购票成功,则每秒的理论并发为1543个(事实上1543的并发完全不需要多余的负载)。但若出现阻塞的情况,就会导致用户不停的刷新,从而导致系统更加繁忙。
要解决这个问题,可以从几个方面下手: 1.使用异步排队的方式(或者AJAX提交,提交完后把页面给锁了,直到服务器响应),当购票请求提交后提示用户“您正在排队,您前面有XXXX位。。”,当排队成功后,一天之内付款,购票成功!这样就可以避免购票者不断提交造成的压力。 2.提高系统并发,使用nginx作为HTTP服务器,据说nginx的并发高达3万,这个我没有具体测试,当然这个也取决于业务逻辑的复杂度。 3.缓存所有车票信息,提高查询的响应时间 那得多少台服务器? |
|
返回顶楼 | |
发表时间:2012-01-05
paulwong 写道 所谓码农 写道 按10亿人口(当然网络购票绝对不会有10亿人)、售票高峰15天,每天12小时出票来计算,若每次都能购票成功,则每秒的理论并发为1543个(事实上1543的并发完全不需要多余的负载)。但若出现阻塞的情况,就会导致用户不停的刷新,从而导致系统更加繁忙。
要解决这个问题,可以从几个方面下手: 1.使用异步排队的方式(或者AJAX提交,提交完后把页面给锁了,直到服务器响应),当购票请求提交后提示用户“您正在排队,您前面有XXXX位。。”,当排队成功后,一天之内付款,购票成功!这样就可以避免购票者不断提交造成的压力。 2.提高系统并发,使用nginx作为HTTP服务器,据说nginx的并发高达3万,这个我没有具体测试,当然这个也取决于业务逻辑的复杂度。 3.缓存所有车票信息,提高查询的响应时间 那得多少台服务器? 全国这么多人网络买票,每人扣1块钱出来也够他买服务器了。 这套系统别的没什么,就是缺排队系统。 PS:很明显,电话订票更靠谱。 |
|
返回顶楼 | |
发表时间:2012-01-05
最后修改:2012-01-05
所谓码农 写道 按10亿人口(当然网络购票绝对不会有10亿人)、售票高峰15天,每天12小时出票来计算,若每次都能购票成功,则每秒的理论并发为1543个(事实上1543的并发完全不需要多余的负载)。但若出现阻塞的情况,就会导致用户不停的刷新,从而导致系统更加繁忙。
要解决这个问题,可以从几个方面下手: 1.使用异步排队的方式(或者AJAX提交,提交完后把页面给锁了,直到服务器响应),当购票请求提交后提示用户“您正在排队,您前面有XXXX位。。”,当排队成功后,一天之内付款,购票成功!这样就可以避免购票者不断提交造成的压力。 2.提高系统并发,使用nginx作为HTTP服务器,据说nginx的并发高达3万,这个我没有具体测试,当然这个也取决于业务逻辑的复杂度。 3.缓存所有车票信息,提高查询的响应时间 实际高峰期是刚出票的那个时间点,那几分钟内每秒有几十万点击不奇怪,类似于秒杀。 排队系统也不完善,排入队内的那次点击应该是选好了票和填完了身份信息,然后点下单的那次请求,这次请求将被排入队内,但由于下单成功后现在有45分钟的时间支付,这段时间内这张票状态是锁定的,所以,实际上队伍前进一批人基本要等上45分钟,所以他拿到排队名次并无多大实际意义,因为45分钟后队里有些人已经不在线了,不可能排上队的都分一张剩余的票。 当然如果不能连续承受几十万每秒的登陆和查询请求,那根本就到不了下单的页面。 电话订票也丝毫没有好处,接电话那头的人也一样在使用一个类似的订票系统,那系统没崩掉的原因只不过是接电话的人有限,那些人又不会连续点击。实际状况和现在的用户忙差不多,变成了你电话打不进去。 如果你幸运的成为了网站上没出现用户忙,而挤进去的那个人,那你也在线订上了 |
|
返回顶楼 | |