CN112073492A - 请求执行方法、装置、电子设备及存储介质 - Google Patents
请求执行方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112073492A CN112073492A CN202010898929.6A CN202010898929A CN112073492A CN 112073492 A CN112073492 A CN 112073492A CN 202010898929 A CN202010898929 A CN 202010898929A CN 112073492 A CN112073492 A CN 112073492A
- Authority
- CN
- China
- Prior art keywords
- party system
- request
- command
- command request
- party
- 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.)
- Granted
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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及人工智能技术领域,可应用在智慧城市各方面的系统中,从而推动智慧城市的建设。提供一种请求执行方法,包括:确定接收的访问请求所指示的多个第三方系统;对访问请求进行封装,获得多个命令请求,其中,命令请求与第三方系统一一对应;若命令请求对应的第三方系统不为熔断系统,根据第三方系统的信号量,使用第三方系统的线程池中的线程执行命令请求;若命令请求在执行过程出现异常,生成托底数据,其中,托底数据包括命令请求当前调用结果以及历史调用结果;输出托底数据。本发明还提供一种请求执行装置、电子设备及存储介质。本发明能提高系统调用的稳定性。此外,本发明还涉及区块链技术,托底数据可以存储在区块链节点中。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种请求执行方法、装置、电子设备及存储介质。
背景技术
目前,可以通过多个系统的调用搭配来实现各种各样的服务,但在实践中发现,各系统的调用会出现不稳定的情况,若一个系统出错,不断有请求来调用出错的系统,所有的线程资源会被占用而不能被释放,导致全部系统不可用。
因此,如何提高系统调用的稳定性是一个需解决的技术问题。
发明内容
鉴于以上内容,有必要提供一种请求执行方法、装置、电子设备及存储介质,能够提高系统调用的稳定性。
本发明的第一方面提供一种请求执行方法,所述请求执行方法包括:
当接收到访问请求时,确定所述访问请求所指示的多个第三方系统,其中,每个第三方系统都拥有独立的线程池;
对所述访问请求进行封装,获得多个命令请求,其中,所述命令请求与所述第三方系统一一对应;
针对每个所述命令请求,判断所述命令请求对应的第三方系统是否为熔断系统,其中,所述第三方系统根据容错率进行熔断以及根据定时器进行恢复;
若所述命令请求对应的第三方系统不为熔断系统,根据所述第三方系统的信号量,使用所述第三方系统的线程池中的线程执行所述命令请求,其中,所述信号量管理所述线程池中的线程;
若所述命令请求在执行过程出现异常,生成托底数据,其中,所述托底数据包括所述命令请求当前调用结果以及历史调用结果;
输出所述托底数据。
在一种可能的实现方式中,所述当接收到访问请求时,确定所述访问请求所指示的多个第三方系统之前,所述请求执行方法还包括:
获取每个所述第三方系统的调用记录;
根据所述调用记录,确定所述第三方系统在预设时间段的容错率;
判断所述容错率是否大于预设容错率阈值;
若所述容错率大于预设容错率阈值,对所述第三方系统进行熔断,并将所述第三方系统确定为熔断系统;或
若所述容错率小于或等于预设容错率阈值,确定所述第三方系统为正常系统。
在一种可能的实现方式中,所述请求执行方法还包括:
若所述命令请求对应的所述第三方系统为熔断系统,确定所述第三方系统的休眠时间,其中,所述休眠时间为当前时间与所述第三方系统最后被调用时间的差值;
判断所述休眠时间是否大于预设时间阈值;
若所述休眠时间大于预设时间阈值,调用所述第三方系统,获得响应结果;
若所述响应结果指示所述第三方系统被成功调用,恢复所述第三方系统,使所述第三方系统为正常系统。
在一种可能的实现方式中,所述根据所述第三方系统的信号量,使用所述第三方系统的线程池中的线程执行所述命令请求包括:
判断所述第三方系统对应的信号量是否大于预设信号量阈值;
若所述第三方系统对应的信号量大于预设信号量阈值,为所述命令请求分配信号,并从所述第三方系统的线程池中选取与所述信号对应的线程来执行所述命令请求,其中,所述信号用于指示所述命令请求能够获得所述第三方系统的线程资源;或
若所述第三方系统对应的信号量小于或等于预设信号量阈值,拒绝执行所述命令请求。
在一种可能的实现方式中,所述请求执行方法还包括:
判断所述第三方系统对应的线程池的所有线程中是否存在闲置线程;
若所述第三方系统对应的线程池的所有线程中不存在闲置线程,拒绝所有请求调用所述第三方系统;或
若所述第三方系统对应的线程池的所有线程中存在闲置线程,允许请求调用所述第三方系统。
在一种可能的实现方式中,所述根据所述第三方系统的信号量,使用所述第三方系统的线程池中的线程执行所述命令请求之后,以及所述若所述命令请求在执行过程出现异常,生成托底数据之前,所述请求执行方法还包括:
确定所述命令请求对应的执行时间;
判断所述执行时间是否大于预设时间阈值;
若所述执行时间大于预设时间阈值,停止执行所述命令请求;或
若所述执行时间小于或等于预设时间阈值,继续执行所述命令请求。
在一种可能的实现方式中,所述输出所述托底数据之后,所述请求执行方法还包括:
生成所述命令请求对应的出错提示信息;
输出所述出错提示信息。
本发明的第二方面提供一种请求执行装置,所述请求执行装置包括:
确定模块,用于当接收到访问请求时,确定所述访问请求所指示的多个第三方系统,其中,每个第三方系统都拥有独立的线程池;
封装模块,用于对所述访问请求进行封装,获得多个命令请求,其中,所述命令请求与所述第三方系统一一对应;
判断模块,用于针对每个所述命令请求,判断所述命令请求对应的第三方系统是否为熔断系统,其中,所述第三方系统根据容错率进行熔断以及根据定时器进行恢复;
执行模块,用于若所述命令请求对应的第三方系统不为熔断系统,根据所述第三方系统的信号量,使用所述第三方系统的线程池中的线程执行所述命令请求,其中,所述信号量管理所述线程池中的线程;
生成模块,用于若所述命令请求在执行过程出现异常,生成托底数据,其中,所述托底数据包括所述命令请求当前调用结果以及历史调用结果;
输出模块,用于输出所述托底数据。
本发明的第三方面提供一种电子设备,所述电子设备包括处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序时实现所述的请求执行方法。
本发明的第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述的请求执行方法。
由以上技术方案,本发明中,可以为每个第三方系统维护一个线程池,做资源隔离,确保一个系统繁忙时,其他系统也有资源可以使用,并通过信号量保障了多并发时系统的稳定服务,确保其他系统正常运行,并可以通过熔断机制停用有问题的系统,避免有问题的系统不停调用其他系统从而导致其他系统崩溃,同时,若运行的系统出现了异常,可以生成并输出托底数据,确保当前请求可以获得底限度的响应,提高了系统调用的稳定性。
附图说明
图1是本发明公开的一种请求执行方法的较佳实施例的流程图。
图2是本发明公开的一种请求执行装置的较佳实施例的功能模块图。
图3是本发明实现请求执行方法的较佳实施例的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
本发明实施例的请求执行方法应用在电子设备中,也可以应用在电子设备和通过网络与所述电子设备进行连接的服务器所构成的硬件环境中,由服务器和电子设备共同执行。网络包括但不限于:广域网、城域网或局域网。
其中,服务器可以是指能对网络中其它设备(如电子设备)提供服务的计算机系统。如果一个个人电脑能够对外提供文件传输协议(File Transfer Protocol,简称FTP)服务,也可以叫服务器。从狭义范围上讲,服务器专指某些高性能计算机,能通过网络,对外提供服务,其相对于普通的个人电脑来说,稳定性、安全性、性能等方面都要求更高,因此在CPU、芯片组、内存、磁盘系统、网络等硬件和普通的个人电脑有所不同。
所述电子设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。所述电子设备还可包括网络设备和/或用户设备。其中,所述网络设备包括但不限于单个网络设备、多个网络设备组成的服务器组或基于云计算(Cloud Computing)的由大量主机或网络设备构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。所述用户设备包括但不限于任何一种可与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理PDA等。
请参见图1,图1是本发明公开的一种请求执行方法的较佳实施例的流程图。其中,根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。其中,所述请求执行方法的执行主体可以是电子设备。
S11、当接收到访问请求时,确定所述访问请求所指示的多个第三方系统,其中,每个第三方系统都拥有独立的线程池。
本发明实施例中,一个访问请求可以涉及多个第三方系统,比如,成绩查询请求可以涉及身份验证系统、成绩管理系统、成绩统计系统、报表打印系统等。可以为每个第三方系统维护一个线程池,做资源隔离,确保一个系统繁忙时,其他系统也有资源可以使用。
其中,线程可以使进程中负责程序执行的执行单元。一个进程中至少有一个线程。
其中,线程池可以是一种对象池,包括一块内存空间,里面存放了多个线程对象,当有线程任务时,从池中取一个线程对象去执行该线程任务,在该线程任务执行完成后,将被取出来的线程对象归还至线程池中,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。
作为一种可选的实施方式,所述当接收到访问请求时,确定所述访问请求所指示的多个第三方系统之前,所述请求执行方法还包括:
获取每个所述第三方系统的调用记录;
根据所述调用记录,确定所述第三方系统在预设时间段的容错率;
判断所述容错率是否大于预设容错率阈值;
若所述容错率大于预设容错率阈值,对所述第三方系统进行熔断,并将所述第三方系统确定为熔断系统;或
若所述容错率小于或等于预设容错率阈值,确定所述第三方系统为正常系统。
其中,所述调用记录可以保存有所述目标系统的调用成功次数、调用失败次数、调用拒绝次数以及调用超时次数等。
其中,所述容错率可以是指调用失败次数与调用成功次数的比值。
在该可选的实施方式中,可以每隔一段时间,获取所述第三方系统在预设时间段的调用记录,比如,所述预设时间段可以是指距离当前时间1小时的时间段,假设当前时间为17:00,则所述预设时间段可以是16:00-17:00。本实施方式可以根据所述调用记录,确定所述第三方系统在预设时间段的容错率,判断所述容错率是否大于预设容错率阈值;若所述容错率大于预设容错率阈值,对所述第三方系统进行熔断,并将所述第三方系统确定为熔断系统,或者,若所述容错率小于或等于预设容错率阈值,确定所述第三方系统为正常系统。
S12、对所述访问请求进行封装,获得多个命令请求,其中,所述命令请求与所述第三方系统一一对应。
本发明实施例中,可以通过分布式系统服务调用框架(Hystrix)的机制HystrixCommand或者HystrixObservableCommand来封装对第三方系统的访问请求,获得多个命令请求,一个命令请求用于调用一个系统,比如一个成绩查询请求,可能需要调用用户信息系统,课程系统以及考试分数系统等。
S13、针对每个所述命令请求,判断所述命令请求对应的第三方系统是否为熔断系统,其中,所述第三方系统根据容错率进行熔断以及根据定时器进行恢复,若否,执行步骤S14,若是,结束本流程。
其中,所述熔断系统表示该系统处于异常状态,是被禁止访问的,对访问熔断系统的请求,可以返回一个默认值,比如“NULL”、“暂时无法提供服务,请稍后再试”等。
S14、根据所述第三方系统的信号量,使用所述第三方系统的线程池中的线程执行所述命令请求,其中,所述信号量管理所述线程池中的线程。
其中,所述信号量用于对线程的使用数量进行限制,比如信号量的总量是5,则最多只有5个线程可以同时工作。通过赋予所述命令请求一个信号,使得所述命令请求可以被线程执行,此时,信号量减一,执行完毕后释放该信号,此时,信号量加一。
具体的,所述根据所述第三方系统的信号量,使用所述第三方系统的线程池中的线程执行所述命令请求包括:
判断所述第三方系统对应的信号量是否大于预设信号量阈值;
若所述第三方系统对应的信号量大于预设信号量阈值,为所述命令请求分配信号,并从所述第三方系统的线程池中选取与所述信号对应的线程来执行所述命令请求,其中,所述信号用于指示所述命令请求能够获得所述第三方系统的线程资源;或
若所述第三方系统对应的信号量小于或等于预设信号量阈值,拒绝执行所述命令请求。
本发明实施例中,可以预先设置一个信号量阈值,即所述预设信号量阈值,比如“0”,若当前信号量为1,则可以为所述命令请求分配一个信号,并从所述第三方系统的线程池中选取与所述信号对应的线程来执行所述命令请求。若当前信号量为“0”,则不允许系统被调用,拒绝执行所述命令请求,可以将所述命令请求挂起,等待所述第三方系统对应的信号量大于预设信号量阈值时,再执行所述命令请求。通过设置信号量,可以限制最大请求数量即请求并发数量。
作为一种可选的实施方式,所述请求执行方法还包括:
若所述命令请求对应的所述第三方系统为熔断系统,确定所述第三方系统的休眠时间,其中,所述休眠时间为当前时间与所述第三方系统最后被调用时间的差值;
判断所述休眠时间是否大于预设时间阈值;
若所述休眠时间大于预设时间阈值,调用所述第三方系统,获得响应结果;
若所述响应结果指示所述第三方系统被成功调用,恢复所述第三方系统,使所述第三方系统为正常系统。
在该可选的实施方式,可以预设一个时间阈值,当一个系统发生了异常时,在所述时间阈值对应的时间段内禁止访问该系统,对访问该系统的请求,返回一个默认值,比如“NULL”、“暂时无法提供服务,请稍后再试”等提示字符串。所述异常比如启动熔断机制,将该系统确定为熔断系统等情形。本实施方式可以确定所述第三方系统的休眠时间,其中,所述休眠时间为当前时间与所述第三方系统最后被调用时间的差值,判断所述休眠时间是否大于预设时间阈值,若所述休眠时间大于预设时间阈值,可以对所述第三方系统进行重试,调用所述第三方系统,若所述响应结果指示所述第三方系统被成功调用,表示所述第三方系统可以被正常调用,恢复所述第三方系统,使所述第三方系统为正常系统。
S15、若所述命令请求在执行过程出现异常,生成托底数据,其中,所述托底数据包括所述命令请求当前调用结果以及历史调用结果。
本发明实施例中,当请求第三方系统的服务(比如,所述命令请求被执行)出现异常时,可以生成托底数据,比如查询保单服务时,保单量在增加,保单服务器这时出现了异常,系统就返回当前暂时查询到的保单量以及最近一次历史查询到的保单量。
S16、输出所述托底数据。
作为一种可选的实施方式,所述根据所述第三方系统的信号量,使用所述第三方系统的线程池中的线程执行所述命令请求之后,以及所述若所述命令请求在执行过程出现异常,生成托底数据之前,所述请求执行方法还包括:
确定所述命令请求对应的执行时间;
判断所述执行时间是否大于预设时间阈值;
若所述执行时间大于预设时间阈值,停止执行所述命令请求;或
若所述执行时间小于或等于预设时间阈值,继续执行所述命令请求。
在该可选的实施方式中,当一个请求占用系统资源太久,可能使得系统对后面的请求响应过慢,因此可以挂起或停止占用系统资源太久的请求。可以确定所述命令请求对应的执行时间,若所述执行时间大于预设时间阈值,停止执行所述命令请求,或者,若所述执行时间小于或等于预设时间阈值,继续执行所述命令请求。
作为一种可选的实施方式,所述输出所述托底数据之后,所述请求执行方法还包括:
生成所述命令请求对应的出错提示信息;
输出所述出错提示信息。
在该可选的实施方式中,当系统调用出错时,还可以输出提示信息以提醒用户,比如“当前系统繁忙,请稍后查询”。
作为一种可选的实施方式,所述请求执行方法还包括:
判断所述第三方系统对应的线程池的所有线程中是否存在闲置线程;
若所述第三方系统对应的线程池的所有线程中不存在闲置线程,拒绝所有请求调用所述第三方系统;或
若所述第三方系统对应的线程池的所有线程中存在闲置线程,允许请求调用所述第三方系统。
其中,所述闲置线程可以是指当前可以被使用的线程。
在该可选的实施方式中,若所述第三方系统对应的线程池的所有线程中不存在闲置线程,确定所述第三方系统没有多余的资源去服务新增的请求,可以拒绝所有请求调用所述第三方系统。若所述第三方系统对应的线程池的所有线程中存在闲置线程,表示所述第三方系统拥有多余的资源去服务新增的请求,允许请求调用所述第三方系统。
需要强调的是,为进一步保证上述托底数据的私密和安全性,上述托底数据还可以存储于一区块链的节点中。
在图1所描述的方法流程中,可以为每个第三方系统维护一个线程池,做资源隔离,确保一个系统繁忙时,其他系统也有资源可以使用,并通过信号量保障了多并发时系统的稳定服务,确保其他系统正常运行,并可以通过熔断机制停用有问题的系统,避免有问题的系统不停调用其他系统从而导致其他系统崩溃,同时,若运行的系统出现了异常,可以生成并输出托底数据,确保当前请求可以获得底限度的响应,提高了系统调用的稳定性。
图2是本发明公开的一种请求执行装置的较佳实施例的功能模块图。
请参见图2,所述请求执行装置20可运行于电子设备中。所述请求执行装置20可以包括多个由程序代码段所组成的功能模块。所述请求执行装置20中的各个程序段的程序代码可以存储于存储器中,并由至少一个处理器所执行,以执行图1所描述的请求执行方法中的部分或全部步骤。
本实施例中,所述请求执行装置20根据其所执行的功能,可以被划分为多个功能模块。所述功能模块可以包括:确定模块201、封装模块202、判断模块203、执行模块204、生成模块205及输出模块206。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机程序段,其存储在存储器中。
确定模块201,用于当接收到访问请求时,确定所述访问请求所指示的多个第三方系统,其中,每个第三方系统都拥有独立的线程池。
本发明实施例中,一个访问请求可以涉及多个第三方系统,比如,成绩查询请求可以涉及身份验证系统、成绩管理系统、成绩统计系统、报表打印系统等。可以为每个第三方系统维护一个线程池,做资源隔离,确保一个系统繁忙时,其他系统也有资源可以使用。
其中,线程可以使进程中负责程序执行的执行单元。一个进程中至少有一个线程。
其中,线程池可以是一种对象池,包括一块内存空间,里面存放了多个线程对象,当有线程任务时,从池中取一个线程对象去执行该线程任务,在该线程任务执行完成后,将被取出来的线程对象归还至线程池中,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。
封装模块202,用于对所述访问请求进行封装,获得多个命令请求,其中,所述命令请求与所述第三方系统一一对应。
本发明实施例中,可以通过分布式系统服务调用框架(Hystrix)的机制HystrixCommand或者HystrixObservableCommand来封装对第三方系统的访问请求,获得多个命令请求,一个命令请求用于调用一个系统,比如一个成绩查询请求,可能需要调用用户信息系统,课程系统以及考试分数系统等。
判断模块203,用于针对每个所述命令请求,判断所述命令请求对应的第三方系统是否为熔断系统,其中,所述第三方系统根据容错率进行熔断以及根据定时器进行恢复。
其中,所述熔断系统表示该系统处于异常状态,是被禁止访问的,对访问熔断系统的请求,可以返回一个默认值,比如“NULL”、“暂时无法提供服务,请稍后再试”等。
执行模块204,用于若所述命令请求对应的第三方系统不为熔断系统,根据所述第三方系统的信号量,使用所述第三方系统的线程池中的线程执行所述命令请求,其中,所述信号量管理所述线程池中的线程。
其中,所述信号量用于对线程的使用数量进行限制,比如信号量的总量是5,则最多只有5个线程可以同时工作。通过赋予所述命令请求一个信号,使得所述命令请求可以被线程执行,此时,信号量减一,执行完毕后释放该信号,此时,信号量加一。
生成模块205,用于若所述命令请求在执行过程出现异常,生成托底数据,其中,所述托底数据包括所述命令请求当前调用结果以及历史调用结果。
本发明实施例中,当请求第三方系统的服务(比如,所述命令请求被执行)出现异常时,可以生成托底数据,比如查询保单服务时,保单量在增加,保单服务器这时出现了异常,系统就返回当前暂时查询到的保单量以及最近一次历史查询到的保单量。
输出模块206,用于输出所述托底数据。
作为一种可选的实施方式,所述请求执行装置20还包括:
获取模块,用于所述确定模块201当接收到访问请求时,确定所述访问请求所指示的多个第三方系统之前,获取每个所述第三方系统的调用记录;
所述确定模块201,还用于根据所述调用记录,确定所述第三方系统在预设时间段的容错率;
所述判断模块203,还用于判断所述容错率是否大于预设容错率阈值;
熔断模块,用于若所述容错率大于预设容错率阈值,对所述第三方系统进行熔断,并将所述第三方系统确定为熔断系统;或
所述确定模块201,用于若所述容错率小于或等于预设容错率阈值,确定所述第三方系统为正常系统。
其中,所述调用记录可以保存有所述目标系统的调用成功次数、调用失败次数、调用拒绝次数以及调用超时次数等。
其中,所述容错率可以是指调用失败次数与调用成功次数的比值。
在该可选的实施方式中,可以每隔一段时间,获取所述第三方系统在预设时间段的调用记录,比如,所述预设时间段可以是指距离当前时间1小时的时间段,假设当前时间为17:00,则所述预设时间段可以是16:00-17:00。本实施方式可以根据所述调用记录,确定所述第三方系统在预设时间段的容错率,判断所述容错率是否大于预设容错率阈值;若所述容错率大于预设容错率阈值,对所述第三方系统进行熔断,并将所述第三方系统确定为熔断系统,或者,若所述容错率小于或等于预设容错率阈值,确定所述第三方系统为正常系统。
作为一种可选的实施方式,所述确定模块201,还用于若所述命令请求对应的所述第三方系统为熔断系统,确定所述第三方系统的休眠时间,其中,所述休眠时间为当前时间与所述第三方系统最后被调用时间的差值;
所述判断模块203,还用于判断所述休眠时间是否大于预设时间阈值;
所述请求执行装置20还包括:
调用模块,用于若所述休眠时间大于预设时间阈值,调用所述第三方系统,获得响应结果;
恢复模块,用于若所述响应结果指示所述第三方系统被成功调用,恢复所述第三方系统,使所述第三方系统为正常系统。
在该可选的实施方式,可以预设一个时间阈值,当一个系统发生了异常时,在所述时间阈值对应的时间段内禁止访问该系统,对访问该系统的请求,返回一个默认值,比如“NULL”、“暂时无法提供服务,请稍后再试”等提示字符串。所述异常比如启动熔断机制,将该系统确定为熔断系统等情形。本实施方式可以确定所述第三方系统的休眠时间,其中,所述休眠时间为当前时间与所述第三方系统最后被调用时间的差值,判断所述休眠时间是否大于预设时间阈值,若所述休眠时间大于预设时间阈值,可以对所述第三方系统进行重试,调用所述第三方系统,若所述响应结果指示所述第三方系统被成功调用,表示所述第三方系统可以被正常调用,恢复所述第三方系统,使所述第三方系统为正常系统。
作为一种可选的实施方式,所述执行模块204根据所述第三方系统的信号量,使用所述第三方系统的线程池中的线程执行所述命令请求的方式具体为:
判断所述第三方系统对应的信号量是否大于预设信号量阈值;
若所述第三方系统对应的信号量大于预设信号量阈值,为所述命令请求分配信号,并从所述第三方系统的线程池中选取与所述信号对应的线程来执行所述命令请求,其中,所述信号用于指示所述命令请求能够获得所述第三方系统的线程资源;或
若所述第三方系统对应的信号量小于或等于预设信号量阈值,拒绝执行所述命令请求。
本发明实施例中,可以预先设置一个信号量阈值,即所述预设信号量阈值,比如“0”,若当前信号量为1,则可以为所述命令请求分配一个信号,并从所述第三方系统的线程池中选取与所述信号对应的线程来执行所述命令请求。若当前信号量为“0”,则不允许系统被调用,拒绝执行所述命令请求,可以将所述命令请求挂起,等待所述第三方系统对应的信号量大于预设信号量阈值时,再执行所述命令请求。通过设置信号量,可以限制最大请求数量即请求并发数量。
作为一种可选的实施方式,所述判断模块203,还用于判断所述第三方系统对应的线程池的所有线程中是否存在闲置线程;
所述请求执行装置20还包括:
拒绝模块,用于若所述第三方系统对应的线程池的所有线程中不存在闲置线程,拒绝所有请求调用所述第三方系统;或
允许模块,用于若所述第三方系统对应的线程池的所有线程中存在闲置线程,允许请求调用所述第三方系统。
其中,所述闲置线程可以是指当前可以被使用的线程。
在该可选的实施方式中,若所述第三方系统对应的线程池的所有线程中不存在闲置线程,确定所述第三方系统没有多余的资源去服务新增的请求,可以拒绝所有请求调用所述第三方系统。若所述第三方系统对应的线程池的所有线程中存在闲置线程,表示所述第三方系统拥有多余的资源去服务新增的请求,允许请求调用所述第三方系统。
作为一种可选的实施方式,所述根据所述第三方系统的信号量,使用所述第三方系统的线程池中的线程执行所述命令请求之后,以及所述若所述命令请求在执行过程出现异常,生成托底数据之前,所述请求执行方法还包括:
所述确定模块201,还用于确定所述命令请求对应的执行时间;
所述判断模块203,还用于判断所述执行时间是否大于预设时间阈值;
停止模块,用于若所述执行时间大于预设时间阈值,停止执行所述命令请求;或
继续模块,用于若所述执行时间小于或等于预设时间阈值,继续执行所述命令请求。
在该可选的实施方式中,当一个请求占用系统资源太久,可能使得系统对后面的请求响应过慢,因此可以挂起或停止占用系统资源太久的请求。可以确定所述命令请求对应的执行时间,若所述执行时间大于预设时间阈值,停止执行所述命令请求,或者,若所述执行时间小于或等于预设时间阈值,继续执行所述命令请求。
作为一种可选的实施方式,所述生成模块205,还用于所述输出模块206输出所述托底数据之后,生成所述命令请求对应的出错提示信息;
所述输出模块206,还用于输出所述出错提示信息。
在该可选的实施方式中,当系统调用出错时,还可以输出提示信息以提醒用户,比如“当前系统繁忙,请稍后查询”。
在图2所描述的请求执行装置20中,可以为每个第三方系统维护一个线程池,做资源隔离,确保一个系统繁忙时,其他系统也有资源可以使用,并通过信号量保障了多并发时系统的稳定服务,确保其他系统正常运行,并可以通过熔断机制停用有问题的系统,避免有问题的系统不停调用其他系统从而导致其他系统崩溃,同时,若运行的系统出现了异常,可以生成并输出托底数据,确保当前请求可以获得底限度的响应,提高了系统调用的稳定性。
需要强调的是,为进一步保证上述托底数据的私密和安全性,上述托底数据还可以存储于一区块链的节点中。
如图3所示,图3是本发明实现请求执行方法的较佳实施例的电子设备的结构示意图。所述电子设备3包括存储器31、至少一个处理器32、存储在所述存储器31中并可在所述至少一个处理器32上运行的计算机程序33及至少一条通讯总线34。
本领域技术人员可以理解,图3所示的示意图仅仅是所述电子设备3的示例,并不构成对所述电子设备3的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子设备3还可以包括输入输出设备、网络接入设备等。
所述电子设备3还包括但不限于任何一种可与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)、游戏机、交互式网络电视(InternetProtocol Television,IPTV)、智能式穿戴式设备等。所述电子设备3所处的网络包括但不限于互联网、广域网、城域网、局域网、虚拟专用网络(Virtual Private Network,VPN)等。
所述至少一个处理器32可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、分立硬件组件等。该处理器32可以是微处理器或者该处理器32也可以是任何常规的处理器等,所述处理器32是所述电子设备3的控制中心,利用各种接口和线路连接整个电子设备3的各个部分。
所述存储器31可用于存储所述计算机程序33和/或模块/单元,所述处理器32通过运行或执行存储在所述存储器31内的计算机程序和/或模块/单元,以及调用存储在存储器31内的数据,实现所述电子设备3的各种功能。所述存储器31可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备3的使用所创建的数据等。此外,存储器31可以包括易失性和非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件等。
结合图1,所述电子设备3中的所述存储器31存储多个指令以实现一种请求执行方法,所述处理器32可执行所述多个指令从而实现:
当接收到访问请求时,确定所述访问请求所指示的多个第三方系统,其中,每个第三方系统都拥有独立的线程池;
对所述访问请求进行封装,获得多个命令请求,其中,所述命令请求与所述第三方系统一一对应;
针对每个所述命令请求,判断所述命令请求对应的第三方系统是否为熔断系统,其中,所述第三方系统根据容错率进行熔断以及根据定时器进行恢复;
若所述命令请求对应的第三方系统不为熔断系统,根据所述第三方系统的信号量,使用所述第三方系统的线程池中的线程执行所述命令请求,其中,所述信号量管理所述线程池中的线程;
若所述命令请求在执行过程出现异常,生成托底数据,其中,所述托底数据包括所述命令请求当前调用结果以及历史调用结果;
输出所述托底数据。
具体地,所述处理器32对上述指令的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
在图3所描述的电子设备3中,可以为每个第三方系统维护一个线程池,做资源隔离,确保一个系统繁忙时,其他系统也有资源可以使用,并通过信号量保障了多并发时系统的稳定服务,确保其他系统正常运行,并可以通过熔断机制停用有问题的系统,避免有问题的系统不停调用其他系统从而导致其他系统崩溃,同时,若运行的系统出现了异常,可以生成并输出托底数据,确保当前请求可以获得底限度的响应,提高了系统调用的稳定性。
所述电子设备3集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存储器(RAM,Random Access Memory)等。
进一步地,所述计算机可用存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (10)
1.一种请求执行方法,其特征在于,所述请求执行方法包括:
当接收到访问请求时,确定所述访问请求所指示的多个第三方系统,其中,每个第三方系统都拥有独立的线程池;
对所述访问请求进行封装,获得多个命令请求,其中,所述命令请求与所述第三方系统一一对应;
针对每个所述命令请求,判断所述命令请求对应的第三方系统是否为熔断系统,其中,所述第三方系统根据容错率进行熔断以及根据定时器进行恢复;
若所述命令请求对应的第三方系统不为熔断系统,根据所述第三方系统的信号量,使用所述第三方系统的线程池中的线程执行所述命令请求,其中,所述信号量管理所述线程池中的线程;
若所述命令请求在执行过程出现异常,生成托底数据,其中,所述托底数据包括所述命令请求当前调用结果以及历史调用结果;
输出所述托底数据。
2.根据权利要求1所述的请求执行方法,其特征在于,所述当接收到访问请求时,确定所述访问请求所指示的多个第三方系统之前,所述请求执行方法还包括:
获取每个所述第三方系统的调用记录;
根据所述调用记录,确定所述第三方系统在预设时间段的容错率;
判断所述容错率是否大于预设容错率阈值;
若所述容错率大于预设容错率阈值,对所述第三方系统进行熔断,并将所述第三方系统确定为熔断系统;或
若所述容错率小于或等于预设容错率阈值,确定所述第三方系统为正常系统。
3.根据权利要求1所述的请求执行方法,其特征在于,所述请求执行方法还包括:
若所述命令请求对应的所述第三方系统为熔断系统,确定所述第三方系统的休眠时间,其中,所述休眠时间为当前时间与所述第三方系统最后被调用时间的差值;
判断所述休眠时间是否大于预设时间阈值;
若所述休眠时间大于预设时间阈值,调用所述第三方系统,获得响应结果;
若所述响应结果指示所述第三方系统被成功调用,恢复所述第三方系统,使所述第三方系统为正常系统。
4.根据权利要求1所述的请求执行方法,其特征在于,所述根据所述第三方系统的信号量,使用所述第三方系统的线程池中的线程执行所述命令请求包括:
判断所述第三方系统对应的信号量是否大于预设信号量阈值;
若所述第三方系统对应的信号量大于预设信号量阈值,为所述命令请求分配信号,并从所述第三方系统的线程池中选取与所述信号对应的线程来执行所述命令请求,其中,所述信号用于指示所述命令请求能够获得所述第三方系统的线程资源;或
若所述第三方系统对应的信号量小于或等于预设信号量阈值,拒绝执行所述命令请求。
5.根据权利要求1至4中任一项所述的请求执行方法,其特征在于,所述请求执行方法还包括:
判断所述第三方系统对应的线程池的所有线程中是否存在闲置线程;
若所述第三方系统对应的线程池的所有线程中不存在闲置线程,拒绝所有请求调用所述第三方系统;或
若所述第三方系统对应的线程池的所有线程中存在闲置线程,允许请求调用所述第三方系统。
6.根据权利要求1至4中任一项所述的请求执行方法,其特征在于,所述根据所述第三方系统的信号量,使用所述第三方系统的线程池中的线程执行所述命令请求之后,以及所述若所述命令请求在执行过程出现异常,生成托底数据之前,所述请求执行方法还包括:
确定所述命令请求对应的执行时间;
判断所述执行时间是否大于预设时间阈值;
若所述执行时间大于预设时间阈值,停止执行所述命令请求;或
若所述执行时间小于或等于预设时间阈值,继续执行所述命令请求。
7.根据权利要求1至4中任一项所述的请求执行方法,其特征在于,所述输出所述托底数据之后,所述请求执行方法还包括:
生成所述命令请求对应的出错提示信息;
输出所述出错提示信息。
8.一种请求执行装置,其特征在于,所述请求执行装置包括:
确定模块,用于当接收到访问请求时,确定所述访问请求所指示的多个第三方系统,其中,每个第三方系统都拥有独立的线程池;
封装模块,用于对所述访问请求进行封装,获得多个命令请求,其中,所述命令请求与所述第三方系统一一对应;
判断模块,用于针对每个所述命令请求,判断所述命令请求对应的第三方系统是否为熔断系统,其中,所述第三方系统根据容错率进行熔断以及根据定时器进行恢复;
执行模块,用于若所述命令请求对应的第三方系统不为熔断系统,根据所述第三方系统的信号量,使用所述第三方系统的线程池中的线程执行所述命令请求,其中,所述信号量管理所述线程池中的线程;
生成模块,用于若所述命令请求在执行过程出现异常,生成托底数据,其中,所述托底数据包括所述命令请求当前调用结果以及历史调用结果;
输出模块,用于输出所述托底数据。
9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述处理器用于执行存储器中存储的计算机程序以实现如权利要求1至7中任意一项所述的请求执行方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有至少一个指令,所述至少一个指令被处理器执行时实现如权利要求1至7中任意一项所述的请求执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010898929.6A CN112073492B (zh) | 2020-08-31 | 2020-08-31 | 请求执行方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010898929.6A CN112073492B (zh) | 2020-08-31 | 2020-08-31 | 请求执行方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112073492A true CN112073492A (zh) | 2020-12-11 |
CN112073492B CN112073492B (zh) | 2022-12-13 |
Family
ID=73665165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010898929.6A Active CN112073492B (zh) | 2020-08-31 | 2020-08-31 | 请求执行方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112073492B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107862001A (zh) * | 2017-10-23 | 2018-03-30 | 北京京东尚科信息技术有限公司 | 一种数据容灾的方法和系统 |
CN108762913A (zh) * | 2018-03-23 | 2018-11-06 | 阿里巴巴集团控股有限公司 | 服务处理方法及装置 |
CN109508344A (zh) * | 2018-09-29 | 2019-03-22 | 中国平安人寿保险股份有限公司 | 业务数据查询方法、装置、电子设备及存储介质 |
CN109766210A (zh) * | 2019-01-17 | 2019-05-17 | 多点生活(成都)科技有限公司 | 服务熔断控制方法、服务熔断控制装置和服务器集群 |
-
2020
- 2020-08-31 CN CN202010898929.6A patent/CN112073492B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107862001A (zh) * | 2017-10-23 | 2018-03-30 | 北京京东尚科信息技术有限公司 | 一种数据容灾的方法和系统 |
CN108762913A (zh) * | 2018-03-23 | 2018-11-06 | 阿里巴巴集团控股有限公司 | 服务处理方法及装置 |
CN109508344A (zh) * | 2018-09-29 | 2019-03-22 | 中国平安人寿保险股份有限公司 | 业务数据查询方法、装置、电子设备及存储介质 |
CN109766210A (zh) * | 2019-01-17 | 2019-05-17 | 多点生活(成都)科技有限公司 | 服务熔断控制方法、服务熔断控制装置和服务器集群 |
Also Published As
Publication number | Publication date |
---|---|
CN112073492B (zh) | 2022-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200257458A1 (en) | Cycling out dispersed storage processing units from access pools to perform expensive operations | |
US10169068B2 (en) | Live migration for virtual computing resources utilizing network-based storage | |
US20190171537A1 (en) | Method for storing data shards, apparatus, and system | |
JP4964220B2 (ja) | バーチャルマシーンフェイルオーバにおけるセキュリティレベルの実現 | |
WO2019120217A1 (zh) | 一种令牌获取方法、装置、服务器、用户终端及介质 | |
US9836327B1 (en) | Network-based storage access control for migrating live storage clients | |
CN111831485B (zh) | 数据恢复方法、装置、电子设备及介质 | |
CN108540315B (zh) | 分布式存储系统、方法和装置 | |
CN109886693B (zh) | 区块链系统的共识实现方法、装置、设备和介质 | |
CN111585887B (zh) | 基于多个网络的通信方法、装置、电子设备及存储介质 | |
CN111913667A (zh) | 一种基于Ceph的OSD阻塞检测方法、系统、终端及存储介质 | |
CN112445615A (zh) | 一种线程的调度系统、计算机设备和存储介质 | |
CN109873714B (zh) | 云计算节点配置更新方法及终端设备 | |
US20210133182A1 (en) | Pooled validator node configuration for hosted blockchain network | |
CN116305298B (zh) | 一种算力资源管理方法、装置、存储介质及电子设备 | |
CN106533961A (zh) | 一种流量控制方法及装置 | |
CN115757611A (zh) | 大数据集群切换方法、装置、电子设备及存储介质 | |
WO2020256831A1 (en) | Smart contract information redirect to updated version of smart contract | |
CN110321357B (zh) | 一种读写控制方法、装置及服务器 | |
CN110535724B (zh) | 应用程序网络读写限制方法、装置、电子设备及存储介质 | |
CN112073492B (zh) | 请求执行方法、装置、电子设备及存储介质 | |
US11055017B1 (en) | Throttling a point-in-time snapshot copy operation within a data consistency application | |
CN106557522A (zh) | 一种用于提供定时功能的方法与设备 | |
CN112631994A (zh) | 数据迁移方法及系统 | |
CN111736975A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |