一种国际机票异步查询方法与流程

文档序号:17696229发布日期:2019-05-17 21:33阅读:348来源:国知局
一种国际机票异步查询方法与流程

本发明属于机票查询技术领域,具体涉及一种国际机票异步查询方法。



背景技术:

机票查询方法包括数据获取和计算整合两个步骤。计算整合一般包括计算航班起降时间、过滤航班、过滤价格、机场过滤、计算餐食、航班共享信息、机型、中转、计算票价、税费、票规、打分排序等。现有的查询方法是获得所有查询数据后,针对所有查询数据进行计算整合,计算整合结束后将完整的查询结果一次性返回给用户。习惯上将这种数据获取和计算整合作为一个整体的查询方法称为同步查询。同步查询的好处是能够一次性看到所有的查询结果;其缺点是耗时长。耗时长问题在国内机票查询中并不严重,由于机票数量少,查询返回速度较快,一般3、4秒内便可返回查询结果;但国际机票查询的情况就不一样了,用户一般需要等待几十秒甚至几分钟才能看到结果。由于等待时间过长,常常引起用户的不耐烦甚至焦虑心理。



技术实现要素:

为了解决现有技术中存在的上述问题,本发明提出一种国际机票异步查询方法。

为实现上述目的,本发明采用如下技术方案:

一种国际机票异步查询方法,包括以下步骤:

步骤1,客户端调用随机数函数生成一个随机数qid作为异步查询id,并将搜索条件和qid发送到中杻节点,再由中杻节点发送到按照某种映射关系与qid对应的计算节点;

步骤2,所述计算节点以qid作为本次查询的唯一id,根据搜索条件创建查询任务,并将所述查询任务分成多个子任务分配给多个数据接口;

步骤3,多个数据接口并行进行数据获取及整合计算,并保存已获取的数据;

步骤4,将最先完成的计算整合结果返回所述中杻节点,由中杻节点返回客户端进行显示;

步骤5,客户端将相同的搜索条件和qid经中杻节点发至所述计算节点,计算节点根据qid查找已创建的查询任务,取出保存的数据,对所有数据进行计算整合;

步骤6,重复步骤4、5,直到完成所有的查询任务。

进一步地,所述按照某种映射关系与qid对应的计算节点的序号为qidmod(i),mod()表示取模运算,i为计算节点数量。

进一步地,所述方法还包括:如果查询时间超过设定的第一阈值时查询任务还未全部完成,在客户端显示查询完毕,但继续进行查询并显示新的查询结果,直到查询任务全部完成。

更进一步地,所述方法还包括:如果查询时间超过设定的第二阈值时查询任务还未全部完成,中止查询,并在客户端显示查询完毕。

与现有技术相比,本发明具有以下有益效果:

本发明提出的一种国际机票异步查询方法,通过将机票查询任务分成多个并行子任务,针对每个子任务同时分别进行数据获取和计算整合,返回最先完成的子任务的查询结果并进行显示;然后再次发出查询请求,陆续显示查询结果,重复上述步骤,直到查询完毕,可以使用户很快看到查询结果并尽快做出决定;即使用户不能根据较先显示的部分查询结果做出决定,也能消除或减轻因等待结果产生的焦虑心情。

附图说明

图1为本发明实施例一种国际机票异步查询方法的流程图。

具体实施方式

下面结合附图对本发明作进一步详细说明。

本发明实施例一种国际机票异步查询方法的流程图如图1所示,所述方法包括:

s101、客户端调用随机数函数生成一个随机数qid作为异步查询id,并将搜索条件和qid发送到中杻节点,再由中杻节点发送到按照某种映射关系与qid对应的计算节点;

s102、所述计算节点以qid作为本次查询的唯一id,根据搜索条件创建查询任务,并将所述查询任务分成多个子任务分配给多个数据接口;

s103、多个数据接口并行进行数据获取及整合计算,并保存已获取的数据;

s104、将最先完成的计算整合结果返回所述中杻节点,由中杻节点返回客户端进行显示;

s105、客户端将相同的搜索条件和qid经中杻节点发至所述计算节点,计算节点根据qid查找已创建的查询任务,取出保存的数据,对所有数据进行计算整合;

s106、重复s104、s105,直到完成所有的查询任务。

在本实施例中,步骤s101主要用于由客户端将搜索条件和异步查询id经中杻节点发送到计算节点。搜索条件包括待查询的出发地、目的地和日期,如:出发地北京,到达地纽约,出发日期2018-10-20,返回日期2018-10-30。在本实施例中,采用随机数函数生成一个随机数qid作为异步查询id,如7545348535342。同一次异步查询采用同一个qid;每次异步查询调用一次随机数函数生成一个不同的qid,可以保证不同的异步查询采用不同的qid。所述qid通过某种映射关系与计算节点序号对应,后面的实施例将给出一种具体的映射关系。在本实施例中,中杻节点和计算节点位于服务端。中杻节点用作客户端和计算节点之间的转运站,例如,客户端将搜索条件和qid先发送给中杻节点,再由中杻节点发送到计算节点;计算节点将查询结果先返回给中杻节点,再由中杻节点返回给客户端。客户端和中枢节点通过建立socket连接进行数据通信。

