发明内容
本申请提出一种远程调用方法,该方法包括:
判断远程调用参数是否命中预设的调用参数管控名单;
当所述远程调用参数命中所述管控名单时,基于所述管控名单预配置的管控策略确定所述远程调用参数是否满足所述目标进程的调用条件;
当所述远程调用参数满足所述目标进程的调用条件时,将该远程调用参数传递至所述目标进程,发起针对所述目标进程的远程调用。
可选的,所述判断远程调用参数是否命中预设的调用参数管控名单之前,所述方法还包括:
统计所述目标进程的各远程调用参数在预设时间周期内的错误调用次数;
判断统计出的所述各远程调用参数的错误调用次数是否达到预设阈值;
将所述各远程调用参数中错误调用次数达到所述预设阈值的远程调用参数保存至所述调用参数管控名单。
可选的,所述方法还包括:
基于所述预设时间周期定时清空所述调用参数管控名单。
可选的,所述基于所述管控名单预配置的管控策略确定所述远程调用参数是否满足所述目标进程的调用条件包括:
为所述远程调用参数计算判决评分;
判断计算出的所述判决评分是否大于所述管控名单预配置的管控阈值;
当所述判决评分大于所述管控阈值时,确定所述远程调用参数满足所述目标进程的调用条件;
当所述判决评分小于或者等于所述管控阈值时,确定所述远程调用参数不满足所述目标进程的调用条件。
可选的,所述为所述远程调用参数计算判决评分包括:
基于预设的随机算法为所述远程调用参数随机分配判决评分;或
计算所述远程调用参数的远程调用成功率,将计算出的所述远程调用成功率设置为所述远程调用参数的判决评分;或
计算所述远程调用参数的远程调用成功率,为计算出的所述远程调用成功率分配对应的判决评分;其中分配的该判决评分与所述远程调用成功率成反比。
可选的,所述方法还包括:
当所述远程调用参数未命中所述管控名单时,将该远程调用参数传递至所述目标进程,发起针对所述目标进程的远程调用;
当所述远程调用参数不满足所述目标进程的调用条件时,终止针对所述目标进程的本次远程调用。
本申请还提出一种远程调用装置,该装置包括:
第一判断模块,用于判断远程调用参数是否命中预设的调用参数管控名单;
确定模块,用于在所述远程调用参数命中所述管控名单时,基于所述管控名单预配置的管控策略确定所述远程调用参数是否满足所述目标进程的调用条件;
调用模块,用于在所述远程调用参数满足所述目标进程的调用条件时,将该远程调用参数传递至所述目标进程,发起针对所述目标进程的远程调用
可选的,所述装置还包括:
统计模块,用于统计所述目标进程的各远程调用参数在预设时间周期内的错误调用次数;
第二判断模块,用于判断统计出的所述各远程调用参数的错误调用次数是否达到预设阈值;
保存模块,用于将所述各远程调用参数中错误调用次数达到所述预设阈值的远程调用参数保存至所述调用参数管控名单。
可选的,所述装置还包括:
清空模块,用于基于所述预设时间周期定时清空所述调用参数管控名单。
可选的,所述确定模块具体用于:
为所述远程调用参数计算判决评分;
判断计算出的所述判决评分是否大于所述管控名单预配置的管控阈值;
当所述判决评分大于所述管控阈值时,确定所述远程调用参数满足所述目标进程的调用条件;
当所述判决评分小于或者等于所述管控阈值时,确定所述远程调用参数不满足所述目标进程的调用条件。
可选的,所述确定模块进一步用于:
基于预设的随机算法为所述远程调用参数随机分配判决评分;或
计算所述远程调用参数的远程调用成功率,将计算出的所述远程调用成功率设置为所述远程调用参数的判决评分;或
计算所述远程调用参数的远程调用成功率,为计算出的所述远程调用成功率分配对应的判决评分;其中分配的该判决评分与所述远程调用成功率成反比。
可选的,所述调用模块进一步用于:
当所述远程调用参数未命中所述管控名单时,将该远程调用参数传递至所述目标进程,发起针对所述目标进程的远程调用;
当所述远程调用参数不满足所述目标进程的调用条件时,终止针对所述目标进程的本次远程调用。
本申请中,通过在基于远程调用参数发起针对目标进程的远程调用时,判断该远程调用参数是否命中调用参数管控名单;当该远程调用参数命中所述管控名单时,则基于管控名单预配置的管控策略确定所述远程调用参数是否满足所述目标进程的调用条件;如果该远程调用参数满足目标进程的调用条件,则将该远程调用参数传递至目标进程,以发起针对目标进程的远程调用,实现了系统可以基于预配置的管控策略对管控名单中的远程调用参数进行智能管控,而不需要人工干预。
具体实施方式
请参见图1,图1为本实施例示出的一种相关技术中执行远程调用的示意图。
如图1所示,系统A为远程调用的发起方,系统B为远程调用的被调用方。系统B可以面向系统A提供服务进程,供系统A进行远程调用。
系统A在远程调用系统A提供的服务进程时,可以通过向系统B中与该服务进程对应的调用接口发送远程调用请求,来传递远程调用参数(通常在远程调用请求中携带远程调用参数)。
当该服务进程通过调用接口,接收到系统A发出的调用请求时,可以解析该调用请求,获取该调用请求中携带的远程调用参数,然后通过执行该服务进程在系统B内部针对该远程调用参数,并在处理完成后向系统A返回对应的调用结果。如果本次远程调用出现异常,系统A无法接收到系统B返回的调用结果时,会导致系统A出现调用错误。
当系统A出现调用错误时,如果继续执行调用,可能会造成调用发起方的系统资源的无谓消耗,而且在上述远程调用参数的调用量非常大的情况下,甚至可能导致系统A的资源耗尽。
针对这种情况,通常需要人工干预,关闭该被服务进程的所有调用服务,来对系统A发起的远程调用进行管控。当关闭该服务进程的所有调用服务后,会导致系统A发起的所有调用服务均中断。
然而,在实际应用中,上述远程调用参数的本次调用失败,很可能是由于系统A的服务不稳定,部分调用请求丢包而导致调用参数传递失败造成的,而上述远程调用参数以外的其它调用参数当前可能仍然能够正常调用上述服务进程。
因此,在这种情况下,如果通过人工干预将上述服务进程的所有调用服务均关闭,会导致所有的调用参数均无法得到正确的调用结果,从而造成那些当前仍然能够正常调用上述服务进程的调用参数,也无法调用该服务进程。
可见,通过人工干预对远程调用进行管控,不仅操作较复杂,处理周期较长,而且无法针对上述服务进程的部分调用参数(比如远程调用失败的调用参数)进行管控。
有鉴于此,本申请提出一种远程调用方法,通过在基于远程调用参数发起针对目标进程的远程调用时,判断该远程调用参数是否命中调用参数管控名单;当该远程调用参数命中所述管控名单时,则基于管控名单预配置的管控策略确定所述远程调用参数是否满足所述目标进程的调用条件;如果该远程调用参数满足目标进程的调用条件,则将该远程调用参数传递至目标进程,发起针对目标进程的远程调用,实现了系统可以基于预配置的管控策略对管控名单中的远程调用参数进行智能管控,而不需要人工干预。
而且,对于未命中管控名单的远程调用参数来说,可以继续对目标进程执行正常的远程调用,从而可以只针对由管控名单中的远程调用参数进行管控,实现了可以针对目标进程的部分调用参数进行管控。
下面通过具体实施例并结合具体的应用场景对本申请进行描述。
请参考图2,图2是本申请一实施例提供的一种远程调用方法,应用于远程调用终端,所述方法执行以下步骤:
步骤201,判断远程调用参数是否命中预设的调用参数管控名单;
步骤302,当所述远程调用参数命中所述管控名单时,基于所述管控名单预配置的管控策略确定所述远程调用参数是否满足所述目标进程的调用条件;
步骤203,当所述远程调用参数满足所述目标进程的调用条件时,将该远程调用参数传递至所述目标进程,发起针对所述目标进程的远程调用。
上述远程调用终端,可以包括用于向服务端提供的目标进程发起远程调用的终端;例如,上述远程调用终端可以包括用户的移动终端、PC终端等。
上述服务端,可以包括面向上述远程调用终端提供目标进程的服务器、服务器集群或者基于服务器集群构建的云平台。
上述目标进程,即为上述服务端提供的可用于进行远程调用的服务进程。
其中,上述目标进程,可以由服务端提供一调用接口(比如API接口),该调用接口可以由服务端预先定义若干类型的远程调用参数,上述远程调用终端可以通过向该目标进程的调用接口发送调用请求,向该目标进程传递远程调用参数,来远程调用该目标进程。
在本例中,远程调用终端可以在本地预先为上述目标进程创建一个对应的调用参数管控名单,该管控名单用于保存需要进行管控的上述目标进程的部分远程调用参数。
其中,该管控名单还可以由用户预配置对应的管控策略,当用户通过远程调用终端发起针对目标进程的远程调用时,远程调用终端可以基于预配置的该管控策略,针对命中该管控名单的远程调用参数进行管控。
当然,在实际应用中,服务端可能面向远程调用终端提供多种不同的服务进程,因此在这种情况下,服务端可以针对每一种服务进程分别预先设定一个对应的调用参数管控名单。
其中,上述管控名单中保存的远程调用参数,可以包括在向上述目标进程发起远程调用时,产生过错误调用的远程调用参数。
例如,在示出的一种实施方式中,服务端可以将目标进程的各远程调用参数中,在预设时间周期内错误调用次数达到预设阈值的远程调用参数保存到上述管控名单中。
通过这种方式,用户在发起针对目标进程的远程调用时,远程调用终端可以只针对那些在针对该目标进程进行远程调用时,可以只针对上述管控名单中产生过错误调用的部分调用参数进行管控,而对于未命中该管控名单的远程调用参数可以继续执行正常的远程调用。
请参见图3,图3为本实施例示出的一种为目标进程创建调用参数管控名单的处理流程,包括如下步骤:
步骤301,统计所述目标进程的各远程调用参数在预设时间周期内的错误调用次数;
在本例中,远程调用终端在统计该目标进程的各远程调用参数,在预设时间周期内的错误调用次数时,可以在本地预置一计数器,当用户通过远程调用参数发起针对目标进程的远程调用后,如果远程调用终端未能接收到服务端返回的针对本次调用的调用结果,此时远程调用发生错误,远程调用终端可以通过计数器将该远程调用参数的错误调用次数加一。
当在上述预设时间周期内,通过该远程调用参数发起的针对该目标进程的远程调用再次发生错误时,远程调用终端可以按照相同的方式,通过计数器对该远程调用参数的错误调用次数再次加一,以此类推,直到最终统计出该远程调用参数在上述预设时间周期内远程调用的错误调用次数。
其中,上述预设时间周期,可以是由用户设定的一周期性的时间范围;例如假设该时间范围为30分钟,那么服务端可以将30分钟作为统计周期,周期性的统计上述目标进程的各远程调用参数在该时间范围内的错误调用次数的统计。
步骤302,判断统计出的所述各远程调用参数的错误调用次数是否达到预设阈值;
步骤303,将所述各远程调用参数中错误调用次数达到所述预设阈值的远程调用参数保存至所述调用参数管控名单。
在本例中,当远程调用终端统计出各远程调用参数在预设时间周期内的错误调用次数时,可以将统计出的各远程调用参数的错误调用次数与预设阈值分别进行比较,以判断统计出的错误调用次数是否达到该预设阈值。其中,上述预设阈值可以由用户基于实际的需求进行设定。
对于统计出的错误调用次数达到预设阈值的远程调用参数,可以由远程调用终端将其作为需要进行管控的远程调用参数,保存至上述管控名单中。当然,对于统计出的错误调用次数小于或者等于上述预设阈值的远程调用参数,此时可以不做特别处理。
步骤304,基于所述预设时间周期定时清空所述调用参数管控名单。
在本例中,由于导致错误调用的因素通常并不恒定,当某一远程调用参数调用错误的次数达到预设阈值,被保存至管控名单以后,如果导致错误调用的因素发生变化,该远程调用参数针对目标进程的远程调用重新恢复正常,那么,在这种情况下,将该远程调用参数仍然被保存在管控名单中,就会造成对能够正常调用目标进程的远程调用参数执行错误的管控。
例如,如果某一远程调用参数发生调用错误,是由于当前系统的服务不稳定,调用请求发生丢包导致的,当该远程调用参数调用错误的次数达到预设阈值,被保存至管控名单以后,如果经过一段时间,当前系统的服务端恢复稳定,此时该远程调用参数可能已经能够正常的调用该目标进程,因此在这种情况下,该远程调用参数仍然作为被管控的远程调用参数保存在管控名单中,就可能会造成对该远程调用参数执行错误的管控。
在本例中,为了避免造成错误管控的情况发生,对于创建的管控名单,可以由远程调用终端基于上述预设时间周期进行定时清空。当清空完成后,在下一个预设周期内,远程调用终端可以重新对各远程调用参数在该周期内的调用次数进行统计,将统计出的错误调用次数达到预设阈值的远程调用参数,保存至管控名单中,来重新创建管控名单。
可见,通过这种方式,在系统服务不稳定,部分调用请求丢包导致调用错误的应用场景中,由于远程调用终端引入了对管控名单进行定时更新的机制,可以对管控名单中的远程调用参数进行动态维护,因此对于在预设时间周期内错误调用次数达到预设阈值的远程调用参数,可以放入管控名单中进行智能管控。当系统服务恢复稳定,该远程调用参数在预设时间周期内错误调用次数下降至预设阈值以下时,该远程调用参数将不再作为需要被管控的调用参数放入管控名单,而是可以针对目标进程执行正常的远程调用,从而可以避免由于导致错误调用的因素发生变化,而造成的对可以正常调用目标进程的远程调用参数进行错误管控的问题。
在本例中,当远程调用终端为上述目标进程创建了对应的调用参数管控名单后,当用户再次发起针对目标进程的远程调用时,此时远程调用终端可以解析本次远程调用的调用请求,获取本次远程调用所使用的远程调用参数,然后将该远程调用参数与该管控名单中保存的远程调用参数分别进行匹配,来判断本次远程调用所使用的远程调用参数是否命中该管控名单。
一方面,当本次远程调用所使用的远程调用参数,与该管控名单中的远程调用参数均不匹配时,该远程调用参数未命中该管控名单,此时远程调用终端可以将该远程调用参数传递至目标进程,针对该目标进程执行正常的远程调用。
另一方面,当本次远程调用所使用的远程调用参数,与该管控名单中的任一远程调用参数匹配时,此时该远程调用参数命中该管控名单,远程调用终端可以基于用户为该管控名单预配置的管控策略,针对该远程调用参数进行智能管控,以确定该远程调用参数是否满足该目标进程的调用条件。
其中,上述管控策略,可以由用户根据实际的需求进行预配置。
在示出的一种实施方式中,上述管控策略的执行逻辑可以包括:
为该远程调用参数计算判决评分,并通过判断计算出的判决评分是否大于管控名单预配置的管控阈值,来确定所述远程调用参数是否满足所述目标进程的调用条件。
请参见图4,图4为本实施例示出的一种基于预配置的管控策略针对远程调用参数进行智能管控的处理流程,包括如下步骤:
步骤401,为所述远程调用参数计算判决评分;
在本例中,远程调用终端为上述远程调用参数计算判决评分,可以通过以下方式来实现:
在一种方式中,远程调用终端可以通过预设的随机算法,为该远程调用终端随机分配一个判决评分。通过这种方式,具有更好的灵活性,即使通过同一个远程调用参数针对目标进程进行多次调用,让然可能会随机分配出不同的判决评分。
在另一种方式中,远程调用终端可以计算该远程调用参数的远程调用成功率,然后将计算出的远程调用成功率设置为该远程调用参数的判决评分。其中,远程调用成功率时,可以将该远程调用参数的调用成功的次数处于远程调用总次数来计算得到。
或者,远程调用终端计算出该远程调用参数的远程调用成功率后,可以为计算出的该远程调用成功率分配一个对应的判决评分,其中为计算出的该远程调用成功率分配的判决评分可以跟该远程调用成功率成反比,即远程调用成功率越高,那么分配的判决评分越低,反之,远程调用成功率越低,分配的判决评分越高,从而可以优先的为远程调用成功率高的远程调用参数分配一个较低的判决评分。
通过这种方式,可以严格按照该远程调用参数的调用成功率,来设置判决评分,从而后续在针对该判决评分来确定该远程调用参数是否满足目标进程的调用条件时,可以将该远程调用参数的调用成功率作为参考,从而使得调用成功率更高的远程调用参数,更容易满足目标进程的调用条件。
步骤402,判断计算出的所述判决评分是否大于所述管控名单预配置的管控阈值;
步骤403,当所述判决评分大于所述管控阈值时,确定所述远程调用参数满足所述目标进程的调用条件;当所述判决评分小于或者等于所述管控阈值时,确定所述远程调用参数不满足所述目标进程的调用条件。
在本例中,用户还可以为管控名单预配置一个对应的管控阈值。其中,该管控阈值可以由用户根据实际需求进行设定和修改。当远程调用终端计算出该远程调用参数的判决评分后,可以将该判决评分与该管控阈值进行比较,以判断该判决评分是否大于该管控阈值。
当该判决评分大于管控阈值时,远程调用终端可以确定该远程调用参数满足该目标进程的调用条件。反之,当该判决评分小于或者等于管控阈值时,远程调用终端可以确定该远程调用参数不满足该目标进程的调用条件。
其中,需要指出的是,上述管控阈值可以用于表征针对该管控名单中远程调用参数的管控比例。
例如,在实现时,判决评分和该管控阈值都可以是一个0~100范围内的具体数值,用户可以根据实际的需求对管控阈值进行修改,当用户希望禁止该管控名单中所有远程调用参数针对目标进程的远程调用时,可以将该管控阈值设置为100,此时该管控阈值为最大,计算出的所有远程调用参数的判决评分均小于该管控阈值,在这种情况下,可以默认管控名单中的所有远程调用参数均不满足目标进程的调用条件。反之,当用户希望放行该管控名单中所有远程调用参数针对目标进程的远程调用时,可以将该管控阈值设置为0,此时该管控阈值为最小,计算出的所有远程调用参数的判决评分均大于该管控阈值,在这种情况下,可以默认管控名单中的所有远程调用参数均满足目标进程的调用条件。
在本例中,当远程调用终端基于用户为管控名单预配置的管控策略,针对该远程调用参数进行智能管控后,确定出该远程调用参数满足该目标进程的调用条件时,此时可以将该远程调用参数传递至目标进程,发起针对目标进程的远程调用。当远程调用终端接收到服务端返回的调用结果后,此时本次调用执行完毕。当远程调用终端未接收到服务端返回的调用结果,此时本次调用发生错误,远程调用终端可以更新该远程调用参数的错误调用次数,当该远程调用参数的错误调用次数达到预设阈值时,将该远程调用保存至管控名单中,详细过程不再赘述。
当然,如果确定出该远程调用参数不满足该目标进程的调用条件时,远程调用终端可以直接终止针对目标进程的本次远程调用。在这种情况下,远程调用终端可以模拟一个远程调用失败的结果向用户输出(比如通过用户界面向用户输出一个提示消息),以提示本次调用失败。
在以上实施例中,通过在基于远程调用参数发起针对目标进程的远程调用时,判断该远程调用参数是否命中调用参数管控名单;当该远程调用参数命中所述管控名单时,则基于管控名单预配置的管控策略确定所述远程调用参数是否满足所述目标进程的调用条件;如果该远程调用参数满足目标进程的调用条件,则将该远程调用参数传递至目标进程,发起针对目标进程的远程调用,实现了系统可以基于预配置的管控策略对管控名单中的远程调用参数进行智能管控,而不需要人工干预。
而且,对于未命中管控名单的远程调用参数来说,可以继续对目标进程执行正常的远程调用,从而可以只针对由管控名单中的远程调用参数进行管控,实现了可以针对目标进程的部分调用参数进行管控。
与上述方法实施例相对应,本申请还提供了装置的实施例。
请参见图5,本申请提出一种远程调用装置50,应用于远程调用终端;其中,请参见图6,作为承载所述远程调用装置50的远程调用终端所涉及的硬件架构中,通常包括CPU、内存、非易失性存储器、网络接口以及内部总线等;以软件实现为例,所述远程调用装置50通常可以理解为加载在内存中的计算机程序,通过CPU运行之后形成的软硬件相结合的逻辑装置,所述装置50包括:
第一判断模块501,用于判断远程调用参数是否命中预设的调用参数管控名单;
确定模块502,用于在所述远程调用参数命中所述管控名单时,基于所述管控名单预配置的管控策略确定所述远程调用参数是否满足所述目标进程的调用条件;
调用模块503,用于在所述远程调用参数满足所述目标进程的调用条件时,将该远程调用参数传递至所述目标进程,发起针对所述目标进程的远程调用
在本例中,所述装置50还可以包括:
统计模块504,用于统计所述目标进程的各远程调用参数在预设时间周期内的错误调用次数;
第二判断模块505,用于判断统计出的所述各远程调用参数的错误调用次数是否达到预设阈值;
保存模块506,用于将所述各远程调用参数中错误调用次数达到所述预设阈值的远程调用参数保存至所述调用参数管控名单。
在本例中,所述装置50还可以包括:
清空模块507,用于基于所述预设时间周期定时清空所述调用参数管控名单。
在本例中,所述确定模块502具体用于:
为所述远程调用参数计算判决评分;
判断计算出的所述判决评分是否大于所述管控名单预配置的管控阈值;
当所述判决评分大于所述管控阈值时,确定所述远程调用参数满足所述目标进程的调用条件;
当所述判决评分小于或者等于所述管控阈值时,确定所述远程调用参数不满足所述目标进程的调用条件。
在本例中,所述确定模块502进一步用于:
基于预设的随机算法为所述远程调用参数随机分配判决评分;或
计算所述远程调用参数的远程调用成功率,将计算出的所述远程调用成功率设置为所述远程调用参数的判决评分;或
计算所述远程调用参数的远程调用成功率,为计算出的所述远程调用成功率分配对应的判决评分;其中分配的该判决评分与所述远程调用成功率成反比。
在本例中,所述调用模块503进一步用于:
当所述远程调用参数未命中所述管控名单时,将该远程调用参数传递至所述目标进程,发起针对所述目标进程的远程调用;
当所述远程调用参数不满足所述目标进程的调用条件时,终止针对所述目标进程的本次远程调用。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。