CN107092532B - 一种远程调用方法及远程调用装置 - Google Patents
一种远程调用方法及远程调用装置 Download PDFInfo
- Publication number
- CN107092532B CN107092532B CN201710175351.XA CN201710175351A CN107092532B CN 107092532 B CN107092532 B CN 107092532B CN 201710175351 A CN201710175351 A CN 201710175351A CN 107092532 B CN107092532 B CN 107092532B
- Authority
- CN
- China
- Prior art keywords
- circuit breaker
- opening
- breaker
- calling
- closing
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 136
- 238000005538 encapsulation Methods 0.000 claims description 16
- 238000013507 mapping Methods 0.000 claims description 9
- 238000004458 analytical method Methods 0.000 claims description 7
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000012544 monitoring process Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 230000001960 triggered effect Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012827 research and development Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Remote Monitoring And Control Of Power-Distribution Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种远程调用方法及远程调用装置,所述的方法包括:内嵌Jetty服务器,接收外部发送的断路器开闭请求,其中,断路器开闭请求中携带有断路器标识信息和所请求的断路器的开闭状态信息;从HashMap中查找得到与断路器标识信息对应的断路器原有的开闭状态;根据断路器开闭请求中所请求的断路器的开闭状态,对从HashMap中查找得到的断路器原有的开闭状态进行更新,并根据更新后的断路器的开闭状态来允许或拒绝远程调用请求。本发明通过在程序中内嵌Jetty服务器,该Jetty服务器接收外部的断路器开闭请求,能够在调用程序启动后,对断路器的开闭状态进行更新,使断路器的开闭状态更符合实际情况。
Description
技术领域
本发明涉及计算机应用技术领域,更具体地,涉及一种远程调用方法及远程调用装置。
背景技术
软件系统通常会对在不同进程中运行的软件进行远程调用,这些进程很可能位于网络上的不同机器上。进程内调用和远程调用的一个很大的不同是远程调用经常会出现失败或者无响应挂起直到超时的问题。更糟糕的是,如果在一个无响应的服务上发起许多个调用,那么将很可能导致系统耗尽关键资源,从而导致多个系统上的级联故障。
针对上述问题,目前提出了断路器模式来避免这种级联故障。断路器的原理非常简单,就是使用断路器封装受到调用的方法,断路器能够监控调用该方法的失败情况。一旦调用该方法的失败次数超过了一定的阈值,断路器就处于打开状态,拒绝后续到达断路器上的远程调用请求,而避免了受保护方法的调用。
采用上述解决方式,由于断路器打开的条件阈值是在远程调用程序之前设置好的,一旦远程调用程序启动后,断路器打开的条件阈值是无法更改的。这样,在远程调用程序启动后,预先设置的断路器打开的条件阈值很可能不能反映整个过程中真实的情况。
发明内容
本发明提供一种远程调用方法及远程调用装置,克服了现有的一旦设置了断路器的开闭条件、就无法修改的问题。
根据本发明的一个方面,提供了一种远程调用方法,包括:
S1,内嵌Jetty服务器,接收外部发送的断路器开闭请求,其中,所述断路器开闭请求中携带有断路器标识信息和所请求的断路器的开闭状态信息;
S2,从HashMap中查找得到与所述断路器标识信息对应的断路器原有的开闭状态,其中,HashMap中表征断路器标识信息和断路器的开闭状态的映射关系;
S3,根据所述断路器开闭请求中所请求的断路器的开闭状态,对从HashMap中查找得到的断路器原有的开闭状态进行更新,并根据更新后的断路器的开闭状态来允许或拒绝远程调用请求。
本发明的有益效果为:通过在原有的系统中内嵌Jetty服务器,该Jetty服务器接收外部的断路器开闭请求,能够在调用程序启动后,对断路器的开闭状态进行更新,使断路器的开闭状态更符合实际情况;在断路器中引入Jetty服务器,利用服务器来实现对断路器的开闭状态的更新,不会影响断路器本身的运行。
在上述技术方案的基础上,本发明还可以作如下改进。
可选的,在所述步骤S1之前还包括:
为每一个远程调用的方法配置一个断路器来封装该方法;
对远程调用断路器封装的方法的调用状况进行分析,来确定该断路器的开闭状态,并将所述断路器的开闭状态存储于HashMap中。
可选的,所述对远程调用断路器封装的方法的调用状况进行分析来确定该断路器的开闭状态具体包括:
统计在预设周期内远程调用断路器封装的方法的失败次数,当失败次数达到第一预设次数时,将该方法对应的断路器设置为打开状态,否则,将所述断路器设置为闭合状态;或者,
统计预设周期内远程调用断路器封装的方法的总次数以及调用失败的次数,当调用失败的次数与调用的总次数的比值达到第一预设比值时,将所述断路器设置为打开状态,否则,将所述断路器设置为闭合状态。
可选的,还包括:
将在预设周期内远程调用断路器封装的方法的失败次数、成功次数以及调用失败的次数与调用的总次数的比值显示在界面上。
可选的,所述步骤S1之前还包括:
S0,根据在预设周期内远程调用断路器封装的方法的失败次数或者在界面上显示的预设周期内远程调用断路器封装的方法失败的次数与总次数的比值,确定向所述Jetty服务器发送断路器开闭请求。
可选的,所述步骤S0具体包括:
当预设周期内远程调用断路器封装的方法失败的次数达到第二预设次数时,向所述Jetty服务器发送断路器打开的请求,其中,所述第二预设次数与所述第一预设次数不相等;或者,
当预设周期内远程调用断路器封装的方法失败的次数与总次数的比值达到第二预设比值,向所述Jetty服务器发送断路器打开的请求,其中,所述第二预设比值与所述第一预设比值不相等。
可选的,所述步骤S0具体包括:
实时监控远程调用断路器封装的方法的次数,当在预设时间内远程调用断路器封装的方法的次数下降到第三预设次数,向所述Jety服务器发送断路器的闭合请求。
根据本发明的另一个方面,还提供了一种远程调用装置,包括断路器和内嵌的Jetty服务器,所述Jetty服务器包括:
接收模块,用于接收外部发送的断路器开闭请求,其中,所述断路器开闭请求中携带有断路器标识信息和所请求的断路器的开闭状态;
查找模块,用于从HashMap中查找得到与所述断路器标识信息对应断路器原有的开闭状态,其中,HashMap表征断路器标识信息与断路器的开闭状态的映射关系;
更新模块,用于根据所述断路器开闭请求中所请求的断路器的开闭状态,对从HashMap中查找得到的断路器原有的开闭状态进行更新;
所述断路器,用于根据HashMap中更新后的断路器的开闭状态来允许或拒绝远程调用请求。
可选的,所述断路器用来封装对应的方法,所述断路器包括分析模块;
所述分析模块,用于对远程调用断路器封装的方法的调用状况进行分析,来确定断路器的开闭状态,并将断路器的开闭状态存储于HashMap中。
可选的,所述接收模块具体用于:
接收外部根据在预设周期内远程调用断路器封装的方法的失败次数向所述Jetty服务器发送断路器开闭请求;或者,
接收外部根据预设周期内远程调用断路器封装的方法失败的次数与总次数的比值,向所述Jetty服务器发送断路器开闭请求。
附图说明
图1为本发明一个实施例的远程调用方法流程图;
图2为本发明另一个实施例的远程调用装置中Jetty服务器的内部连接框图;
图3为本发明又一个实施例的远程调用装置整体连接框图;
图4为本发明又一个实施例的远程调用装置的测试设备连接框图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
参见图1,为本发明一个实施例的远程调用方法,应用在使用断路器进行远程调用的方法保护方面。该远程调用方法包括:S1,内嵌Jetty服务器,所述Jetty服务器接收外部发送的断路器开闭请求,其中,所述断路器开闭请求中携带有断路器标识信息和所请求的断路器的开闭状态;S2,从HashMap中查找得到与所述断路器标识信息对应的断路器原有的开闭状态;S3,根据所述断路器开闭请求所请求的断路器的开闭状态,对从HashMap中查找得到的断路器原有的开闭状态进行更新,并根据更新后的断路器的开闭状态来允许或拒绝远程调用请求。
在对不同进程中运行的软件进行远程调用时,这些进程很可能分别位于网络上的不同机器上。远程调用经常会出现调用失败或者无响应挂起直至超时的情况。若在无响应的服务器上发起多个调用,将很可能导致系统耗尽关键资源,从而导致多个系统上的级联故障。因此,采用断路器来避免这种级联故障。现有解决方式通常是通过统计在预定周期内调用一个方法失败的次数来确定是否要打开对应的断路器,为断路器打开设置条件阈值。但是当调用程序启动后,这个设置的条件阈值是不能够更改的。因此,为了解决这个技术问题,本实施例在原有的程序中内嵌了一个Jetty服务器,用来接收外部发送的断路器开闭请求,并根据请求中的断路器标识信息在HashMap中查找该断路器原有的开闭状态,以及根据外部请求中所请求的断路器的开闭状态来更改HashMap中断路器原来的开闭状态。其中,HashMap中存储有断路器标识信息和断路器的开闭状态的映射关系。HashMap中对断路器的开闭状态进行更新后,根据更新后的断路器的开闭状态,对外部的远程调用请求进行允许或拒绝,即更新后的断路器为打开状态,则拒绝远程调用请求,若更新后的断路器处于闭合状态,则允许远程调用请求。
本实施例通过在原有的程序中内嵌Jetty服务器,该Jetty服务器接收外部的断路器开闭请求,能够在调用程序启动后,对断路器的开闭状态进行更新,使断路器的开闭状态更符合实际情况;在断路器中引入Jetty服务器,利用服务器来实现对断路器的开闭状态的更新,不会影响断路器本身的运行。
在本发明的一个实施例中,在上述步骤S1之前还包括:为每一个远程调用的方法配置一个断路器来封装该方法;对远程调用断路器封装的方法的调用状况进行分析来确定该断路器的开闭状态,并将所述断路器的开闭状态存储于HashMap中。
在远程调用的过程中,为了保护所要调用的方法,为每一个远程调用的方法配置一个断路器,采用该断路器来封装对应的方法,根据远程调用该方法的调用情况来来决定将断路器打开还是关闭。当断路器打开时,断路器拒绝后续的远程调用请求;若断路器闭合,则断路器允许后续的远程调用请求,利用断路器来保护受调用的方法,避免由于网络状况不良或者远程调用的访问量非常大时发生的级联故障。
在本发明的另一个实施例中,所述对远程调用断路器封装的方法的调用状况进行分析来确定该断路器的开闭状态具体包括:统计在预设周期内远程调用断路器封装的方法的失败次数,当失败次数达到第一预设次数时,将该方法对应的断路器设置为打开状态,否则,将所述断路器设置为闭合状态;或者,统计预设周期内远程调用与断路器封装的方法的总次数以及调用失败的次数,当调用失败的次数与调用的总次数的比值达到第一预设比值时,将所述断路器设置为打开状态,否则,将所述断路器设置为闭合状态。
本实施例中对是否打开断路器的条件进行了设置,具体的,在预设周期内,若远程调用一个方法失败的次数达到第一预设次数,表明调用该方法出现问题,其中可能是网络故障的原因,也可能是访问量过高系统崩溃等原因,总之,在后期的一端时间内不适宜再调用该方法,因此,打开与该方法对应的断路器,拒绝后续对该方法的远程调用请求。若在预设周期内远程调用该方法失败的次数还没有达到第一预设次数,则将对应的断路器设置为闭合状态。或者断路器打开的另外一种条件,在预设周期内,若远程调用一个方法失败的次数与调用该方法的总次数之间的比值达到第二预设比值,则打开断路器,拒绝后续的远程调用请求;否则,闭合断路器,允许后续的远程调用请求。
本实施例对断路器打开的条件进行了条件设置,当达到了条件时,打开断路器,对要调用的方法进行保护,避免系统资源耗尽,从而导致多个系统上的级联故障。
在本发明的一个实施例中,还包括:将在预设周期内远程调用断路器对应的方法的失败次数、成功次数以及调用失败的次数与调用的总次数的比值显示在界面上。
在远程调用的过程中,实时地将预设周期内调用某一个方法失败的次数、成功的次数以及调用该方法失败的次数与调用该方法的总次数的比值显示在界面上,可供研发人员查看,能够更直观地了解远程调用过程中调用某一个方法的情况。
在本发明的另一个实施例中,所述步骤S1之前还包括:S0,根据在预设周期内远程调用断路器封装的方法的失败次数或者在界面上显示的预设周期内远程调用断路器封装的方法失败的次数与总次数的比值,确定向所述Jetty服务器发送断路器开闭请求。
由于在现有技术中,断路器打开的条件阈值是在调用程序启动前配置好的,一旦调用程序启动后,事先设置好的条件阈值是无法更改的。因此,本实施例在原有的程序中内嵌Jetty服务器,在远程调用的过程中,当在界面上显示的预设周期内远程调用某个方法的失败次数达到第二预设次数,或者在预设周期内远程调用某个方法的失败次数与调用总次数的比值达到第二预设比值,触发外部向Jetty服务器发送断路器打开请求,其中,第二预设次数与上述的第一预设次数不相等,同样的,第二预设比值与上述的第一预设比值也不相同。Jetty服务器根据断路器打开请求中的断路器标识信息,从HashMap中查找到断路器的开闭状态,Jetty服务器根据外部发送的断路器打开请求,将HashMap中的断路器的开闭状态更新为打开状态,且根据更新后的断路器的打开状态拒绝后期的远程调用请求。其中,外部向Jetty服务器发送的断路器开闭请求为超文本传输协议http(HyperText TransferProtocol)格式的请求。
本实施例通过在原有的程序中内嵌Jetty服务器,由Jetty服务器来接收外部的断路器开闭请求,对原有的设置好的断断路器的开闭状态进行更改,实现了在调用程序启动后,能够灵活的更改断路器的开闭条件阈值。比如,原有设置的断路器打开的条件为在预设周期内远程调用某个方法失败率达到70%时,才打开断路器,而在实际过程中,失败率达到60%,就可以打开断路器了。由于原有的设置是在调用程序启动前设置的,调用程序启动后就无法再更改了,因此,只有断路器判断在预设周期内远程调用某方法的失败率达到70%,才会打开断路器,这样会导致后续没有意义的远程调用,浪费时间和资源。而本实施例中,当界面上显示的预设周期内远程调用该方法的失败率达到了60%,则触发外部向断路器中的Jetty服务器发送断路器打开的请求,Jetty服务器根据断路器打开的请求,将HashMap中该断路器原有的开闭状态更改为打开状态,此后,后续的远程调用该方法的请求皆被拒绝。通过本实施例,当远程调用程序启动后,能够对断路器的开闭状态进行更加灵活的控制。
另外,在远程调用的过程中,实时监控远程调用断路器封装的方法的次数,当在预设时间内远程调用断路器封装的方法的次数下降到第三预设次数,向所述Jety服务器发送断路器的闭合请求。
具体的,当在一段时间内远程调用某一个方法的次数非常多,会导致系统崩溃,按照原来的保护方法,此时会将断路器打开,拒绝后续的远程调用请求。而导致系统崩溃的原因是在很短的时间内存在过多的远程调用请求访问量,只要这个高峰期过去,系统会恢复正常,这时候一致将断路器设置为打开状态显然是不合理的。因此,本实施例在远程调用的过程中,会实时的记录在预设周期内远程调用一方法的次数,当远程调用的次数下降到第三预设次数时,触发外部向Jetty服务器发送断路器闭合的请求。Jetty服务器根据外部发送的断路器闭合的请求,将断路器打开的状态更改为闭合的状态,允许后续对该方法远程调用的请求。这种实时更新断路器的打开或关闭的状态,能够及时地符合实际情况。
现有的断路器的实现是基于统计判断的方式来决定当前方法上的断路器的开闭状态。因此,在远程调用的过程中,需要在预设周期内远程调用请求的失败次数是否达到了预设次数,只有达到了预设次数,断路器才会打开,这会造成一定程度上的时延。而在实际的产生过程中,要求控制断路器的时延,而本发明实施例中Jetty服务器根据外部发送的断路器开闭的请求,对断路器的当前开闭状态进行更改,实现了对断路器的实时更改,时效性很高。
参加图2,为本发明另一个实施例的远程调用装置,包括断路器1和内嵌的Jetty服务器2,所述Jetty服务器2包括:
接收模块21,用于接收外部发送的断路器开闭请求,其中,所述断路器开闭请求中携带有断路器标识信息和所请求的断路器的开闭状态。
查找模块22,用于从HashMap中查找得到与所述断路器标识信息对应的断路器原有的开闭状态,其中,HashMap中表征断路器标识信息和断路器的开闭状态的映射关系。
更新模块23,用于根据所述断路器开闭请求所请求的断路器的开闭状态,对从HashMap中查找得到的断路器原有的开闭状态进行更新,并根据更新后的断路器的开闭状态来允许或拒绝远程调用请求。
参见图3,为本发明另一个实施例的远程调用装置的整体连接框图,其中的断路器1用来封装对应的方法,断路器2包括分析模块11;
所述分析模块11,用于对远程调用断路器1封装的方法的调用状况进行分析来确定断路器的开闭状态,并将断路器的开闭状态存储于HashMap中。
所述分析模块11具体用于统计在预设周期内远程调用断路器1封装的方法的失败次数,当失败次数达到第一预设次数时,将该方法对应的断路器1设置为打开状态,否则,将所述断路器1设置为闭合状态;或者,统计预设周期内远程调用断路器1封装的方法的总次数以及调用失败的次数,当调用失败的次数与调用的总次数的比值达到第一预设比值时,将所述断路器1设置为打开状态,否则,将所述断路器1设置为闭合状态。
本实施例提供的远程调用装置还包括显示模块3,显示模块3用于将在预设周期内远程调用断路器封装的方法的失败次数、成功次数以及调用失败的次数与调用的总次数的比值显示在界面上。
Jetty服务器2中的接收模块21还用于:接收外部根据在预设周期内远程调用断路器1封装的方法的失败次数向所述Jetty服务器2发送断路器开闭请求;或者,接收外部根据预设周期内远程调用断路器1封装的方法失败的次数与总次数的比值,向所述Jetty服务器2发送断路器开闭请求。
具体的,当界面上显示的预设周期内远程调用断路器1封装的方法失败的次数达到第二预设次数时,触发外部向所述Jetty服务器2发送断路器打开的请求,其中,所述第二预设次数与所述第一预设次数不相等,此时,Jetty服务器2中的接收模块21接收外部发送的断路器打开的请求。或者,当在界面上显示的预设周期内远程调用断路器1封装的方法失败的次数与总次数的比值达到第二预设比值,触发外部向所述Jetty服务器2发送断路器打开的请求,其中,所述第二预设比值与所述第一预设比值不相等,此时,Jetty服务器2中的接收模块21接收外部发送的断路器打开的请求,拒绝后续的远程调用请求。
在远程调用的过程中,实时监控远程调用断路器1封装的方法的次数,当在预设时间内远程调用断路器1封装的方法的次数下降到第三预设次数,触发外部向Jety服务器2发送断路器的闭合请求,此时,Jetty服务器2中的接收模块21接收外部发送的断路器闭合的请求,允许后续的远程调用请求。
基于上述图2和图3对应实施例所提供的远程调用装置,本发明提供了还一种远程调用装置的测试设备。参见图4,该远程调用装置的测试设备包括:处理器(processor)401、存储器(memory)402、通信接口(Communications Interface)403和总线404;
其中,处理器401、存储器402及通信接口403分别通过总线404完成相互间的通信;
通信接口403用于该测试设备与远程调用装置的通信设备之间的信息传输;
处理器401用于调用存储器402中的程序指令,以执行上述图1对应实施例所提供的远程调用方法,例如包括:内嵌Jetty服务器,接收外部发送的断路器开闭请求,其中,所述断路器开闭请求中携带有断路器标识信息和所请求的断路器的开闭状态;从HashMap中查找得到与所述断路器标识信息对应的断路器原有的开闭状态,其中,HashMap表征断路器标识信息和断路器的开闭状态的映射关系;根据所述断路器开闭请求所请求的断路器的开闭状态,对从HashMap中查找得到的断路器原有的开闭状态进行更新,并根据更新后的断路器的开闭状态来允许或拒绝远程调用请求。
本发明公开一种计算机程序产品,该计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,该计算机程序包括程序指令,当程序指令被计算机执行时,计算机能够执行上述图1对应实施例所提供的远程调用方法,例如包括:内嵌Jetty服务器,接收外部发送的断路器开闭请求,其中,所述断路器开闭请求中携带有断路器标识信息和所请求的断路器的开闭状态;从HashMap中查找得到与所述断路器标识信息对应的断路器原有的开闭状态,其中,HashMap表征断路器标识信息和断路器的开闭状态的映射关系;根据所述断路器开闭请求所请求的断路器的开闭状态,对从HashMap中查找得到的断路器原有的开闭状态进行更新,并根据更新后的断路器的开闭状态来允许或拒绝远程调用请求。
本发明提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行上述图1对应实施例所提供的远程调用方法,例如包括:内嵌Jetty服务器,接收外部发送的断路器开闭请求,其中,所述断路器开闭请求中携带有断路器标识信息和所请求的断路器的开闭状态;从HashMap中查找得到与所述断路器标识信息对应的断路器原有的开闭状态,其中,HashMap表征断路器标识信息和断路器的开闭状态的映射关系;根据所述断路器开闭请求所请求的断路器的开闭状态,对从HashMap中查找得到的断路器原有的开闭状态进行更新,并根据更新后的断路器的开闭状态来允许或拒绝远程调用请求。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的远程调用装置的测试设备等实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分方法。
本发明提供的一种远程调用方法及装置,通过在原有的程序中内嵌Jetty服务器,该Jetty服务器接收外部的断路器开闭请求,能够在调用程序启动后,对断路器的开闭状态进行更新,使断路器的开闭状态更符合实际情况;引入Jetty服务器,利用Jetty服务器来实现对断路器的开闭状态的更新,不会影响断路器本身的运行。在远程调用的过程中,将实时调用失败的次数、调用成功的次数以及调用失败的次数与调用总次数的比值均显示于界面上,供研发人员查看,以便研发人员根据界面上显示的数据,触发外部向jetty服务器发送断路器开闭请求,使得jetty服务器计时对断路器当前的开闭状态进行更新,实现了在调用程序启动后,能够实时对断路器的开闭状态进行更改,更新断路器的开闭状态的时效性也非常高。
最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种远程调用方法,其特征在于,包括:
S1,内嵌Jetty服务器,接收外部发送的断路器开闭请求,其中,所述断路器开闭请求中携带有断路器标识信息和所请求的断路器的开闭状态;
S2,从HashMap中查找得到与所述断路器标识信息对应的断路器原有的开闭状态,其中,HashMap中表征断路器标识信息和断路器的开闭状态的映射关系;
S3,根据所述断路器开闭请求中所请求的断路器的开闭状态,对从HashMap中查找得到的断路器原有的开闭状态进行更新,并根据更新后的断路器的开闭状态来允许或拒绝远程调用请求;所述步骤S1之前还包括:
为每一个远程调用的方法配置一个断路器来封装该方法;
对远程调用断路器封装的方法的调用状况进行分析,来确定该断路器的开闭状态,并将所述断路器的开闭状态存储于HashMap中;
所述对远程调用断路器封装的方法的调用状况进行分析来确定该断路器的开闭状态具体包括:
统计在预设周期内远程调用断路器封装的方法的失败次数,当失败次数达到第一预设次数时,将所述断路器设置为打开状态,否则,将所述断路器设置为闭合状态;或者,
统计预设周期内远程调用断路器封装的方法的总次数以及调用失败的次数,当调用失败的次数与调用的总次数的比值达到第一预设比值时,将所述断路器设置为打开状态,否则,将所述断路器设置为闭合状态。
2.如权利要求1所述的远程调用方法,其特征在于,还包括:
将在预设周期内远程调用断路器封装的方法的失败次数、成功次数以及调用失败的次数与调用的总次数的比值显示在界面上。
3.如权利要求2所述的远程调用方法,其特征在于,所述步骤S1之前还包括:
S0,根据在预设周期内远程调用断路器封装的方法的失败次数或者预设周期内远程调用断路器封装的方法失败的次数与总次数的比值,确定向所述Jetty服务器发送断路器开闭请求。
4.如权利要求3所述的远程调用方法,其特征在于,所述步骤S0具体包括:
当预设周期内远程调用断路器封装的方法失败的次数达到第二预设次数时,向所述Jetty服务器发送断路器打开的请求,其中,所述第二预设次数与所述第一预设次数不相等;或者,
当预设周期内远程调用断路器封装的方法失败的次数与总次数的比值达到第二预设比值,向所述Jetty服务器发送断路器打开的请求,其中,所述第二预设比值与所述第一预设比值不相等。
5.如权利要求3所述的远程调用方法,其特征在于,所述步骤S0具体包括:
实时监控远程调用断路器封装的方法的次数,当在预设时间内远程调用断路器封装的方法的次数下降到第三预设次数,向所述Jetty服务器发送断路器的闭合请求。
6.一种远程调用装置,其特征在于,包括断路器和内嵌的Jetty服务器,所述Jetty服务器包括:
接收模块,用于接收外部发送的断路器开闭请求,其中,所述断路器开闭请求中携带有断路器标识信息和所请求的断路器的开闭状态;
查找模块,用于从HashMap中查找得到与所述断路器标识信息对应的断路器原有的开闭状态,其中,HashMap中表征断路器标识信息和断路器的开闭状态的映射关系;
更新模块,用于根据所述断路器开闭请求中所请求的断路器的开闭状态,对从HashMap中查找得到的断路器原有的开闭状态进行更新;
所述断路器,用于根据HashMap中更新后的断路器的开闭状态来允许或拒绝远程调用请求;所述断路器用来封装对应的方法,所述断路器包括分析模块;
所述分析模块,用于对远程调用断路器封装的方法的调用状况进行分析,来确定断路器的开闭状态,并将断路器的开闭状态存储于HashMap中;
所述接收模块具体用于:
接收外部根据在预设周期内远程调用断路器封装的方法的失败次数向所述Jetty服务器发送断路器开闭请求;或者,
接收外部根据预设周期内远程调用断路器封装的方法失败的次数与总次数的比值,向所述Jetty服务器发送断路器开闭请求。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710175351.XA CN107092532B (zh) | 2017-03-22 | 2017-03-22 | 一种远程调用方法及远程调用装置 |
PCT/CN2017/120176 WO2018171287A1 (zh) | 2017-03-22 | 2017-12-29 | 一种远程调用方法及远程调用装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710175351.XA CN107092532B (zh) | 2017-03-22 | 2017-03-22 | 一种远程调用方法及远程调用装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107092532A CN107092532A (zh) | 2017-08-25 |
CN107092532B true CN107092532B (zh) | 2020-08-04 |
Family
ID=59646253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710175351.XA Active CN107092532B (zh) | 2017-03-22 | 2017-03-22 | 一种远程调用方法及远程调用装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107092532B (zh) |
WO (1) | WO2018171287A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107092532B (zh) * | 2017-03-22 | 2020-08-04 | 武汉斗鱼网络科技有限公司 | 一种远程调用方法及远程调用装置 |
CN110380987A (zh) * | 2019-09-10 | 2019-10-25 | 浪潮云信息技术有限公司 | 一种处理调用服务的请求的方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104239156A (zh) * | 2013-06-21 | 2014-12-24 | 阿里巴巴集团控股有限公司 | 一种外部服务的调用方法及系统 |
CN106294073A (zh) * | 2016-08-15 | 2017-01-04 | 合智能科技(深圳)有限公司 | 服务调用方法及装置 |
CN106375150A (zh) * | 2016-08-31 | 2017-02-01 | 广州唯品会信息科技有限公司 | 服务器的断开控制方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999044131A1 (en) * | 1998-02-26 | 1999-09-02 | Sun Microsystems, Inc. | Method and apparatus for the suspension and continuation of remote processes |
CN101976892A (zh) * | 2010-10-27 | 2011-02-16 | 北京津宇嘉信科技开发有限公司 | 断路器的远程控制方法及应用该方法的系统 |
CN106254331A (zh) * | 2016-07-28 | 2016-12-21 | 努比亚技术有限公司 | 一种终端应用请求管理装置及方法、通信系统 |
CN106303059A (zh) * | 2016-08-24 | 2017-01-04 | 努比亚技术有限公司 | 电子设备及信息处理方法 |
CN106412016A (zh) * | 2016-08-31 | 2017-02-15 | 广州唯品会信息科技有限公司 | 服务器的连接控制方法及装置 |
CN107092532B (zh) * | 2017-03-22 | 2020-08-04 | 武汉斗鱼网络科技有限公司 | 一种远程调用方法及远程调用装置 |
-
2017
- 2017-03-22 CN CN201710175351.XA patent/CN107092532B/zh active Active
- 2017-12-29 WO PCT/CN2017/120176 patent/WO2018171287A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104239156A (zh) * | 2013-06-21 | 2014-12-24 | 阿里巴巴集团控股有限公司 | 一种外部服务的调用方法及系统 |
CN106294073A (zh) * | 2016-08-15 | 2017-01-04 | 合智能科技(深圳)有限公司 | 服务调用方法及装置 |
CN106375150A (zh) * | 2016-08-31 | 2017-02-01 | 广州唯品会信息科技有限公司 | 服务器的断开控制方法及装置 |
Non-Patent Citations (5)
Title |
---|
Hystrix使用与分析;hot66hot;《https://hot66hot.iteye.com/blog/2155036》;20141112;第11-12页 * |
Netflix Hystrix | 工作流程浅析 &&HystrixCircuitBreaker源码分析;sczyh30;《https://web.archive.org/web/20160623220629/https://www.sczyh30.com/posts/Microservice/netflix-hystrix-how-it-works-summary/》;20160623;第1-8页 * |
使用hystrix保护你的应用;kris.zhang;《http://kriszhang.com/hystrix_defend_your_webapp/》;20160730;第1-16页 * |
跳闸了啊! 服务容灾:熔断器简介;二胡槽子;《https://www.cnblogs.com/lazio10000/p/6027581.html》;20161103;第1-14页 * |
防雪崩利器:熔断器 Hystrix 的原理与使用;ybak;《https://segmentfault.com/a/1190000005988895》;20160717;第1-16页 * |
Also Published As
Publication number | Publication date |
---|---|
WO2018171287A1 (zh) | 2018-09-27 |
CN107092532A (zh) | 2017-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106776099B (zh) | 一种服务熔断隔离系统和方法 | |
CN106201844B (zh) | 一种日志收集方法及装置 | |
CN111884870B (zh) | 一种预测网络亚健康状态的方法、装置、终端及存储介质 | |
CN107092532B (zh) | 一种远程调用方法及远程调用装置 | |
CN110311990A (zh) | 一种可配置物联网数据采集系统及配置方法 | |
CN104767655A (zh) | 一种模拟结果检测方法及装置 | |
CN113873006A (zh) | 一种基于优先级的基线检测方法 | |
CN106559447A (zh) | Jslee容器的业务处理方法及系统 | |
CN111464513A (zh) | 数据检测方法、装置、服务器及存储介质 | |
CN108696523B (zh) | 一种通话服务的响应方法及设备 | |
CN104243192B (zh) | 故障处理方法及系统 | |
CN107797859A (zh) | 一种定时任务的调度方法及一种调度服务器 | |
CN102694668A (zh) | 语音质量监控方法及装置 | |
CN102195791A (zh) | 一种告警的分析方法、装置及系统 | |
CN113111374B (zh) | 一种端边云的工业微服务系统、数据交互方法及介质 | |
CN101252477B (zh) | 一种网络故障根源的确定方法及分析装置 | |
CN103093529B (zh) | 动态刷新数据的方法 | |
CN112969172A (zh) | 一种基于云手机的通讯流量控制方法 | |
CN105656855B (zh) | 资源访问的控制方法和装置 | |
CN106385413A (zh) | 入侵报文流的处理方法及装置 | |
US12009967B2 (en) | Communications methods and apparatus for minimizing and/or preventing message processing faults | |
CN105893845B (zh) | 一种数据处理方法及装置 | |
CN112311765B (zh) | 一种报文检测方法及装置 | |
EP3139536A1 (en) | Alarm reporting method and device | |
CN115391127A (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231219 Address after: 413099, Building 1306, Taiyi Yujiangcheng, Dadukou Community, Taohualun Office, Heshan District, Yiyang City, Hunan Province Patentee after: Hunan Juxin Digital Technology Co.,Ltd. Address before: 430000 Wuhan Donghu Development Zone, Wuhan, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd. |
|
TR01 | Transfer of patent right |