1. 程式人生 > >SpringCloud-----Hystrix熔斷器

SpringCloud-----Hystrix熔斷器

1、雪崩效應

2.服務雪崩的原因

(1)某幾個機器故障:例如機器的硬驅動引起的錯誤,或者一些特定的機器上出現一些的bug(如,記憶體中斷或者死鎖)。

(2)伺服器負載發生變化:某些時候服務會因為使用者行為造成請求無法及時處理從而導致雪崩,例如阿里的雙十一活動,若沒有提前增加機器預估流量則會造伺服器壓力會驟然增大二掛掉。

(3)人為因素:比如程式碼中的路徑在某個時候出現bug

3.解決或緩解服務雪崩的方案

4、搭建feign實現hystrix

pom.xml新增依賴

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

application.yml

feign:
   hystrix:
     enabled: true #開啟熔斷器
hystrix:
   command: 
     default: 
       execution: 
        isolation:
         thread: 
          timeoutInMilliseconds: 4000 #預設4s超時

xxxFallback.java

package com.cloud.fegin.fallback;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Component;

import com.cloud.fegin.service.MemberFegin;

// 服務降級
@Component
public class MemberFallBack implements MemberFegin{

	@Override
	public List<String> getList() {
		// 服務降級處理
		List<String> list = new ArrayList<>();
		list.add("服務發生異常。。。");
		return list;
	}

	
}

xxxFegin.java

package com.cloud.fegin.service;

import java.util.List;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

import com.cloud.fegin.fallback.MemberFallBack;
// fallback=MemberFallBack.class  服務降級
@FeignClient(value = "service-member",fallback=MemberFallBack.class)
public interface MemberFegin {

	@GetMapping("/getMemberAll")
	public List<String> getList();
	
}

測試:

關閉服務提供端,瀏覽器訪問銷售端,執行結果顯示:

“伺服器發生異常。。。”