首页 > 其他分享 >springcloud -hystrix服务熔断机制

springcloud -hystrix服务熔断机制

时间:2023-07-07 10:35:00浏览次数:40  
标签:逻辑 String hystrix springcloud 熔断 paymentCircuitBreaker id

服务熔断:就是在错误率达到规定百分比的时候会开启,然后隔断消费者和服务端,在不断访问提升正确率后将其关闭,回复调用链路 service hystrix-payment-order8001 增加方法

  
 //=========服务熔断
 @HystrixCommand(fallbackMethod = "paymentCircuitBreaker_fallback",commandProperties = {
     // 表示开启服务熔断
         @HystrixProperty(name = "circuitBreaker.enabled",value = "true"),
     // 表示请求次数
         @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold",value = "10"), 
     // 表示失败的时间范围 比如10秒内10此失败
         @HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds",value = "10000"),
     // 开启服务熔断的阈值百分比
         @HystrixProperty(name = "circuitBreaker.errorThresholdPercentage",value = "60"),
 })
 public String paymentCircuitBreaker(@PathVariable("id") Integer id)
 {
     if(id < 0)
     {
         throw new RuntimeException("******id 不能负数");
     }
     String serialNumber = IdUtil.simpleUUID();
 ​
     return Thread.currentThread().getName()+"\t"+"调用成功,流水号: " + serialNumber;
 }
 public String paymentCircuitBreaker_fallback(@PathVariable("id") Integer id)
 {
     return "id 不能负数,请稍后再试,/(ㄒoㄒ)/~~   id: " +id;
 }
 ​

增加controller测试

 @GetMapping("/payment/circuit/{id}")
 public String paymentCircuitBreaker(@PathVariable("id") Integer id)
 {
     String result = paymentService.paymentCircuitBreaker(id);
     log.info("****result: "+result);
     return result;
 }

熔断打开: 请求不再进行调用当前服务,内部设置时钟一般为MTTR(平均故障处理时间),当打开时长达到所设时钟则进入半熔断状态

熔断关闭 熔断关闭不会对服务进行熔断

熔断半开 部分请求根据规则调用当前服务,如果请求成功且符合规则则认为当前服务恢复正常,关闭熔断

 

 

 
1:再有请求调用的时候,将不会调用主逻辑,而是直接调用降级fallback。通过断路器,实现了自动地发现错误并将降级逻辑切换为主逻辑,减少响应延迟的效果。
 
2:原来的主逻辑要如何恢复呢?
对于这一问题,hystrix也为我们实现了自动恢复功能。
当断路器打开,对主逻辑进行熔断之后,hystrix会启动一个休眠时间窗,在这个时间窗内,降级逻辑是临时的成为主逻辑,
当休眠时间窗到期,断路器将进入半开状态,释放一次请求到原来的主逻辑上,如果此次请求正常返回,那么断路器将继续闭合,
主逻辑恢复,如果这次请求依然有问题,断路器继续进入打开状态,休眠时间窗重新计时。

标签:逻辑,String,hystrix,springcloud,熔断,paymentCircuitBreaker,id
From: https://www.cnblogs.com/huoziqi/p/17534155.html

相关文章

  • springcloud- hystrix服务降级简单讲解
    在出现错误的时候我们需要即使进行处理并返回提示信息给用户实现交互友好化,我们使用一下注解来实现服务降级功能,一般我们将服务降级配置在客户端相关注解provider8001 ​ @EnableCircuitBreaker //服务降级激活注解服务端主启动类 @HystrixCommand(fallbackMethod=......
  • springcloud - openFeign的简单配置和使用
    openFeign第一步:导入依赖     <dependency>       <groupId>org.springframework.cloud</groupId>       <artifactId>spring-cloud-starter-openfeign</artifactId>     </dependency>第一步:进行配置 server: port:8......
  • springcloud - ribbon简单提点 + 手写轮询算法
    ribbon(依然有人使用,还是很难替换掉)负载均衡+restTemplate实现rpc远程调用新版eureka依赖集成好了ribbon,可以不用重新导入consumer远程调用provider使用到了一个resttemplate类在消费者端的consumer中调用   @Resource   privateRestTemplaterestTemplate;/......
  • springcloud - consul的简单使用和配置
    第一步:导入依赖 <!--   consul-->     <dependency>       <groupId>org.springframework.cloud</groupId>       <artifactId>spring-cloud-starter-consul-discovery</artifactId>     </dependency>第二......
  • springcloud - zookeeper的基本配置和使用
     第一步:导入依赖     <dependency>       <groupId>org.springframework.cloud</groupId>       <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>       <!--排除启动器中配置好的版本-->    ......
  • springcloud - 工程相关步骤以及提取公共部分
    1.创建父工程 配置pom文件删除src文件2.创建子模块配置pom文件3.配置yml文件4.创建启动类5.业务实现当出现公共代码时可以进行提取 例如实体类或者通用工具类等,如下图,提取成一个单独的模块先点击clean  然后点击install,最后将包导入到需要的子模块中实现相互......
  • springcloud 可能会用到的依赖
    springcloud需要上官网看版本适配不然可能会出现意想不到的问题此笔记使用maven版本 3.8.4<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"x......
  • 一定要收藏的5个优秀的SpringCloud开源项目
    今天再为大家推荐几个优秀的SpringCloud开源脚手架项目,开箱即用,不管是学习还是开发新项目,都非常不错。伟大的作家鲁迅先生曾说过:能直接用,绝不重复造轮子 img好了,不多bb,上才艺!1、pig基于SpringCloud2020、SpringBoot2.5、OAuth2的RBAC权限管理系统。gitee......
  • 介绍6款热门的SpringCloud微服务开源项目,总有适合你的!
    今天介绍六款比较热门的SpringCloud微服务项目,感兴趣的可以clone下来研究一下,相信对你学习微服务架构很有帮助。一、Cloud-Platform介绍Cloud-Platform是国内首个基于SpringCloud微服务化开发平台,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关AP......
  • SpringBoot SpringCloud Nacos等一些组件版本对应
    毕业版本依赖关系(推荐使用)由于SpringBoot2.4+和以下版本之间变化较大,目前企业级客户老项目相关SpringBoot版本仍停留在SpringBoot2.4以下,为了同时满足存量用户和新用户不同需求,社区以SpringBoot2.4为分界线,同时维护2.2.x和2021.x两个分支迭代。2021.x分支......