首页 > 其他分享 >springboot 整合sentinel 和nacos实现流量控制

springboot 整合sentinel 和nacos实现流量控制

时间:2023-08-15 17:33:05浏览次数:34  
标签:springboot spring nacos alibaba sentinel com cloud

方案一使用sentinel 控制面板

1、启动sentinel

java -jar sentinel.jar

2、在自己应用user中添加依赖

    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.sleep</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
        <nacos-client>2.0.1</nacos-client>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
            <version>2.2.0.RELEASE</version>
            <exclusions>
                <exclusion>
                    <artifactId>nacos-client</artifactId>
                    <groupId>com.alibaba.nacos</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>servo-core</artifactId>
                    <groupId>com.netflix.servo</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--sentinel指定nacos为数据源 -->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
            <version>1.7.1</version>
            <exclusions>
                <exclusion>
                    <artifactId>nacos-client</artifactId>
                    <groupId>com.alibaba.nacos</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- 引用sentinel配置 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
            <version>2.2.1.RELEASE</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring-cloud-commons</artifactId>
                    <groupId>org.springframework.cloud</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-core</artifactId>
            <version>1.7.1</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>${nacos-client}</version>
        </dependency>

    </dependencies>

3、新增bootstrap.yml

spring:
  application:
    name: user   # 服务名称 应用名称
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848   # 配置注册中心的地址
    #sentinel:
    #  transport:
    #    dashboard: localhost:8080 # 配置sentinel dashboard地址
    #    port: 8719

  # 暴露的健康检查服务断点
management:
  endpoint:
    web:
      exposure:
        include: '*'

4、在流量控制面板中就可以进行流量控制了

 

方案二 使用nacos 实现流量控制

1、依赖不变

2、配置

spring:
  application:
    name: user   # 服务名称 应用名称
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848   # 配置注册中心的地址
    #sentinel:
    #  transport:
    #    dashboard: localhost:8080 # 配置sentinel dashboard地址
    #    port: 8719
    sentinel:
      datasource:
        ds1:
          nacos:
            server-addr: localhost:8848
            dataId: ${spring.application.name}-sentinel.json
            groupId: DEFAULT_GROUP
            data-type: json
            rule-type: flow
  # 暴露的健康检查服务断点
management:
  endpoint:
    web:
      exposure:
        include: '*'
server:
  port: 9991
debug: true

3、在nacos配置中新咋 user-sentinel.json 配置即可

如:

[
    {
        "resource": "/getUser",
        "limitApp": "default",
        "grade": 1,
        "count": 1,
        "strategy": 0,
        "controlBehavior": 0,
        "clusterMode": false
    }
,
     {
        "resource": "/getUser1",
        "limitApp": "default",
        "grade": 1,
        "count": 2,
        "strategy": 0,
        "controlBehavior": 0,
        "clusterMode": false
    }
]

 

标签:springboot,spring,nacos,alibaba,sentinel,com,cloud
From: https://www.cnblogs.com/niun/p/17631928.html

相关文章

  • SpringBoot3 学习笔记 (整合Druid)
    一、Druid Github地址:https://github.com/alibaba/druid/二、配置数据源1、在https://mvnrepository.com/artifact/com.alibaba/druid上找最新的版本 2、在pom.xml中添加上Druid数据源依赖<!--https://mvnrepository.com/artifact/com.alibaba/druid--><dependency......
  • SpringBoot3 学习笔记 (整合Mybatis-plus)
    1、引入依赖,网址:https://mvnrepository.com/artifact/com.baomidou 找到mybatis-plus-boot-starter这里最新版本为3.5.3.2,点击进去2、在pom.xml中添加依赖,并确认依赖中已经有了mysql-connector-j的依赖<!--https://mvnrepository.com/artifact/com.baomidou/mybatis-pl......
  • nacos 单机3节点 集群env
     集群中包含3个NacosServer节点,两个Proxy主备节点,Mysql数据库主备这里仅记录Nacos的安装Nacos节点服务器节点IP端口Nacos1172.17.10.218858(默认8848)Nacos1172.17.10.228858(默认8848)Nacos1172.17.10.238858(默认8848)Nacos集群配置安装JAVA环......
  • 单元测试中的@SpringBootTest和@RunWith
    背景:平常都是写功能,写业务代码忽略了对测试案例的理解,借此机会梳理记录一下测试案例中常用到的的几个注解。一:@SpringBootTest作用是加载ApplicationContext,启动spring容器。使用@SpringBootTest时并没有像@ContextConfiguration一样显示指定locations或classes属性,原因在于@Sprin......
  • 可能是全网最全的SpringBoot启动流程源码分析(最新3.x版本)
    @SpringBootApplication(scanBasePackages={"com.javaedge.base"})publicclassBaseApplication{publicBaseApplication(){}publicstaticvoidmain(String[]args){SpringApplication.run(BaseApplication.class,args);......
  • SpringBoot3集成Redis
    目录一、简介二、工程搭建1、工程结构2、依赖管理3、Redis配置三、Redis用法1、环境搭建2、数据类型3、加锁机制四、Mybatis缓存1、基础配置2、自定义实现五、参考源码标签:Redis.Mybatis.Lock;一、简介缓存在项目开发中,基本上是必选组件之一,Redis作为一个key-value存储系统,具......
  • Nacos2 + Mysql8 作为数据源的建表语句
    在MySQL中创建nacos用户,MySQL创建名为Nacos的Schema,并授权nacos用户可以访问。语句如下:mysql>createuser'nacos'@'%'identifiedby'password';mysql>createschemanacos;mysql>grantALLonnacos.*to'nacos'@'%';或者直接新建一个n......
  • nacos集群部署
    准备nacos一般集群需要至少3个节点。我们先准备3台机器: 192.168.11.200、192.168.11.196、192.168.11.126nacos的默认服务端口是8848,但是由于我们的机器上还有其他nacos服务正在作用,所以,我们这里把端口改为8748,如下:192.168.11.200:8748192.168.11.196:8748192.168.11.......
  • SpringBoot 3.0日志系统设计LoggingSystem详解
    0前言SpringBoot对日志的配置和加载进行了封装,让我们可以很方便地使用一些日志框架,只需要定义对应日志框架的配置文件,如LogBack、Log4j、Log4j2等,代码内部便可以直接使用。如我们在resources目录下定义了一个logbackxml文件,文件内容是logback相关配置,然后就可以直接在代码在使用L......
  • SpringBoot 启动流程追踪(第二篇)
    上一篇文章分析了除refresh方法外的流程,并着重分析了load方法,这篇文章就主要分析refresh方法,可以说refresh方法是springboot启动流程最重要的一环,没有之一。try{ //Allowspost-processingofthebeanfactoryincontextsubclasses. postProcessBeanFactory(bea......