控制臺訪問地址:http://localhost:8080/
依賴
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
配置文件
spring:cloud:sentinel:transport:dashboard: localhost:8080# 不用等到第一次發送請求,就可以連接到控制臺eager: true
feign:sentinel:# 開啟兜底返回 @FeignClient(value = "ms2", fallback = Ms2FeignFallBack.class)enabled: true
流量控制
比如QPS=1,1s只能處理一個請求,其余請求會走異常處理方法(直接失敗的情況下),也可以設置其他請求排隊。
對controller方法流控
/*** 處理controller接口的被限流后的異常處理操作*/
@Component
public class MyBlockExceptionHandler implements BlockExceptionHandler {@Overridepublic void handle(HttpServletRequest request, HttpServletResponse response, BlockException e) throws Exception {response.setContentType("application/json;charset=utf-8");Map<String, Object> map = new LinkedHashMap<>();map.put("code", 500);map.put("msg", "sentinel限流:" + e.getClass());String string = new ObjectMapper().writeValueAsString(map);PrintWriter writer = response.getWriter();writer.write(string);writer.flush();writer.close();}
}
對@SentinelResource(value = “sm”, blockHandler = “smFallBack”)修飾的方法流控
public String smFallBack(String uuid, BlockException blockException) {return uuid + blockException.getClass();
}
對feign方法流控
Ms2Feign
@FeignClient(value = "ms2", fallback = Ms2FeignFallBack.class)
public interface Ms2Feign {
}
Ms2FeignFallBack
@Component
public class Ms2FeignFallBack implements Ms2Feign {@Overridepublic String aa() {return "aa的兜底回調函數";}@Overridepublic String bb(String name, int age) {return null;}@Overridepublic String cc(String name, int age) {return null;}@Overridepublic String dd(FeignEntity feignEntity) {return null;}@Overridepublic String ee(Map<String, Object> reqMap) {return null;}@Overridepublic String ff(String auth, Map<String, Object> reqMap) {return null;}
}
熔斷
開啟熔斷器后,超時會走熔斷方法,不會再去調feign方法,直到熔斷器關閉。
未開啟熔斷器,每次都會調,超時再走熔斷方法。