控制远程服务调用频率的方法和装置制造方法及图纸

技术编号:14152334 阅读:89 留言:0更新日期:2016-12-11 15:38
本发明专利技术公开了一种控制远程服务调用频率的方法,包括:确定每次发起调用的预期时长;统计每次发起调用的实际时长;判断所述实际时长是否小于所述预期时长;当所述实际时长小于所述预期时长时,进入休眠状态,所述休眠状态的持续时长在所述预期时长减去所述实际时长的差的最大偏差范围之内。发起调用的实际时长小于预期时长时,通过休眠来弥补实际时长与预期时长的时间差,暂缓继续发起下一次调用,从而达到精确控制调用频率的效果。

【技术实现步骤摘要】

本专利技术属于计算机
,具体地说,涉及一种控制远程服务调用频率的方法和装置
技术介绍
在系统交互的场景中,某个下层系统由于自身的处理性能限制,会给上层系统一个每秒调用量的阈值参考max_freq,如果上层系统对下层系统服务的调用总是大于这个频率,就会造成下层系统的吞吐压力过大、响应周期变长,严重时会导致系统崩溃。因此,上层系统需要控制自己的调用频率尽量不超过这个阈值。现有技术中主要采取两种方法:一种是采用“一刀切”式的限流设置,系统设置一个每秒限流的数量max_limit,这个值可设置为等于或者稍微大于max_freq。然后每秒对下层系统的调用量进行统计,当小于等于它时都能正常进行调用,超出它时就强制不进行调用而直接返回失败。但这种方法的缺点是容易导致对系统之间的调用量利用不均衡,任务刚启动时出现过多的调用量容易导致失败,后期调用量又变得稀疏。例如图1所示的调用量曲线,限流上限设置为100tps,深色曲线为实际的调用量曲线,浅色曲线是上层系统计划要执行的调用量曲线,可以看出刚开始时调用量会过高导致部分调用不会成功,而后期调用量过低导致对调用量的利用率过低。另一种方法是调整线程数量,通过对线程数的增加或减少来控制调用量的增大和减小。但这种方法的缺点一是不精确,调用量只可按线程的比例控制,比如从10线程减少为9线程,就会把调用量减少1/10,而无法控制到1/100甚至更细的粒度;二是改造比较复杂,多一个线程和少一个线程都会对调用策略产生很大的改造成本。总之,上述对上层
系统调用频率的控制方法过于简单粗犷,系统之间的调用量利用率也较低。
技术实现思路
有鉴于此,本申请提供了一种控制远程服务调用频率的方法和装置,解决了上层系统不能精确的自行调整调用频率的技术问题。为了解决上述技术问题,本申请公开了一种控制远程服务调用频率的方法,包括:确定每次发起调用的预期时长;统计每次发起调用的实际时长;判断所述实际时长是否小于所述预期时长;当所述实际时长小于所述预期时长时,进入休眠状态,所述休眠状态的持续时长在所述预期时长减去所述实际时长的差的最大偏差范围之内。所述确定每次发起调用的预期时长,包括:根据发起调用的线程数量和被调用系统的最大调用频率,确定所述预期时长。所述预期时长expect_time=1÷max_freq×thread_num;其中,max_freq代表所述被调用系统的最大调用频率,thread_num代表所述发起调用的线程数量。所述统计每次发起调用的实际时长,包括:记录开始处理每个事务数据时的第一时刻和每次完成调用时的第二时刻;将所述第二时刻减去所述第一时刻的差作为所述实际时长。所述方法还包括:当所述休眠状态结束时,统计下一次发起调用的实际时长。所述方法还包括:当所述实际时长大于或等于所述预期时长时,统计下一次发起调用的实际时长。所述方法还包括:每隔预设周期从数据库中获取事务数据。所述每隔预设周期从数据库中获取事务数据,包括:各个线程每次获取事务数据的数量data_num=max_freq×interval÷thread_num;其中,max_freq代表被调用系统的最大调用频率,thread_num代表发起调用的线程数量,interval代表所述预设周期。当所述休眠状态结束时,或者当所述实际时长大于或等于所述预期时长
时,所述方法还包括:判断获取的事务数据是否全部处理完毕;当所述获取的事务数据未全部处理完毕时,统计下一次发起调用的实际时长。为了解决上述技术问题,本申请还公开了一种控制远程服务调用频率的装置,包括:确定模块,用于确定每次发起调用的预期时长;统计模块,用于统计每次发起调用的实际时长;第一判断模块,用于判断所述实际时长是否小于所述预期时长;休眠模块,用于当所述实际时长小于所述预期时长时,进入休眠状态,所述休眠状态的持续时长在所述预期时长减去所述实际时长的差的最大偏差范围之内。所述确定模块包括:确定子模块,用于根据发起调用的线程数量和被调用系统的最大调用频率,确定所述预期时长。所述预期时长expect_time=1÷max_freq×thread_num;其中,max_freq代表被调用系统的最大调用频率,thread_num代表发起调用的线程数量。所述统计模块包括:记录子模块,用于记录开始处理每个事务数据时的第一时刻和每次完成调用时的第二时刻;处理子模块,用于将所述第二时刻减去所述第一时刻的差作为所述实际时长。所述统计模块,进一步用于当所述休眠状态结束时,统计下一次发起调用的实际时长。所述统计模块,进一步用于当所述实际时长大于或等于所述预期时长时,统计下一次发起调用的实际时长。所述装置还包括:获取模块,用于每隔预设周期从数据库中获取事务数据。所述获取模块各个线程每次获取事务数据的数量data_num=max_freq×interval÷thread_num;其中,其中,max_freq代表被调用系统的最大调用频率,thread_num代表发起调用的线程数量,interval代表所述预设周期。所述装置还包括:第二判断模块,用于当所述休眠状态结束时,或者当所述实际时长大于或等于所述预期时长时,判断获取的事务数据是否全部处理完毕;所述统计模块,进一步用于当所述获取的事务数据未全部处理完毕
时,统计下一次发起调用的实际时长。与现有技术相比,本申请可以获得包括以下技术效果:发起调用的实际时长小于预期时长时,通过休眠来弥补实际时长与预期时长的时间差,暂缓继续发起下一次调用,从而达到精确控制调用频率的效果。当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是现有技术中采用限流模式进行控制时的调用量曲线示意图;图2是本申请实施例提供的一种控制远程服务调用频率的方法的流程示意图。图3是采用本申请实施例提供的控制远程服务调用频率的方法时的调用量曲线示意图;图4是本申请实施例的应用场景示意图;图5是本申请实施例提供的一种控制远程服务调用频率的方法的流程示意图。图6是本申请实施例提供的一种控制远程服务调用频率的方法的流程示意图。图7是本申请实施例提供的一种控制远程服务调用频率的装置的结构示意图。具体实施方式以下将配合附图及实施例来详细说明本专利技术的实施方式,藉此对本专利技术如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解
并据以实施。图2是本申请实施例提供的一种控制远程服务调用频率的方法,适用于服务器系统,该方法包括以下步骤。在步骤S10中,确定每次发起调用的预期时长。服务器系统根据被调用系统的最大调用频率max_freq,确定每次发起调用的预期时长。该预期时长为一个固定值,代表向该被调用系统发起的两次调用之间的时间间隔。在步骤S11中,统计每次发起调用的实际时长。该实际时长为每次发起调用的过程所实际耗费的时长。在步骤S12中,判断实际时长是否小于预期时长;由于该预期时长是根据被调用系统的最大调用频率确定的,因此如果每次调用的实际时长都小于该预期时长,则实际的调用频率会高本文档来自技高网
...
控制远程服务调用频率的方法和装置

