proceso de persistencia

¿Por qué persistencia? Si no es persistente, reinicie la aplicación y los datos desaparecerán. Esto también se llama modo crudo.

Recomendamos configurar las reglas a través de la consola y enviar las reglas al centro de reglas unificado.El cliente implementa la interfaz ReadableDataSource y monitorea el centro de reglas para obtener cambios en tiempo real.

El proceso es el siguiente:imagen

DataSource amplía las implementaciones comunes

  • Modo de extracción: el cliente sondea y extrae reglas activamente de un centro de administración de reglas, que puede ser RDBMS, archivos o incluso VCS. La forma de hacerlo es simple, pero la desventaja es que los cambios no se pueden obtener a tiempo;
  • Modo push: el centro de reglas empuja uniformemente y el cliente supervisa los cambios en todo momento mediante el registro de escuchas, como el uso de centros de configuración como Nacos y Zookeeper. Este método tiene mejores garantías de tiempo real y consistencia.

Echemos un vistazo a los modos disponibles y las diferencias entre ellos.

imagen

dependencias del archivo pom

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

configuración yaml

spring:
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8080
#        port: 8719
#        client-ip: localhost
      eager: true
      web-context-unify: false
      datasource:
        # 规则命名:可以任意命名
        flow-rule:
          # 持久化在nacos中,还可选择zookeeper,consul等
          nacos:
            # nacos服务地址
            server-addr: ip:8848
            namespace: 45de6484-833e-4cce-b895-f14095f20605
            group-id: SENTINEL_GROUP
            # 配置DataId
            data-id: ossa-service-producer-flow-rule
            data-type: json
            # 流控规则:FLOW,DEGRADE,PARAM_FLOW等
            rule-type: flow

configuración de nacos

imagen
[
  {
    "resource""/test",
    "limitApp""default",
    "grade"1,
    "count"2,
    "strategy"0,
    "controlBehavior"0,
    "clusterMode"false
  },
    {
    "resource""/producer/{id}",
    "limitApp""default",
    "grade"1,
    "count"2,
    "strategy"0,
    "controlBehavior"0,
    "clusterMode"false
  }
]