[发明专利]一种服务熔断隔离系统和方法有效
申请号: | 201710019216.6 | 申请日: | 2017-01-11 |
公开(公告)号: | CN106776099B | 公开(公告)日: | 2020-01-03 |
发明(设计)人: | 汤泉 | 申请(专利权)人: | 北京皮尔布莱尼软件有限公司 |
主分类号: | G06F11/07 | 分类号: | G06F11/07;G06F11/30 |
代理公司: | 11337 北京市盛峰律师事务所 | 代理人: | 梁艳 |
地址: | 100080 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 服务 熔断 隔离 系统 方法 | ||
本发明公开了一种服务熔断隔离系统和方法,涉及服务故障处理技术领域。通过实时统计系统监控状况,根据不同的降级策略对服务进行保护,同时通过熔断后异步探测服务健康状况、对服务进行自动健康恢复,以及熔断后返回预设回调结果,提高用户体验;解决了系统对不可控风险的依赖,提高了系统的容错能力和稳定性,实时发现依赖系统异常、方便问题的定位,加速异常解决。
技术领域
本发明涉及服务故障处理技术领域,尤其涉及一种服务熔断隔离系统和方法。
背景技术
在大型的软件系统中,如果调用的远程服务或者资源由于某种原因无法使用时,如果没有过载保护,就会导致请求的资源阻塞在服务器上等待从而耗尽系统或者服务器资源。很多时候刚开始可能只是系统出现了局部的、小规模的故障,然而由于种种原因,故障影响的范围越来越大,最终导致业务系统的全线崩溃。又称:雪崩效应。
目前,通常采用舱壁模式解决这种现象:即把资源请求进行分类,划分成一个个的舱壁。如果有一个船舱破了进水,只影响一个船舱。例如可以对不同类型的请求使用线程池来资源隔离,每种类型的请求互不影响,如果一种类型的请求线程资源耗尽,则对后续的该类型请求直接返回,不再调用后续资源。
舱壁模式存在以下缺点:
1)每个线程池的大小无法快速的估算出一个合理的大小。
2)由于大量使用线程池,每类请求执行涉及到排队、调度和上下文切换。造成cpu资源的浪费。
3)由于按类别划分使用不同的线程池,划分粒度还是有点大。例如:划分的一个线程池的请求由于某一个调用的异常,造成线程池耗尽。划分到这个线程池的其他请求由于线程池的耗尽也不能正常的提供服务,同样会出现小范围的雪崩效应。
4)由于粒度划分问题、报警策略不好设定且收到报警后不好定位到时线程池中那个具体的请求异常。
发明内容
本发明的目的在于提供一种服务熔断隔离系统和方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种服务熔断隔离系统,包括:
配置模块,用于熔断参数动态配置;
熔断请求判断模块,用于判断外部请求的服务是否处于熔断状态;
熔断恢复模块,用于异步探测熔断服务是否达到熔断请求的健康阀值,如果是,则对所述熔断服务进行健康恢复;
熔断报警模块,用于发生服务熔断告警提示,并修改内存中的该服务的熔断状态;
熔断健康统计模块,用于根据配置的熔断策略判断是否达到熔断阀值及服务状态报表展示,所述服务状态包括:吞吐、异常比和/或监控状态。
优选地,所述熔断请求判断模块,用于判断所述请求的服务是否处于熔断状态,具体为,用无锁Map保存统计数据,所述统计数据以所述请求的URLPath作为key,以原子类类型的错误请求次数、总请求次数、开始时间、是否离线为属性的统计类作为value,在所述统计数据中,若固定时间内的错误请求比率或错误请求次数达到预设的阀值,则判定所述请求的服务处于熔断状态。
一种服务熔断隔离方法,包括如下步骤:
S1,服务启动,配置服务加载熔断策略参数,默认为使用本地配置;
S2,外部请求经过网关聚合层到达熔断请求判断模块;
S3,所述熔断请求判断模块判断所述请求的服务是否处于熔断状态,如果是,则执行S4-S5,否则,执行S6-S7;
S4,调用熔断回调函数,并返回回调结果;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京皮尔布莱尼软件有限公司,未经北京皮尔布莱尼软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710019216.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:触摸屏保护方法及移动终端
- 下一篇:一种存储器数据分层校验方法