CN110995801A - 一种服务调用的方法及装置 - Google Patents
一种服务调用的方法及装置 Download PDFInfo
- Publication number
- CN110995801A CN110995801A CN201911158015.XA CN201911158015A CN110995801A CN 110995801 A CN110995801 A CN 110995801A CN 201911158015 A CN201911158015 A CN 201911158015A CN 110995801 A CN110995801 A CN 110995801A
- Authority
- CN
- China
- Prior art keywords
- request
- calculation
- calculation result
- result
- service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请涉及一种服务调用的方法及装置,当所述方法应用于调用服务时,所述方法包括:接收服务请求方发送的业务请求,所述业务请求包括请求入参;根据所述请求入参生成计算任务,并在预设的计算任务队列中发布所述计算任务;从已订阅的计算结果队列中获取所述计算任务对应的计算结果,其中,所述计算结果为订阅所述计算任务队列的服务提供方获取所述计算任务后,对所述计算任务进行处理后得到的、并发布在所述计算结果队列中的结果;根据所述计算结果生成响应结果,并将所述响应结果返回所述服务请求方,通过发布、订阅功能实现服务请求方和服务提供方的解耦,提高了服务调用的稳定性。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种服务调用的方法及装置。
背景技术
在当今互联网分布式系统中,服务调用已是各服务之间通讯不可或缺的一部分,相关技术中采用Protocol Buffer、thrift、http等协议实现各子系统之间的同步调用,同时通过注册中心发现依赖服务,或通过代理转发请求。但在以上方案中,调用方需要和服务提供方商定协议,并且请求的服务强依赖于服务提供方的服务稳定性。
发明内容
鉴于上述问题,提出了本申请以便提供一种克服上述问题或者至少部分地解决上述问题的一种服务调用的方法及装置。
第一方面,本申请提供了一种服务调用的方法,应用于调度服务中,所述方法包括:
接收服务请求方发送的业务请求,所述业务请求包括请求入参;
根据所述请求入参生成计算任务,并在预设的计算任务队列中发布所述计算任务;
从已订阅的计算结果队列中获取所述计算任务对应的计算结果,其中,所述计算结果为订阅所述计算任务队列的服务提供方获取所述计算任务后,对所述计算任务进行处理后得到的、并发布在所述计算结果队列中的结果;
根据所述计算结果生成响应结果,并将所述响应结果返回所述服务请求方。
可选地,所述根据所述请求入参生成计算任务,包括:
构建所述业务请求对应的计算任务数据结构;
确定所述计算任务数据结构的请求标识以及请求时间戳信息;
将所述请求入参、所述请求标识以及所述请求时间戳信息写入所述计算任务数据结构中,得到计算任务。
可选地,在所述在预设的计算任务队列中发布所述计算任务之后,所述方法还包括:
根据所述计算任务构建请求对象,并将所述请求对象存储在待处理请求字典中,其中,所述请求对象包括所述请求标识、所述请求时间戳信息以及请求响应策略;
对所述待处理请求字典中的各请求对象进行监控,并从所述待处理请求字典中删除满足所述请求响应策略的请求对象。
可选地,所述计算结果包括目标请求标识;在所述从已订阅的计算结果队列中获取所述计算任务对应的计算结果之后,所述方法还包括:
按照预设的校验规则对所述计算结果进行校验;
若所述校验通过且在所述待处理请求字典中查找到所述目标请求标识,则确定所述目标请求标识所处的请求对象对应的目标计算结果字典,并将该计算结果存入所述目标计算结果字典中;
若所述校验不通过或者在所述待处理请求字典中查找不到所述目标请求标识,则丢弃所述计算结果。
可选地,所述将该计算结果存入所述目标计算结果字典中,包括:
获取所述计算结果的计算结果标识,所述计算结果标识包括请求标识以及提供该计算结果的服务提供方的标识;
在所述目标计算结果字典中查找该计算结果的计算结果标识;
若查找成功,则将该计算结果覆盖该计算结果标识对应的在先的计算结果;
若查找失败,则将所述计算结果存入所述目标计算结果字典中。
可选地,所述请求响应策略包括最大等待时长,所述根据所述计算结果生成响应结果,包括:
当从所述请求时间戳信息开始,在所述最大等待时长内,所述目标计算结果字典中存储的计算结果的数量大于或等于预设数量,则将该数量对应的计算结果按照预设组合规则进行组合,得到响应结果。
可选地,所述方法还包括:
当从已订阅的计算结果队列中没有获取到计算结果时,则将响应结果设置为预设的默认结果。
第二方面,本申请还提供了一种服务调用的装置,应用于调度服务中,所述装置包括:
业务请求接收模块,用于接收服务请求方发送的业务请求,所述业务请求包括请求入参;
计算任务发布模块,用于根据所述请求入参生成计算任务,并在预设的计算任务队列中发布所述计算任务;
计算结果订阅模块,用于从已订阅的计算结果队列中获取所述计算任务对应的计算结果,其中,所述计算结果为订阅所述计算任务队列的服务提供方获取所述计算任务后,对所述计算任务进行处理后得到的、并发布在所述计算结果队列中的结果;
业务响应模块,用于根据所述计算结果生成响应结果,并将所述响应结果返回所述服务请求方。
第三方面,本申请还提供了一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如上述的方法。
第四方面,本申请还提供了一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如上述的方法。
本申请具有如下有益效果:
在本实施例中,调用服务接收到服务请求方发送的业务请求以后,可以根据该业务请求生成计算任务,并在计算任务队列中发布该计算任务。然后从已订阅的计算结果队列中获取该该计算任务对应的计算结果,并根据该计算结果生成响应结果返回服务请求方,其中,该计算结果为订阅上述计算任务队列的服务提供方获取自身关注的计算任务后,对计算任务进行处理后得到的、并发布在计算结果队列中的结果。本实施例通过发布、订阅功能实现服务请求方和服务提供方的解耦,服务请求方发送一次业务请求后即可获得响应结果,无需要和多个服务交互多次,管理多个请求连接,同时不需要关注服务提供方是谁,服务能力如何,以及服务不稳定带来的雪崩效应,提高了服务调用的稳定性,提高了服务容错及扩展能力。
附图说明
图1为本申请实施例的一种服务调用的方法实施例的步骤流程图;
图2为本申请实施例的服务调用系统架构图;
图3为本申请实施例的一种服务调用的装置实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
参照图1,示出了本申请实施例的一种服务调用的方法实施例的步骤流程图,本实施例可以应用于调度服务中,可以包括如下步骤:
步骤101,接收服务请求方发送的业务请求,所述业务请求包括请求入参。
在该实施例中,如图2所示,调度服务可以与服务请求方连接,接收来自服务请求方的业务请求。
作为一种示例,该业务请求可以包括请求入参,在一种例子中,请求入参可以包括但不限于:业务标识、消息类型、消息内容等。
步骤102,根据所述请求入参生成计算任务,并在预设的计算任务队列中发布所述计算任务。
在该步骤中,调用服务从业务请求中解析出请求入参以后,则可以根据该请求入参构建计算任务,并发布该计算任务。
在一种实施方式中,步骤102中根据请求入参生成计算任务的步骤,可以包括如下子步骤:
子步骤S11,构建所述业务请求对应的计算任务数据结构。
在一种例子中,调用服务可以按照预设的计算任务模板,构造一个新的、json数据格式的计算任务数据结构。
子步骤S12,确定所述计算任务数据结构的请求标识以及请求时间戳信息。
在一种实施方式中,调用服务接收到业务请求以后,可以记录接收该业务请求时的请求时间戳信息,并按照预设的请求标识生成算法生成当前业务请求的请求标识。
例如,预设的请求标识生成算法可以为:将请求标识确定为调用服务所处的机器的IP地址后两位+请求时间戳信息+随机数。
子步骤S13,将所述请求入参、所述请求标识以及所述请求时间戳信息写入所述计算任务数据结构中,得到计算任务。
当调用服务确定了当前业务请求的请求标识以及请求时间戳信息以后,则可以将该业务请求的请求入参、该请求标识以及该请求时间戳信息放入上述计算任务数据结构中,从而得到计算任务。
在该实施例中,当生成计算任务以后,调用服务可以通过计算任务队列发布该计算任务。在一种实施方式中,计算任务队列可以为在Redis中创建的队列,如图2所示,调用服务通过Redis的消息发布(PUBLISH)功能发布该计算任务。其中,Redis的消息发布功能只推送计算任务到当前已订阅该计算任务队列所有客户端(即服务提供方)。为了便于对计算任务的管理,Redis对已发布的计算任务不重复发布,例如,不对计算任务保存副本。
在一种实施方式中,在步骤102之后,本实施例还可以包括如下步骤:
根据所述计算任务构建请求对象,并将所述请求对象存储在待处理请求字典中,其中,所述请求对象包括所述请求标识、所述请求时间戳信息以及请求响应策略,所述请求响应策略包括最大等待时长。
在该实施例中,在发布计算任务以后,为了便于对计算任务的响应和管理,调用服务还可以根据该计算任务构建请求对象。作为一种施例,请求对象可以包括请求标识、请求时间戳信息、请求响应策略、请求连接引用等。
在一种实施方式中,调用服务可以采用如下方式构建请求对象:定义一个请求对象数据结构,该请求对象数据结构中的属性至少可以包含请求连接引用、请求时间、请求标识、请求响应策略等。然后创建一个该请求对象数据结构的实例,获取当前计算任务的请求时间戳信息、请求标识,以及当前与服务请求方的连接对应的请求连接引用,以及预设的请求响应策略等,填充上述请求对象实例的对应属性,得到请求对象。
得到请求对象以后,可以将该请求对象通过对应的请求标识关联存储到一个预先生成的、全局的待处理请求字典中。
在一种实施方式中,针对上述待处理请求字典,本实施例还可以包括如下步骤:
对所述待处理请求字典中的各请求对象进行监控,并从所述待处理请求字典中删除满足所述请求响应策略的请求对象。
在该实施例中,调用服务可以启动后台线程对待处理请求字典中的各请求对象进行监控。该后台线程可以按照预设的时间策略遍历待处理请求字典中的各请求对象。当遍历到某个请求对象满足其对应的请求响应策略,则可以从该待处理请求字典中移除该请求对象。
作为一种示例,请求响应策略可以包括最大等待时长,基于该最大等待时长,至少可以有如下两种策略:第一种是:达到最大等待时长;第二种是:在该最大等待时长内,获得的该计算任务对应的计算结果的数量大于或等于预设数量(例如为N个以上,N可以根据实际需求设定或者为经验值)。
步骤103,从已订阅的计算结果队列中获取所述计算任务对应的计算结果,其中,所述计算结果为订阅所述计算任务队列的服务提供方获取所述计算任务后,对所述计算任务进行处理后得到的、并发布在所述计算结果队列中的结果。
在一种例子中,计算结果队列也可以为在Redis中创建的队列,如图2所示,调用服务可以启动另一后台线程订阅(SUBSCRIBE)该计算结果队列,以获得对当前计算任务有服务能力的服务提供方在计算结果队列中发布的计算结果。
示例性地,服务提供方可以为具有服务能力的服务器,如图2所示的文本分类服务、垃圾信息识别服务、账号风险识别服务、设备风险识别服务等。服务提供方通过主动订阅计算任务队列获得计算任务,对该计算任务进行解析获得对应的请求入参。然后,服务提供方根据该请求入参中的消息类型或者业务标识,可以判断当前获得的计算任务是否与自身关注的类型或者业务匹配,如果是,则可以根据预设的处理策略对当前的请求任务进行快速处理或者扩容服务能力。否则,则丢弃不关注的计算任务。
在一种实施方式中,服务提供方可以通过后台的任务线程对计算任务按照处理策略进行处理,可以包括但不限于如下两种:
一种是:将当前的计算任务交给后台的任务线程处理,若当前无任务线程可用则丢弃该计算任务。在服务提供方初始化时,可以生成固定大小的线程池,当需要处理计算任务时则从线程池中获取任务线程,任务线程对计算任务处理完后放回线程池。当有新的计算任务时如果线程池中没有任务线程(即没有线程可用),则丢弃该新的计算任务。
另一种是:将当前的计算任务放入计算任务缓存队列,由任务线程主动从该缓存队列中取出计算任务进行处理。在一种实现中,为保证任务响应成功率且尽可能处理更多的计算任务,可以对该缓存队列配置先进先出或后进先出等任务提取策略。在其他实现中,还可以计算任务缓存队列中各计算任务的等待时长(即上述请求时间戳信息与当前的时间信息的差值),对于等待时长超时(例如等待时长大于S秒)的计算任务,则丢弃该计算任务。
针对分布式的服务提供方(即同一服务提供方分布式部署),可以采用如下方式分配计算任务:定义分布式部署的各进程的服务启动编号,如0~N,每个进程处理(请求标识/N)的余数等于自身的服务启动编号的计算任务,以避免分布式服务提供方对计算任务重复计算导致的资源浪费。
在一种例子中,服务提供方对计算任务进行处理后,可以得到计算结果内容,示例性地,该计算结果内容可以包括但不限于风险等级、概率、描述等。然后,如图2所示,服务提供方可以将该计算结果内容封装成json数据结构的计算结果,并通过Redis的发布功能在计算结果列表中发布该json数据结构的计算结果,其中,该json数据结构的计算结果可以包括但不限于请求标识、该服务提供方的标识、计算结果内容等。
在一种实施方式中,对于调用服务而言,当其获得计算结果以后,还可以包括如下步骤:
按照预设的校验规则对所述计算结果进行校验;若所述校验通过且在所述待处理请求字典中查找到所述目标请求标识,则确定所述目标请求标识所处的请求对象对应的目标计算结果字典,并将该计算结果存入所述目标计算结果字典中;若所述校验不通过或者在所述待处理请求字典中查找不到所述目标请求标识,则丢弃所述计算结果。
具体的,当调用服务获得计算结果以后,可以解析该计算结果的json数据结构,获得目标请求标识、该目标服务提供方的标识、目标计算结果内容等信息,然后按照预设的校验规则对获得的信息进行校验,在一种例子中,一种校验方式可以为:判断获得的信息中必要的字段的信息(如目标请求标识等)是否存在,如果存在则校验通过,否则校验不通过。
当校验通过时,调用服务可以根据获得的目标请求标识查询待处理请求字典,如果查找到该目标请求标识,则表示该请求标识对应的请求对象在待处理请求字典中。然后,调用服务可以根据该目标请求标识查找该请求对象对应的目标计算结果字典,该目标计算结果字典用于存储该请求对象的计算结果。在找到该目标计算结果字典以后,则将该计算结果存入该目标计算结果字典中。
在一种实施方式中,上述将该计算结果存入目标计算结果字典中的步骤,进一步可以包括如下子步骤:
获取所述计算结果的计算结果标识;在所述目标计算结果字典中查找该计算结果的计算结果标识;若查找成功,则将该计算结果覆盖该计算结果标识对应的在先的计算结果;若查找失败,则将所述计算结果存入所述目标计算结果字典中。
在该实施例中,每个计算结果都具有对应的计算结果标识,示例性地,该计算结果标识可以包括但不限于:请求标识以及提供该计算结果的服务提供方的标识。
当调用服务从计算结果中解析出计算结果标识并确定了目标计算结果字典以后,则在目标计算结果字典中查找该计算结果标识,若查找失败,则表示同一个服务提供方并未对同一请求对象做出业务响应,此时可以将该计算结果存入目标计算结果字典中。否则,如果查找成功,则表示同一个服务提供方对同一请求对象已经做出业务响应,则将该计算结果覆盖该计算结果标识对应的在先的计算结果,使得在目标计算结果字典中对于同一次请求,同一个服务提供方只保留在超时时间内收到的最后一次计算结果,便于对计算结果的管理。
相应地,如果在待处理请求字典中查找不到目标请求标识,则表示对应的请求对象因等待超时而被移除,因此可以丢弃该计算结果。
另外,如果上述对计算结果的校验不通过也可以丢弃该计算结果。
步骤104,根据所述计算结果生成响应结果,并将所述响应结果返回所述服务请求方。
在该步骤中,当调用服务获得计算结果以后,则可以根据该计算结果生成响应结果,并通过当前响应结果对应的请求对象中记录的请求连接引用,将该响应结果返回服务请求方。
在一种实施方式中,上述根据计算结果生成响应结果的步骤,可以包括如下子步骤:
当从所述请求时间戳信息开始,在所述最大等待时长内,所述目标计算结果字典中存储的计算结果的数量大于或等于预设数量,则将该数量对应的计算结果按照预设组合规则进行组合,得到响应结果。
例如,假设在设定的最大等待时长内,目标计算结果字典中存储的计算结果的数量M大于或等于预设数量N,则可以将该M个计算结果按照预设组合规则进行组合,得到响应结果。一种示例性的组合规则可以为:遍历该M个计算结果,如果M个计算结果一致,则将其中一个计算结果作为响应结果,若M个计算结果中存在不一致的计算结果,则返回拒绝或错误信息。在其他实施例中,若计算结果为具体数值,则组合规则还可以为对M个计算结果进行平均或加权平均后得到响应结果。
在其他实施方式中,当从已订阅的计算结果队列中没有获取到计算结果,或者获得的在最大等待时长内的计算结果不满足预设数量时,则可以将响应结果设置为预设的默认结果。
需要说明的是,本实施例的调用服务可以分布式部署,每个调用服务都发布自己接收到请求的计算任务,同时订阅自己的计算任务的计算结果,并传输对应的响应结果给服务请求方。
在本实施例中,调用服务接收到服务请求方发送的业务请求以后,可以根据该业务请求生成计算任务,并在计算任务队列中发布该计算任务。然后从已订阅的计算结果队列中获取该该计算任务对应的计算结果,并根据该计算结果生成响应结果返回服务请求方,其中,该计算结果为订阅上述计算任务队列的服务提供方获取自身关注的计算任务后,对计算任务进行处理后得到的、并发布在计算结果队列中的结果。本实施例通过发布、订阅功能实现服务请求方和服务提供方的解耦,服务请求方发送一次业务请求后即可获得响应结果,无需要和多个服务交互多次,管理多个请求连接,同时不需要关注服务提供方是谁,服务能力如何,以及服务不稳定带来的雪崩效应,提高了服务调用的稳定性,提高了服务容错及扩展能力。
基于上述的服务调用的方法,参照图3,示出了本申请一种服务调用的装置实施例的结构框图,本实施例可以应用于调用服务中,所述装置可以包括如下模块:
业务请求接收模块301,用于接收服务请求方发送的业务请求,所述业务请求包括请求入参;
计算任务发布模块302,用于根据所述请求入参生成计算任务,并在预设的计算任务队列中发布所述计算任务;
计算结果订阅模块303,用于从已订阅的计算结果队列中获取所述计算任务对应的计算结果,其中,所述计算结果为订阅所述计算任务队列的服务提供方获取所述计算任务后,对所述计算任务进行处理后得到的、并发布在所述计算结果队列中的结果;
业务响应模块304,用于根据所述计算结果生成响应结果,并将所述响应结果返回所述服务请求方。
在一种实施方式中,所述计算任务发布模块302包括:
计算任务数据结构构建子模块,用于构建所述业务请求对应的计算任务数据结构;
信息写入子模块,用于确定所述计算任务数据结构的请求标识以及请求时间戳信息,并将所述请求入参、所述请求标识以及所述请求时间戳信息写入所述计算任务数据结构中,得到计算任务。
在一种实施方式中,所述装置还包括:
请求对象构建模块,用于在所述在预设的计算任务队列中发布所述计算任务之后,根据所述计算任务构建请求对象,其中,所述请求对象包括所述请求标识、所述请求时间戳信息以及请求响应策略;
请求对象存储模块,用于将所述请求对象存储在待处理请求字典中,
请求对象管理模块,用于对所述待处理请求字典中的各请求对象进行监控,并从所述待处理请求字典中删除满足所述请求响应策略的请求对象。
在一种实施方式中,所述计算结果包括目标请求标识,所述装置还包括:
计算结果校验模块,用于在所述从已订阅的计算结果队列中获取所述计算任务对应的计算结果之后,按照预设的校验规则对所述计算结果进行校验;
计算结果存储模块,用于若所述校验通过且在所述待处理请求字典中查找到所述目标请求标识,则确定所述目标请求标识所处的请求对象对应的目标计算结果字典,并将该计算结果存入所述目标计算结果字典中;
计算结果丢弃模块,用于若所述校验不通过或者在所述待处理请求字典中查找不到所述目标请求标识,则丢弃所述计算结果。
在一种实施方式中,所述计算结果存储模块具体用于:
获取所述计算结果的计算结果标识,所述计算结果标识包括请求标识以及提供该计算结果的服务提供方的标识;
在所述目标计算结果字典中查找该计算结果的计算结果标识;
若查找成功,则将该计算结果覆盖该计算结果标识对应的在先的计算结果;
若查找失败,则将所述计算结果存入所述目标计算结果字典中。
在一种实施方式中,所述请求响应策略包括最大等待时长,所述业务响应模块304具体用于:
当从所述请求时间戳信息开始,在所述最大等待时长内,所述目标计算结果字典中存储的计算结果的数量大于或等于预设数量,则将该数量对应的计算结果按照预设组合规则进行组合,得到响应结果。
在另一种实施方式中,所述业务响应模块304还用于:
当从已订阅的计算结果队列中没有获取到计算结果时,则将响应结果设置为预设的默认结果。
本申请实施例还公开了一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现上述的方法实施例。
本申请实施例还公开了一种存储介质,当所述存储介质中的指令由所述设备的处理器执行时,使得所述电子设备能够执行上述的方法实施例。
关于上述实施例中的装置、电子设备及存储介质,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种服务调用的方法,其特征在于,应用于调度服务中,所述方法包括:
接收服务请求方发送的业务请求,所述业务请求包括请求入参;
根据所述请求入参生成计算任务,并在预设的计算任务队列中发布所述计算任务;
从已订阅的计算结果队列中获取所述计算任务对应的计算结果,其中,所述计算结果为订阅所述计算任务队列的服务提供方获取所述计算任务后,对所述计算任务进行处理后得到的、并发布在所述计算结果队列中的结果;
根据所述计算结果生成响应结果,并将所述响应结果返回所述服务请求方。
2.根据权利要求1所述的方法,其特征在于,所述根据所述请求入参生成计算任务,包括:
构建所述业务请求对应的计算任务数据结构;
确定所述计算任务数据结构的请求标识以及请求时间戳信息;
将所述请求入参、所述请求标识以及所述请求时间戳信息写入所述计算任务数据结构中,得到计算任务。
3.根据权利要求2所述的方法,其特征在于,在所述在预设的计算任务队列中发布所述计算任务之后,所述方法还包括:
根据所述计算任务构建请求对象,并将所述请求对象存储在待处理请求字典中,其中,所述请求对象包括所述请求标识、所述请求时间戳信息以及请求响应策略;
对所述待处理请求字典中的各请求对象进行监控,并从所述待处理请求字典中删除满足所述请求响应策略的请求对象。
4.根据权利要求3所述的方法,其特征在于,所述计算结果包括目标请求标识;在所述从已订阅的计算结果队列中获取所述计算任务对应的计算结果之后,所述方法还包括:
按照预设的校验规则对所述计算结果进行校验;
若所述校验通过且在所述待处理请求字典中查找到所述目标请求标识,则确定所述目标请求标识所处的请求对象对应的目标计算结果字典,并将该计算结果存入所述目标计算结果字典中;
若所述校验不通过或者在所述待处理请求字典中查找不到所述目标请求标识,则丢弃所述计算结果。
5.根据权利要求4所述的方法,其特征在于,所述将该计算结果存入所述目标计算结果字典中,包括:
获取所述计算结果的计算结果标识,所述计算结果标识包括请求标识以及提供该计算结果的服务提供方的标识;
在所述目标计算结果字典中查找该计算结果的计算结果标识;
若查找成功,则将该计算结果覆盖该计算结果标识对应的在先的计算结果;
若查找失败,则将所述计算结果存入所述目标计算结果字典中。
6.根据权利要求4或5所述的方法,其特征在于,所述请求响应策略包括最大等待时长,所述根据所述计算结果生成响应结果,包括:
当从所述请求时间戳信息开始,在所述最大等待时长内,所述目标计算结果字典中存储的计算结果的数量大于或等于预设数量,则将该数量对应的计算结果按照预设组合规则进行组合,得到响应结果。
7.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
当从已订阅的计算结果队列中没有获取到计算结果时,则将响应结果设置为预设的默认结果。
8.一种服务调用的装置,其特征在于,应用于调度服务中,所述装置包括:
业务请求接收模块,用于接收服务请求方发送的业务请求,所述业务请求包括请求入参;
计算任务发布模块,用于根据所述请求入参生成计算任务,并在预设的计算任务队列中发布所述计算任务;
计算结果订阅模块,用于从已订阅的计算结果队列中获取所述计算任务对应的计算结果,其中,所述计算结果为订阅所述计算任务队列的服务提供方获取所述计算任务后,对所述计算任务进行处理后得到的、并发布在所述计算结果队列中的结果;
业务响应模块,用于根据所述计算结果生成响应结果,并将所述响应结果返回所述服务请求方。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1-7任一项所述的方法。
10.一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911158015.XA CN110995801A (zh) | 2019-11-22 | 2019-11-22 | 一种服务调用的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911158015.XA CN110995801A (zh) | 2019-11-22 | 2019-11-22 | 一种服务调用的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110995801A true CN110995801A (zh) | 2020-04-10 |
Family
ID=70086032
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911158015.XA Pending CN110995801A (zh) | 2019-11-22 | 2019-11-22 | 一种服务调用的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110995801A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112637321A (zh) * | 2020-12-18 | 2021-04-09 | 北京浪潮数据技术有限公司 | 一种云资源计算方法、系统、设备及计算机可读存储介质 |
CN112702228A (zh) * | 2020-12-18 | 2021-04-23 | 平安普惠企业管理有限公司 | 服务限流响应方法、装置、电子设备及可读存储介质 |
CN112783978A (zh) * | 2021-01-28 | 2021-05-11 | 北京东方优播网络科技有限公司 | 数据传输方法、装置、计算机系统和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130024690A1 (en) * | 2011-07-21 | 2013-01-24 | Microsoft Corporation | Centralized service for distributed service deployments |
US9405602B1 (en) * | 2012-06-25 | 2016-08-02 | Google Inc. | Method for application notification and tasking |
CN107180050A (zh) * | 2016-03-11 | 2017-09-19 | 精硕科技(北京)股份有限公司 | 一种数据抓取系统及方法 |
-
2019
- 2019-11-22 CN CN201911158015.XA patent/CN110995801A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130024690A1 (en) * | 2011-07-21 | 2013-01-24 | Microsoft Corporation | Centralized service for distributed service deployments |
US9405602B1 (en) * | 2012-06-25 | 2016-08-02 | Google Inc. | Method for application notification and tasking |
CN107180050A (zh) * | 2016-03-11 | 2017-09-19 | 精硕科技(北京)股份有限公司 | 一种数据抓取系统及方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112637321A (zh) * | 2020-12-18 | 2021-04-09 | 北京浪潮数据技术有限公司 | 一种云资源计算方法、系统、设备及计算机可读存储介质 |
CN112702228A (zh) * | 2020-12-18 | 2021-04-23 | 平安普惠企业管理有限公司 | 服务限流响应方法、装置、电子设备及可读存储介质 |
CN112702228B (zh) * | 2020-12-18 | 2023-08-29 | 广州黑蜂科技有限公司 | 服务限流响应方法、装置、电子设备及可读存储介质 |
CN112783978A (zh) * | 2021-01-28 | 2021-05-11 | 北京东方优播网络科技有限公司 | 数据传输方法、装置、计算机系统和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113766035B (zh) | 一种业务受理及共识的方法及装置 | |
US9800691B2 (en) | Stream processing using a client-server architecture | |
US9762690B2 (en) | Push notification delivery system | |
CN112527525B (zh) | 基于消息队列的分布式事件总线处理方法、终端及介质 | |
CN110995801A (zh) | 一种服务调用的方法及装置 | |
CN108897854B (zh) | 一种超时任务的监控方法和装置 | |
CN106059825A (zh) | 一种分布式系统及配置方法 | |
CN111045833B (zh) | 接口调用的方法和装置 | |
CN107623731B (zh) | 一种任务调度方法、客户端、服务集群及系统 | |
CN106487870B (zh) | 针对虚拟化技术部件的动作执行架构 | |
CN113517985B (zh) | 文件数据处理方法、装置、电子设备及计算机可读介质 | |
CN110753129A (zh) | 消息传输方法、系统、装置、设备及计算机可读存储介质 | |
CN111835797A (zh) | 一种数据处理方法、装置及设备 | |
US7289989B2 (en) | Pattern based web services | |
CN112448987A (zh) | 一种熔断降级的触发方法、系统和存储介质 | |
CN110704212A (zh) | 一种消息处理方法及装置 | |
CN117194029A (zh) | 任务请求处理方法、系统、计算机设备和存储介质 | |
CN112019689A (zh) | 来电秀业务处理系统及方法 | |
CN111240760A (zh) | 基于注册中心的应用发布方法、系统、存储介质及设备 | |
US20230122597A1 (en) | Real time method and system for analyzing data streams | |
CN115934292A (zh) | 微服务应用的调用方法、装置及设备 | |
CN115766821A (zh) | 基于反向连接的远程过程调用方法及装置 | |
CN112449012B (zh) | 数据资源调度方法、系统、服务器及读存储介质 | |
CN114968636A (zh) | 一种故障处理的方法和装置 | |
CN114356713A (zh) | 线程池监控方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200410 |
|
RJ01 | Rejection of invention patent application after publication |