码迷,mamicode.com
首页 > Web开发 > 详细

四、基于HTTPS协议的12306抢票软件设计与实现--水平DNS并发查询分享

时间:2017-06-29 10:12:08      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:json格式   火车票   抢票   间接   ==   获取   ext   接口   选择   

一、基于HTTPS协议的12306抢票软件设计与实现--实现效果 
二、基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 

三、基于HTTPS协议的12306抢票软件设计与实现--垂直查询效果分享

 

 

        哎,又过春节了,同志们又要抢票回家了,这票卖的可真快啊,瞬间的功夫就没有票了,一票难求啊!

 

        这两天闲着没事,刚好又要抢春节的票了。就把原来写的抢票软件给打开试了一下,发现居然不能查票了。于是就又改了一下。

事实上是改了两下,一是:让原来的程序能够用起来(适应新接口),而是加上了水平DNS并发查询

以下就依次说下吧。

 

一、接口变更

               事实上这次12306并没有大改。仅仅有一下几个接口改了。

1.1   登陆验证码

                         这个仅仅是去了个action的后缀(.do)。不改也没有问题。但怕以后出问题。就改了一下。
                  接口:
https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew
                  參数:和之前一样。

1.2   查询车票

                  接口:https://kyfw.12306.cn/otn/leftTicket/queryT   (后面加了一个T)
                  參数未变。

1.3   查询日志接口

           事实上这个接口算是新添加的吧,也就是在查询车票运行前先运行个查询日志接口,我实验了一下,发现不运行这个接口也行,只是查询车票的接口就会变的慢一点,所以我最后还是加上了,很easy。仅仅用发下请求就可以了。


                  接口:https://kyfw.12306.cn/otn/leftTicket/log
                  方法:GET
                  參数:和查询车票就可以參数一样。
                  返回值:不用管。

1.4   获取联系人接口

            这个接口也没有大改,假设你的联系人少的话就不用管了。

由于我的联系人有两页,但依照之前我提供的接口的话仅仅能获取第一页的联系人,导致第二页的联系人不能正常获取。因此改动为例如以下:
                  接口:https://kyfw.12306.cn/otn/passengers/query
                  方法:GET 或 POST
                  參数:pageIndex (第几页)
                  pageSize  (每页多少条记录)
                  返回值:json格式,略微解析下就能够了,字段名字没有变。

 

二、水平DNS并发查询

           事实上这次改动最大的地方算是加了个水平DNS查询吧。由于12306是全球都能够訪问的站点,须要提供高并发等功能。因此在各地都提供了多个server,通过DNS解析,不同地区的用户訪问距离本地近期的server来进行解析,通过这样12306来分解各地的高并发请求。但这种话就造成了另外一个问题,就是不同地区的用户在同一抢票时间抢同样的火车票。但看到的页面数据会有区别。有的能够看到剩余车票。而有的看不到,这是由于他们訪问的不是同一个12306server。不同的缓存导致的。


    水平DNS查询的功能简单来说就是能列出12306各地server同样车票的剩余情况,看下图便知。

技术分享

    上图显示的就是全球各地12306server同一时间同样车票的显示情况(我这仅仅是演示,要看到区别,能够在放票的那段时间。能够看到不同的server会显示不同的结果)。


   
    事实上实现也很easy。首先通过DNS查询工具,查询出12306站点(kyfw.12306.cn)相应的各地的serverip地址。然后每一个地区都分别请求同样的车次,然后再table里面列举出来就可以,简单吧。


    这个功能是很有用的,能够间接的反应出各地server的反应快慢。最后假如某个地区的车次信息显示有票,那么仅仅须要把程序当前DNS改动一下,让kyfw.12306.cn域名相应到那个IP地址就可以,然后就能够訪问那个IP地址进行异地server订票。


    最后再说下,在我实验水平DNS查询的时候,发现假设选择了异地server进行订票,会发现你须要在异地server上又一次登录下才干够订票(能够说明12306在全国各地的应用server并没有共享session)。

 


 

 

四、基于HTTPS协议的12306抢票软件设计与实现--水平DNS并发查询分享

标签:json格式   火车票   抢票   间接   ==   获取   ext   接口   选择   

原文地址:http://www.cnblogs.com/yangykaifa/p/7092546.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!