【技术保护点】
一种控制远程服务调用频率的方法,其特征在于,包括:确定每次发起调用的预期时长;统计每次发起调用的实际时长;判断所述实际时长是否小于所述预期时长;当所述实际时长小于所述预期时长时,进入休眠状态,所述休眠状态的持续时长在所述预期时长减去所述实际时长的差的最大偏差范围之内。

【技术特征摘要】
1.一种控制远程服务调用频率的方法,其特征在于,包括:确定每次发起调用的预期时长;统计每次发起调用的实际时长;判断所述实际时长是否小于所述预期时长;当所述实际时长小于所述预期时长时,进入休眠状态,所述休眠状态的持续时长在所述预期时长减去所述实际时长的差的最大偏差范围之内。2.如权利要求1所述的方法,其特征在于,所述确定每次发起调用的预期时长,包括:根据发起调用的线程数量和被调用系统的最大调用频率,确定所述预期时长。3.如权利要求2所述的方法,其特征在于,所述预期时长expect_time=1÷max_freq×thread_num;其中,max_freq代表所述被调用系统的最大调用频率,thread_num代表所述发起调用的线程数量。4.如权利要求1所述的方法,其特征在于,所述统计每次发起调用的实际时长,包括:记录开始处理每个事务数据时的第一时刻和每次完成调用时的第二时刻;将所述第二时刻减去所述第一时刻的差作为所述实际时长。5.如权利要求1所述的方法,其特征在于,所述方法还包括:当所述休眠状态结束时,统计下一次发起调用的实际时长。6.如权利要求1所述的方法,其特征在于,所述方法还包括:当所述实际时长大于或等于所述预期时长时,统计下一次发起调用的实际时长。7.如权利要求1所述的方法,其特征在于,所述方法还包括:每隔预设周期从数据库中获取事务数据。8.如权利要求7所述的方法,其特征在于,所述每隔预设周期从数据库中获取事务数据,包括:各个线程每次获取事务数据的数量data_num=max_freq×interval÷thread_num;其中,max_freq代表被调用系统的最大调用频率,thread_num代表发起调用的线程数量,interval代表所述预设周期。9.如权利要求7所述的方法,其特征在于,当所述休眠状态结束时,或者当所述实际时长大于或等于所述预期时长时,所述方法还包括:判断获取的事务数据是否全部处理完毕;当所述获取的事务数据未全部处理完毕时,统计下一次发起调用的实际时长。10.一种控制远程服务调用频率的装置,其特征在于,包括:确定模块,用于确定...

【专利技术属性】
技术研发人员:唐寅
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1