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.