【微服务|Sentinel】sentinel数据持久化

2022年7月11日 302点热度 0人点赞 0条评论

持久化流程

为什么持久化?不持久化,重启应用,数据就没了啊。这也就是所谓的原始模式。

我们推荐通过控制台设置规则后将规则推送到统一的规则中心,客户端实现 ReadableDataSource 接口端监听规则中心实时获取变更。

流程如下:图片

DataSource 扩展常见的实现方式

  • 拉模式:客户端主动向某个规则管理中心定期轮询拉取规则,这个规则中心可以是 RDBMS、文件,甚至是 VCS 等。这样做的方式是简单,缺点是无法及时获取变更;
  • 推模式:规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用 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
  }
]

15970【微服务|Sentinel】sentinel数据持久化

root

这个人很懒,什么都没留下

文章评论