Процесс сохранения

Почему настойчивость? Если он не сохраняется, перезапустите приложение, и данные исчезнут. Это также называется необработанным режимом.

Мы рекомендуем устанавливать правила через консоль и отправлять правила в единый центр правил.Клиент реализует интерфейс ReadableDataSource и отслеживает центр правил для получения изменений в режиме реального времени.

Процесс выглядит следующим образом:картина

DataSource расширяет общие реализации

  • Режим извлечения: клиент активно опрашивает и извлекает правила из центра управления правилами, который может быть реляционной СУБД, файлами или даже системой контроля версий. Способ сделать это прост, но недостатком является то, что изменения не могут быть получены вовремя;
  • Режим принудительной отправки: центр правил равномерно распределяет изменения, а клиент постоянно отслеживает изменения, регистрируя слушателей, например, используя центры конфигурации, такие как Nacos и Zookeeper. Этот метод имеет лучшие гарантии согласованности и реального времени.

Давайте посмотрим, какие режимы доступны и чем они отличаются.

картина

зависимости pom-файла

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

конфигурация 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

конфигурация nacos

картина
[
  {
    "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
  }
]