【SpringCloud】(十一):超時機制和斷路器及 Hystrix簡單實踐

00潤物無聲00發表於2017-08-14

  上篇文章我們配置了Eureka叢集,實現了高可用。在微服務框架中,一個服務消費者可能是其他服務消費者的提供者,而當低層次的服務提供者出現問題時,會導致系統資源被耗盡。出現雪崩效應。


Hystrix是解決解決方案的實踐。



消費者服務:microservice-comsumer-movie-ribbon-withhystrix

1.POM.xml中加入依賴

	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-hystrix</artifactId>
	</dependency>

2.在啟動來上加入註解:

@EnableCircuitBreaker


3.Controller中加入註解和失敗呼叫方式

package com.dynamic.cloud.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import com.dynamic.cloud.entity.User;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;

@RestController
public class MovieController {
	@Autowired
	private RestTemplate restTemplate;
	
	@GetMapping("/movie/{id}")
	@HystrixCommand(fallbackMethod = "findByIdFallback")
	public User findById(@PathVariable Long id) {
		return this.restTemplate.getForObject("http://microservice-provider-user/simple/" + id, User.class);
	}

	public User findByIdFallback(Long id) {
		User user = new User();
		user.setId(0L);				
		return user;
	}

}

4.配置檔案 application.yml

server:
  port: 7901

spring:
  application:
    name: microservice-comsumer-movie-ribbon
  
eureka:
  client:
    serviceUrl:
      defaultZone: http://user:pass123@localhost:8761/eureka
  instance: 
    prefer-ip-address: true
    instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}}
#hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 5000

啟動Eureka,使用者微服務,電影微服務。

直接訪問,出現資料訪問成功,而當我們把使用者微服務停掉的時候,再次訪問就會走我們的fallbackMethod配置的方法。




相關文章