[发明专利]一种应对远程调用依赖的超时熔断方法和系统有效
申请号: | 201710255978.6 | 申请日: | 2017-04-18 |
公开(公告)号: | CN107171828B | 公开(公告)日: | 2020-04-10 |
发明(设计)人: | 张清锁 | 申请(专利权)人: | 北京思特奇信息技术股份有限公司 |
主分类号: | H04L12/24 | 分类号: | H04L12/24;H04L12/26;H04L29/08 |
代理公司: | 北京轻创知识产权代理有限公司 11212 | 代理人: | 杨立 |
地址: | 100086 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 应对 远程 调用 依赖 超时 熔断 方法 系统 | ||
技术领域
本发明涉及互联网技术领域,特别涉及一种应对远程调用依赖的超时熔断方法和系统。
背景技术
复杂分布式架构通常都具有很多依赖,比如HTTP、Netty、Dubbo等,如果一个应用不能对来自依赖的故障进行隔离,那该应用就处在被拖垮的风险中。在一个高流量高并发的系统中,某个单一的后端一旦发生延迟,将会在数秒内导致所有应用资源被耗尽。现有的处理方法主要是通过请求超时方式,通过超时时间进行阻断,但此种方式在大并情况下会导致系统资源耗尽。
发明内容
本发明提供了一种应对远程调用依赖的超时熔断方法和系统,解决了以上所述的技术问题。
本发明解决上述技术问题的技术方案如下:
一种应对远程调用依赖的超时熔断方法,包括以下步骤:
步骤1,获取服务调用请求,并判断所述服务调用请求对应的目标服务是否为熔断状态,若否,则执行步骤2,若是,则执行步骤3;
步骤2,调用所述目标服务,并将所述目标服务发送至服务使用模块,然后返回至步骤1;
步骤3,获取所述目标服务的已熔断时长,并判断所述已熔断时长是否达到预设恢复时间,若是,则进行预设的熔断恢复步骤,若否,则向服务使用模块返回异常响应信息。
本发明的有益效果是:本发明的方法借鉴了电路熔断的理念,如果某个目标服务调用慢或者有大量超时,此时,熔断该服务的调用,对于后续调用请求,不再继续调用目标服务,直接返回,从而快速释放资源;如果目标服务情况好转则恢复调用,避免在某一服务故障时,由此带来的服务调用连锁反应,引起大面积的系统瘫痪,同时在依赖的服务回复后系统能够通过算法自动恢复正常调用,解决了传统服务调用通过socket超时时间判断超时引起的系统瘫痪问题。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述预设的熔断恢复步骤具体为:从服务提供模块中调用预设次数的所述目标服务,并获取所述目标服务每次调用的请求响应时间,判断所有的所述请求响应时间是否均达到预设的响应时间阈值,若是,则将所述目标服务的状态恢复为未熔断状态,若否,则将所述目标服务的状态保持为已熔断状态。
采用上述进一步方案的有益效果是:本进一步技术方案中,所述请求响应时间为客户端发出请求到得到响应的整个时间,如果所述目标服务每次调用的请求响应时间均小于预设的响应时间阈值,则说明所述目标服务已恢复健康,因此可以将目标服务的状态恢复为未熔断状态,从而对所述目标服务进行正常调用。
进一步,所述服务调用请求为HTTP请求。
进一步,步骤1中,通过get或post方式接收所述HTTP请求。
采用上述进一步方案的有益效果是:本进一步技术方案中,HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统,而通过get或post方式发送HTTP请求和接收HTTP响应,只需传送请求方法和路径,因此简单快速。
进一步,步骤2中判断所述目标服务是否为熔断状态具体为:获取所述目标服务在预设时间范围的请求错误率,并判断所述请求错误率是否达到预设错误率阈值,若是,则判断所述目标服务为熔断状态,若否,则判断所述目标服务为未熔断状态。
采用上述进一步方案的有益效果是:本进一步技术方案中,所述请求错误率为目标服务的失败次数、超时次数和拒绝次数的和占整个请求次数的比例,通过请求错误率的实时值可以获知目标服务当前的状态,当请求错误率达到预设错误率阈值时,说明该目标服务再继续调用容易导致系统崩溃,此时将目标服务设定为熔断状态,从而可以直接返回异常响应信息,快速释放资源,维持系统的正常运行状态,当目标服务情况好转即可恢复调用。
进一步,步骤2中,将所述HTTP请求包装为CircuitCommand类,所述CircuitCommand类包括预设熔断算法,所述预设熔断算法包括所述预设时间范围和所述预设错误率阈值,通过所述CircuitCommand类判断所述目标服务是否为熔断状态。
采用上述进一步方案的有益效果是:本进一步技术方案中采用CircuitCommand类进行熔断算法判断,不仅算法的实现过程简单而且判断速度快、效率高。
为了解决本发明的技术问题,还提供了一种应对远程调用依赖的超时熔断系统,包括请求获取单元、第一判断单元、服务调用单元、第二判断单元、熔断恢复单元和异常信息生成单元,
所述请求获取单元用于获取服务调用请求;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京思特奇信息技术股份有限公司,未经北京思特奇信息技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710255978.6/2.html,转载请声明来源钻瓜专利网。