一种多接口数据的调度方法技术

技术编号:13587575 阅读:182 留言:0更新日期:2016-08-25 11:19
本发明专利技术涉及一种多接口数据的调度方法,本发明专利技术通过建立一个接口调度机制,利用该接口调度机制产生接口调度策略,尽可能多的使用后台处理并发,使得后台的并发数量达到合理的最大值,前台在不影响核心业务展现的前提下请求接口的数量达到最小,使得后台能最大限度的利用cpu多核的优势并发拿到数据而前台只关心渲染和用户交互而不是传输数据,本发明专利技术的优势主要包括:前台页面能够以最小的频率和后台交换数据,展示时可以有效地减少页面的重排重绘;后台并发处理了大量的交互接口,保证了核心业务可用,非核心功能最大效率地往前台展示。

【技术实现步骤摘要】

本专利技术涉及互联网领域,具体涉及一种多接口数据的调度方法
技术介绍
网站在逐步发展的过程中,每个页面随着业务越来越多,需要的额外数据会越来越多,这些数据往往有各自原生的信息来源,比如数据库、内存、文件,为了让开发更高效,大多数公司中往往会用封装的方式各自封装这些原生的信息来源,每个封装好后的消息来源也叫接口,并且这些接口往往不在一台服务器上,所以每个页面在获得数据的时候,会向多个服务器上的接口请求获得想要的数据。一个页面要展示某些业务要分别请求各种业务提供数据的接口,会有这样几种方式:(1)完全从后台请求数据用户打开页面,向后台发起请求,由后台程序向所有的数据接口发送获取请求,然后打包发送给前台,之后再由前台再负责展示,这种方式下若有一个接口发生问题,会发生多米诺效应,导致整个后台瘫痪,这种问题在一些暂时不支持多线程开发的PHP程序中很常见,接口多时往往不会用这种方法;(2)完全由前台发送AJAX请求接口获得数据用户打开页面,不通过后台,完全由前台发送AJAX请求接口获得数据,最终通过回调函数展现业务逻辑,完全不用后台,但是这种方式由于安全问题并不常用。此外,全部由前台发送请求,如果业务需求请求数量多,或者有相互依赖的情况时,机器配置低的浏览器会因为请求数量过多而出现卡顿很久的现象。(3)前后台混合方式:由后台请求核心业务接口优先展示核心业务,前端发送AJAX使用回调函数展示非核心业务,目前这种方式最为常见。但是,这种方式核心业务的接口一般数据量比较大耗时很长,并发利用率不高;而非核心业务推到前台建立AJAX请求,一旦非核心业务数量过多,前台在处理这些请求的时候会发生卡顿的现象;此外,在业务开发过程中,一个或多个小组负责完成一个业务导致非核心业务越来越多,前台调用的AJAX也越来越多,页面刚刚加载完要去处理许多AJAX并发业务,很有可能会出现卡顿的现象。综上所述,需要一个接口控制的方法来管理各种接口的调用,能够在稳定的输出核心业务的同时为页面高效地添加非核心业务。
技术实现思路
为了解决上述技术问题,本专利技术提供了一种多接口数据的调度方法,针对当网页请求多个接口时出现的卡顿现象建立一个接口调度机制,尽可能多的使用后台处理并发,从而达到稳定的输出核心业务的同时为页面高效地添加非核心业务的效果。本专利技术是以如下技术方案实现的,一种多接口数据的调度方法,包括对于处理核心业务的核心接口和处理非核心业务的非核心接口进行调度,包括以下步骤:S1.为接口分类,并将分类后的接口纳入相应的容器:将能够被直接调度的核心接口纳入核心接口容器,将不能够被直接调度的核心接口纳入有依赖核心接口容器,将能够被直接调度的非核心接口纳入非核心接口容器,将不能够被直接调度的非核心接口纳入有依赖非核心接口容器;S2.获取HTTP请求中的页面参数;S3.根据所述页面参数更新有依赖核心接口容器、核心接口容器、非核心接口容器和有依赖非核心接口容器;S4.对所述核心接口容器和非核心接口容器中的未被调度过的接口进行并发调用;S5.根据S4的调用结果,向前端发送数据;S6.前端展示S5中接口的调用结果,并判断是否存在待处理的非核心接口,若存在,则对所述非核心接口进行调用;S7.向前端展示S6中接口的调用结果,并判断是否存在待处理的非核心接口,若存在,继续对所述非核心接口进行调用,并将调度结果显示在前端。优选的,S3中更新有依赖核心接口容器、核心接口容器、非核心接口容器和有依赖非核心接口容器包括:在已知所述页面参数的前提下,遍历有依赖核心接口容器和有依赖非核心接口容器,若有依赖核心接口容器中存在能够被直接调度的核心接口,则将能够被直接调度的核心接口移至所述核心接口容器,若有依赖非核心接口容器中存在能够被直接调度的非核心接口,则将所述能够被直接调度的非核心接口移至所述非核心接口容器。优选的,S4包括:S41.开启线程并行调度所述核心接口容器和非核心接口容器中的未被调度过的接口;S42.若获取响应,则判断是否为成功响应,若是,则进行S43,若否,则直接停止所有用于接口调度的线程,直接返回HTTP响应:报文状态502服务器问题或307跳转到对应的页面;S43.将获取所述响应的接口标记为已调度接口,查询所述响应结果是否是有依赖核心接口容器和/或有依赖非核心接口容器中的接口所需要的待定参数,如果是,则进行S44,否则,进行S46;S44.用所述响应结果替代所述待定参数,并在所述待定参数已知的前提下,判断需要所述待定参数的接口是否能够直接被调度,若能,则进行S45,否则,进行S46;S45.若需要所述待定参数的接口为核心接口,则将所述核心接口从有依赖核心接口容器移至核心接口容器,若需要所述待定参数的接口为非核心接口,则将所述非核心接口从有依赖非核心接口容器移至非核心接口容器;S46.获得响应的线程继续调度所述核心接口容器和非核心接口容器中的未被调度过的接口,直至全部核心接口均获得响应。优选的,S4还包括获取未被调用的核心接口数量N与线程最大并发数tMax,S4中开启的线程的数量不大于tMax;若N不大于tMax,则并行调度的非核心接口数量和核心接口数量比值小于最大并发比,否则,先并行调度核心接口,并实时获取N值,当N小于tMax时,调度过程中满足并行调度的非核心接口数量和核心接口数量比值不大于最大并发比。优选的,S4还包括开启并行线程之前,对所述核心接口容器和所述非核心接口容器中的接口按照重要性进行排序,调度过程中依次对所述核心接口容器和所述非核心接口容器中的未被调度过的接口进行调用。优选的,S4还包括开启并行线程之前,对所述有依赖核心接口容器和所述有依赖非核心接口容器中的接口按照重要性进行排序。优选的,S5包括:判断是否存在未获得响应和/或响应失败的非核心接口,若有,则将所述未获得响应和/或响应失败的非核心接口的元素与S4中获取的数据一起打包;否则,只打包S4中获取的数据;将打包结果发送到前端。优选的,所述元素包括未获得响应和/或响应失败的非核心接口的接口id和调度所述未获得响应和/或响应失败的非核心接口需要的参数。优选的,所述有依赖核心接口容器、核心接口容器、非核心接口容器和有依赖非核心接口容器中的接口均包含表征所述接口状态的状态标识。优选的,S4中通过HTTP请求进行接口调用,S5和S6中ajax进行接口调用。本专利技术的有益效果是:本专利技术提供了一种多接口数据的调度方法,通过建立一个接口调度机制,利用该接口调度机制产生接口调度策略,尽可能多的使用后台处理并发,使得后台的并发数量达到合理的最大值,前台在不影响核心业务展现的前提下请求接口的数量达到最小,使得后台能最大限度的利用cpu多核的优势并发拿到数据而前台只关心渲染和用户交互而不是传输数据,本专利技术的优势主要还包括:前台页面能够以最小频率的和后台交换数据,展示时可以有效地减少页面的重排重绘;后台并发处理了大量的交互接口,保证了核心业务可用,非核心功能最大效率的往前台展示。附图说明图1是第一个实施例多接口数据的调度方流程图;图2是第一个实施例并行调度接口流程图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术作进一步地详细描述。实施例1:在第一个实施例中,如图1所示,一本文档来自技高网
...

