Persistenzprozess
Warum Beharrlichkeit? Wenn es nicht dauerhaft ist, starten Sie die Anwendung neu und die Daten sind weg. Dies wird auch als Raw-Modus bezeichnet.
Wir empfehlen, die Regeln über die Konsole festzulegen und die Regeln an das einheitliche Regelcenter zu übertragen. Der Client implementiert die ReadableDataSource-Schnittstelle und überwacht das Regelcenter, um Änderungen in Echtzeit zu erhalten.
Der Ablauf ist wie folgt:
DataSource erweitert gängige Implementierungen
-
Pull-Modus: Der Client fragt aktiv Regeln ab und zieht Regeln aus einem Regelverwaltungszentrum, das RDBMS, Dateien oder sogar VCS sein kann. Der Weg dazu ist einfach, aber der Nachteil ist, dass Änderungen nicht rechtzeitig erhalten werden können; -
Push-Modus: Das Regelzentrum pusht einheitlich, und der Client überwacht jederzeit Änderungen, indem er Listener registriert, z. B. mithilfe von Konfigurationszentren wie Nacos und Zookeeper. Diese Methode bietet bessere Echtzeit- und Konsistenzgarantien.
Werfen wir einen Blick auf die verfügbaren Modi und die Unterschiede zwischen ihnen.

pom-Datei-Abhängigkeiten
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
yaml-Konfiguration
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-Konfiguration

[
{
"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
}
]