一、实现背景:
在微服务横行的时代,网关犹如人之喉咙,拥有一夫当关万夫莫开之功效,也拥有成也萧何败萧何的隐患。基于此确保gateway不因具体实现服务异常带来蝴蝶效应,限流与熔断成了最近解决方案
二、整体思路:
经典三步曲(第一步:pom加依赖;第二步:配置文件做配置;第三步:编代码) + sentinel dashboard限流
三、代码实现:
1.pom.xml加依赖:
<!--sentinel依赖 配置文件链接sentinel dashboard会用到-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!--gateway集成sentinel的依赖 编码时实现SentinelGatewayFilter会用到-->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-spring-cloud-gateway-adapter</artifactId>
</dependency>
2.application.yml做配置
spring:
cloud:
sentinel:
transport:
#sentinel控制台和当前应用进行数据传递的端口号
port: 8719
#当前应用连接的sentinel控制台
dashboard: 127.0.0.1:8080
3.编代码:
package com.charlie.cloudgataway.config;
import com.alibaba.csp.sentinel.adapter.gateway.sc.SentinelGatewayFilter;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
/**
* @Author: charlie
* @CreateTime: 2022/2/13
* Description: Gateway异常配置类
*/
@Configuration
public class GatewayConfig {
@Bean
@Order(-1)
public GlobalFilter sentinelGatewayFilter() {
return new SentinelGatewayFilter();
}
}
四、sentinel dashboard配规则
五、效果展示:
1.集成sentinel之前
2.集成sentinel之后(访问出发sentinel dashboard规则后如下):
以上的代码是经过本人运行过的,希望对看到的您有所帮助!