在本实施例中,步骤s102主要用于计算节点根据搜索条件创建查询任务,并将所述查询任务分成多个并行的子任务分配给多个数据接口(一个数据接口对应一个供应商)。创建的查询任务以qid作为唯一的查询id,下次查询时根据qid找到所述查询任务。每个子任务同样包含数据获取和计算整合两个步骤。

在本实施例中,步骤s103主要用多个数据接口并行完成各自的子任务,即同时进行数据获取及整合计算,保存已获取的数据。保存已获取数据的目的是为了在执行同一次异同查询的下一次查询请求时,取出保存的已获取数据,与新获取的数据一起进行整合计算。

在本实施例中,步骤s104主要用于将最先完成的计算整合结果经中杻节点返回客户端进行显示。由于各个数据接口的查询速度并不相同,有些数据接口很快就能完成子任务得到查询结果,而有些数据接口则需要较长时间。为了让用户能够尽快看到查询结果,只要有一个数据接口完成计算整合,就不管其它数据接口的子任务进度如何,只将最先得到的计算整合结果作为初步结果,立刻经中杻节点返回给客户端,由客户端行显示初步结果。

在本实施例中,步骤s105主要用于客户端在显示完初步结果后向计算节点发出第二次查询请求,计算节点继续执行查询任务。客户端通过将相同的搜索条件和qid经中杻节点发至所述计算节点提出第二次查询请求;计算节点接到第二次查询请求后,根据qid查找已创建的查询任务,取出保存的已获取数据,对所有数据(新获取的数据和保存的已获取数据)进行计算整合。

在本实施例中,步骤s106主要用于重复执行s104、s105,客户端不断显示新的查询结果,不断提出新的查询请求;服务端的计算节点不断响应新的查询请求,直到完成所有的查询任务。

本实施例的异步查询方法,通过将机票查询任务分成多个并行子任务,针对每个子任务同时分别进行数据获取和计算整合,返回最先完成的子任务的查询结果并进行显示;然后再次发出查询请求,陆续显示查询结果,直到查询完毕,可以使用户很快看到搜索结果。采用本实施的异步查询方法与现有同步查询方法相比,耗时比p为:

p=(tg(min)+tc(min))/(tg(max)+tc(max))

其中,tg(max)为获取数据的最大耗时,tg(min)为获取数据的最小耗时,tc(max)为整合计算所有数据的耗时,tc(min)为整合计算返回最快的获取数据的耗时。

作为一种可选实施例,所述按照某种映射关系与qid对应的计算节点的序号为qidmod(i),mod()表示取模运算,i为计算节点数量。

本实施例给出了一种从qid到计算节点序号的映射关系,即根据qid求计算节点序号的方法。例如,如果计算节点数为3,则7545348535342mod(3)=1,即选择第1个计算节点完成查询任务。

作为一种可选实施例,所述方法还包括:如果查询时间超过设定的第一阈值时查询任务还未全部完成,在客户端显示查询完毕,但继续进行查询并显示新的查询结果,直到查询任务全部完成。

在本实施例中,为了更有效地减轻用户因等待查询结果产生的焦虑心情,设置第二阈值,如果查询时间超过第一阈值时查询任务还未全部完成,在客户端显示查询完毕,使用户认为查询已经结束,不再焦急等待。虽然已显示查询完毕,但实际上查询并未真正结束,查询仍在进行,结果还在更新。查询时间是指从开始执行步骤s101时刻起至当前时刻的时间。第一阈值的大小一般根据经验或反复试验确定,可选一较短的时间,如15秒。15秒的等待时间,即使比较性急的用户一般也能忍受。客户端显示查询完毕的方法很多,例如,以进度条显示查询进度,以进度条加载至100%表示查询完毕。

作为上一实施例的一种可选实施例,所述方法还包括:如果查询时间超过设定的第二阈值时查询任务还未全部完成,中止查询,并在客户端显示查询完毕。

在本实施例中,为了避免因某些子任务的执行时间过长使整个异步查询周期过长,设置第二阈值,如果当查询时间超过第二阈值时查询任务还未全部完成,停止查询,并在客户端显示查询完毕(同样可以进度条加载至100%表示查询完毕)。第二阈值的大小也是根据经验或反复试验确定,如60秒。第二阈值一般大于第一阈值,因此可能出现下面一种特殊情况:当查询时间超过第一阈值时,在客户端显示查询完毕,但查询并未停止;当查询时间超过第二阈值时,如果查询任务仍未全部完成,强制退出本次异步查询。

上述仅对本发明中的几种具体实施例加以说明,但并不能作为本发明的保护范围,凡是依据本发明中的设计精神所做出的等效变化或修饰或等比例放大或缩小等,均应认为落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1