spring-cloud fuse and load balancing

1. Service fuse means that another service called by the current service will directly terminate the call and call another standby method directly when the response times out, called service degradation.

Configuration class

@Configuration
public class HystrixConfig {

    @Bean
    public ServletRegistrationBean getServlet() {
        HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
        registrationBean.setLoadOnStartup(1);
        registrationBean.addUrlMappings("/hystrix.stream");
        registrationBean.setName("HystrixMetricsStreamServlet");
        return registrationBean;
    }
}

Service

@Service
@Slf4j
public class EurekaRibbonService {

    @Autowired
    RestTemplate restTemplate;

    @HystrixCommand(
            commandProperties = {
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds",value = "1000"),
            @HystrixProperty(name = "execution.isolation.strategy",value = "THREAD")},
            fallbackMethod = "syaHelloFailure")
    public String sayHello() {
        String message;
message = restTemplate.getForObject("http://eureka-client/info", String.class); return message; } public String syaHelloFailure() {return "error"; } }

 

Add @EnableHystrix annotation to the startup class.

 

2. Load balancing

Spring-cloud load balancing is done on the client

Load balancing rules:

NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # random configuration rules 
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule # Polling configuration rules
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RetryRule # retry configuration rule
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule

#Configure rule response time weight ribbon
@Configuration
 public  class RestTemplateConfig { 

    @Bean 
    @LoadBalanced // Realize load balancing 
    public RestTemplate restTemplate () {
         return  new RestTemplate (); 
    } 

}

Configuration file

eureka- client: #The corresponding service client's name 
  ribbon: 
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

If you use the feign method, you only need to configure the yml file.

 

Guess you like

Origin www.cnblogs.com/yangyang12138/p/12670901.html