五、springcloud服务熔断

服务提供方死机或者请求太太超出自己承受范围,则熔断

注解实现:基于Hystrix,访问传入负数则报错,当10次有2次出错则断开,并保持一段时间逐渐恢复。

    //===================熔断======================
    @GetMapping("/paymentfireCut/{id}")
    @HystrixCommand(fallbackMethod = "paymentInfo_timeout_handler",commandProperties = {
            @HystrixProperty(name="circuitBreaker.enabled",value = "true"),//是否开启断路器
            @HystrixProperty(name="circuitBreaker.requestVolumeThreshold",value = "10"),//请求次数
            @HystrixProperty(name="circuitBreaker.sleepWindowInMilliseconds",value = "10000"),//时间范围
            @HystrixProperty(name="circuitBreaker.errorThresholdPercentage",value = "20"),//失败率达到多少后跳闸
    })
    public String payentfireCut(@PathVariable("id") Integer id){
        if(id<0){
            throw new RuntimeException();
        }else{
            String s = IdUtil.simpleUUID();
            return s;
        }
    }

hystrix实现了链路自动恢复功能。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud Hystrix是一款优秀的服务容错和保护组件,它可以在服务之间进行通信时,通过控制服务的节点,从而防止出现级联故障,从而提高了整个分布式系统的可靠性。服务熔断是Hystrix的一个重要特性,它可以在服务出现故障时,快速地将请求转发到备用服务上,从而保证整个系统的稳定性。 以下是一个简单的Spring Cloud服务熔断的例子: 1.在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency> ``` 2.在服务提供者的Controller中添加一个服务熔断的方法: ```java @RestController public class UserController { @Autowired private UserService userService; @GetMapping("/user/{id}") @HystrixCommand(fallbackMethod = "fallbackMethod") public User getUserById(@PathVariable Long id) { return userService.getUserById(id); } public User fallbackMethod(Long id) { User user = new User(); user.setId(-1L); user.setName("default user"); return user; } } ``` 在上面的代码中,我们使用了@HystrixCommand注解来标记getUserById方法,fallbackMethod属性指定了服务熔断的备用方法。 3.在服务消费者中,使用RestTemplate来调用服务提供者的接口: ```java @RestController public class UserController { @Autowired private RestTemplate restTemplate; @GetMapping("/user/{id}") public User getUserById(@PathVariable Long id) { return restTemplate.getForObject("http://localhost:8081/user/" + id, User.class); } } ``` 在上面的代码中,我们使用了RestTemplate来调用服务提供者的接口,如果服务提供者出现故障,就会自动调用fallbackMethod方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值