Gateway integra la degradación del disyuntor Sentinel

Agregar dependencia de Maven

La integración de Sentinel en versiones anteriores requería una configuración manual. En la nueva versión, basta con agregar la dependencia spring-cloud-alibaba-sentinel-gateway , que se configura internamente para nosotros. Puede consultar: SentinelSCGAutoConfiguration

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
</dependency>

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

Configurar centinela

spring:
  cloud:
    sentinel:
      # 配置Sentinel控制台
      transport:
        dashboard: localhost:8888 # Sentinel 控制台地址
      # 如果需要配置Sentinel全局异常处理,可以添加以下配置
      scg:
        fallback:
          mode: response # 重定向(redirect) 或者 响应(response)
          # redirect: # mode 为 redirect 时,设置重定向URL
          response-status: 200 # 响应状态码
          response-body: "{code: 500, msg: '服务器压力山大,请稍后再试!'}" # 响应内容体

Configurar reglas

Hay varias formas de configurar las reglas.

  • El código se configura mediante la inicialización del Bean.
  • Configuración a través de consola
  • Centro de configuración integrado para la configuración

configuración en código

@Configuration
public class GatewayFlowRuleConfig {

    /**
     * 初始化网关流控规则
     */
    @PostConstruct
    public void init() {
        Set<GatewayFlowRule> rules = new HashSet<>();

        rules.add(new GatewayFlowRule()
                .setResourceMode(SentinelGatewayConstants.RESOURCE_MODE_ROUTE_ID) // 模式
                .setResource("user_route") // 资源名,gateway网关路由
                .setGrade(RuleConstant.FLOW_GRADE_QPS) // 流控类型 QPS、线程数
                .setCount(3) // 间隔时间内最大请求次数
                .setIntervalSec(1L) // 间隔时间
                .setControlBehavior(RuleConstant.CONTROL_BEHAVIOR_DEFAULT) // 流控方式 默认快速失败
                .setBurst(0) // 超过最大请求次数,还能容忍多少个请求通过
        );

        GatewayRuleManager.loadRules(rules);
    }
}

Configuración en la consola

La configuración de la consola es más intuitiva y conveniente. La desventaja es que no puede ser persistente, siempre que las reglas de reinicio del servicio desaparezcan. Las reglas de la consola son persistentes, puede verificar si son persistentes .
inserte la descripción de la imagen aquí

Reglas de configuración del Centro de configuración

Tome Nacos como ejemplo aquí

Agregar dependencia de Maven

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-sentinel-datasource</artifactId>
</dependency>

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

Configurar origen de datos de Sentinel

spring:
  cloud:
    sentinel:
      datasource:

        # 名称自定义
        gateway-flow-rule:
          nacos:
            server-addr: ${spring.cloud.nacos.discovery.server-addr}
            namespace: ${spring.cloud.nacos.discovery.namespace}
            group-id: SENTINEL_GATEWAY_FLOW_GROUP
            data-id: ${spring.application.name}-gateway-flow-rules.json
            # 配置网关的流控规则一定要设置成 gw-flow,flow 是普通流控规则。
            rule-type: gw-flow # 设置 gateway flow 流控规则类型

Nacos agrega configuración de reglas

  • Cree un archivo de configuración de Nacos con el mismo espacio de nombres, ID de grupo e ID de datos que el anterior.
  • Configure la clase de regla GatewayFlowRule en el código de referencia del parámetro de configuración
[
	{
		"app": "gateway-server",
		"burst": 0,
		"controlBehavior": 0,
		"count": 5.0,
		"grade": 1,
		"interval": 1,
		"intervalUnit": 0,
		"maxQueueingTimeoutMs": 500,
		"resource": "user_route",
		"resourceMode": 0
	}
]
  • Reinicie el proyecto, y la configuración de reglas en Nacos se puede ver en la consola.
    inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_42270645/article/details/123659480
Recomendado
Clasificación