• spring cloud ribbon 断路器


    @EnableDiscoveryClient
    @SpringBootApplication
    @EnableCircuitBreaker //开启断路器
    public class ConsumerMovieApplication {
      @Bean
      @LoadBalanced
      public RestTemplate restTemplate() {
        return new RestTemplate();
      }
    
      public static void main(String[] args) {
        SpringApplication.run(ConsumerMovieApplication.class, args);
      }
    }
    

      

     调用了findByIdFallback,并不代表使用了断路器,可以通过 /health 查看是否启用了断路器

    @RestController
    public class MovieController {
      private static final Logger LOGGER = LoggerFactory.getLogger(MovieController.class);
      @Autowired
      private RestTemplate restTemplate;
      @Autowired
      private LoadBalancerClient loadBalancerClient;
    
    
      //断路器 配置 fallbackMethod ,返回值和参数与调用一致
      @HystrixCommand(fallbackMethod = "findByIdFallback")
      @GetMapping("/user/{id}")
      public User findById(@PathVariable Long id) {
        // 当microservice-provider-user 挂掉了,就返回 findByIdFallback,而不在调用服务了
        return this.restTemplate.getForObject("http://microservice-provider-user/" + id, User.class);
      }
    
      public User findByIdFallback(Long id) {
        User user = new User();
        user.setId(-1L);
        user.setName("默认用户");
        return user;
      }
    
      @GetMapping("/log-user-instance")
      public void logUserInstance() {
        ServiceInstance serviceInstance = this.loadBalancerClient.choose("microservice-provider-user");
        // 打印当前选择的是哪个节点
        MovieController.LOGGER.info("{}:{}:{}", serviceInstance.getServiceId(), serviceInstance.getHost(), serviceInstance.getPort());
      }
    }

      

    1.如何实现自定义路由算法

      1.实现 IRule 接口

          2.实例化 接口

    2.为服务名称users 配置 IRule

    users.ribbon.NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule

    3.设置调用服务的超时配置

    hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 60000
     

    s

  • 相关阅读:
    王钿《淡逻辑设计的学习》
    格雷码
    perl中 数组 和 列表的区别!
    FPGA建立时间(setup time)&保持时间(hold time)&竞争和冒险&毛刺
    Verilog三段式状态机描述
    [转]Unit Testing 101: Are You Testing Your JavaScript?
    [JavaScript]Jasmine中如何选择只运行部分Cases
    Java编程中推荐的Singleton模式
    [转]如何在Intellij中使用JsTestDriver做Javascript的Unit Testing
    [Groovy]Test with Spock
  • 原文地址:https://www.cnblogs.com/zhangjianbin/p/6379750.html
Copyright © 2020-2023  润新知