【技术保护点】
一种多接口数据的调度方法,包括对于处理核心业务的核心接口和处理非核心业务的非核心接口进行调度,其特征在于,包括以下步骤:S1.为接口分类,并将分类后的接口纳入相应的容器:将能够被直接调度的核心接口纳入核心接口容器,将不能够被直接调度的核心接口纳入有依赖核心接口容器,将能够被直接调度的非核心接口纳入非核心接口容器,将不能够被直接调度的非核心接口纳入有依赖非核心接口容器;S2.获取HTTP请求中的页面参数;S3.根据所述页面参数更新有依赖核心接口容器、核心接口容器、非核心接口容器和有依赖非核心接口容器;S4.对所述核心接口容器和所述非核心接口容器中的未被调度过的接口进行并发调用;S5.根据S4的调用结果,向前端发送数据;S6.前端展示S5中接口的调用结果,并判断是否存在待处理的非核心接口,若存在,则对所述非核心接口进行调用;S7.向前端展示S6中接口的调用结果,并判断是否存在待处理的非核心接口,若存在,继续对所述非核心接口进行调用,并将调度结果显示在前端。

【技术特征摘要】
1.一种多接口数据的调度方法,包括对于处理核心业务的核心接口和处理非核心业务的非核心接口进行调度,其特征在于,包括以下步骤:S1.为接口分类,并将分类后的接口纳入相应的容器:将能够被直接调度的核心接口纳入核心接口容器,将不能够被直接调度的核心接口纳入有依赖核心接口容器,将能够被直接调度的非核心接口纳入非核心接口容器,将不能够被直接调度的非核心接口纳入有依赖非核心接口容器;S2.获取HTTP请求中的页面参数;S3.根据所述页面参数更新有依赖核心接口容器、核心接口容器、非核心接口容器和有依赖非核心接口容器;S4.对所述核心接口容器和所述非核心接口容器中的未被调度过的接口进行并发调用;S5.根据S4的调用结果,向前端发送数据;S6.前端展示S5中接口的调用结果,并判断是否存在待处理的非核心接口,若存在,则对所述非核心接口进行调用;S7.向前端展示S6中接口的调用结果,并判断是否存在待处理的非核心接口,若存在,继续对所述非核心接口进行调用,并将调度结果显示在前端。2.根据权利要求1所述的一种多接口数据的调度方法,其特征在于,S3中更新有依赖核心接口容器、核心接口容器、非核心接口容器和有依赖非核心接口容器包括:在已知所述页面参数的前提下,遍历有依赖核心接口容器和有依赖非核心接口容器,若有依赖核心接口容器中存在能够被直接调度的核心接口,则将所述能够被直接调度的核心接口移至所述核心接口容器,若有依赖非核心接口容器中存在能够被直接调度的非核心接口,则将所述能够被直接调度的非核心接口移至所述非核心接口容器。3.根据权利要求2所述的一种多接口数据的调度方法,其特征在于,S4包括:S41.开启线程并行调度所述核心接口容器和非核心接口容器中的未被调度过的接口;S42.若获取响应,则判断是否为成功响应,若是,则进行S43,若否,则直接停止所有用于接口调度的线程,直接返回HTTP响应:报文状态502服务器问题或307跳转到对应的页面;S43.将获取所述响应的接口标记为已调度接口,查询所述响应结果是否是有依赖核心接口容器和/或有依赖非核心接口容器中的接口所需要的待定参数,如果是,则进行S44,否则,进行S46;S44.用所述响应结果替代所述待定参数,并在所述待定参数已知的前提下,判断需要所述待定参数的接口是...

【专利技术属性】
技术研发人员:史荣琦邢斐董京涛李明杰顾思斌潘柏宇谢菲
申请(专利权)人:合一信息技术北京有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1