美文网首页
springcloud-gateway-sentinel整合避坑

springcloud-gateway-sentinel整合避坑

作者: nicohuhu | 来源:发表于2021-01-23 21:23 被阅读0次
    第一步:导入依赖

    工程搭建参考上一节gateway入门,sentinel也是在此基础上搭建的。

            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-gateway</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
            </dependency>
    
    第二步:配置yml
    server:
      port: 9999
    spring:
      application:
        name: sentinel-gateway
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848
        sentinel:
          transport:
            dashboard: localhost:8080  #sentinel的图形化界面访问路径
          scg:
            fallback:   #服务降级返回的响应结果
              mode: reponse
              response-status: 426
              response-body: error request
        gateway:
          discovery:
            locator:
              enabled: false   #开启表示根据微服务名称映射,就是微服务名称拼接到url中可以直接访问,但是不推荐这么使用 容易暴露微服务
    #      enabled: false  #默认开启网关true,关闭网关false
    
    第三步:启动网关

    此时启动网关后我们就完成整合了,但是如何使用呢。

    第四步:如何使用sentinel限流

    首先下载sentinel dashboard监控管理页面的jar包,官网下载https://github.com/alibaba/Sentinel/releases/tag/v1.8.0,我这里使用v1.7版本

    image.png

    在cmd中运行java -jar D:\software\sentinel-dashboard-1.7.0后面跟上你的文件路径,可能会出错


    image.png

    我运行1.6jar包直接报错,更换1.7jar包后运行正常,一旦运行成功后,关闭后再次运行也会出错,所以我右击打开方式,选择Java(TM) Platform SE binary运行,任务管理器就会有这个服务,总之就是要运行编译这个jar包服务


    image.png

    然后访问是可以的账号密码都是sentinel,登录


    image.png
    一片空白
    image.png

    此时网关已经启动,我们随便掉一个接口返回成功即可,因为sentinel是懒加载的,需要请求来触发它。


    image.png

    此时就有了网关服务


    image.png

    用route id方式配置限流规则


    image.png
    image.png

    其中order-center为yml中 routes的id,表示对这个微服务进行限流

    spring:
      cloud:
        gateway:
          routes:
           - id: order-center #id必须要唯一
             uri: lb://order-center
             predicates:
              - Path=/order/**
           - id: product-center #id必须要唯一
             uri: lb://product-center
             #谓词工厂
             predicates:
               - Path=/product/**   #先匹配断言 然后追加或省略前缀
    

    我们网页发起请求,点击请求一次,请求成功


    image.png

    我们一秒快速点击发起多次请求


    image.png

    请求太多会失败,每秒只允许一个请求,返回我们定义的降级状态码426


    image.png

    用api分组方式配置限流
    先创建分组


    image.png

    然后这里就有了分组选择项


    image.png
    image.png
    快速发起多次请求效果是一样的
    image.png

    总结:一旦项目重启sentinel中我们的这些配置都将消失,因为没有持久化,以上就是sentinel整合网关的简单应用。

    相关文章

      网友评论

          本文标题:springcloud-gateway-sentinel整合避坑

          本文链接:https://www.haomeiwen.com/subject/zwiuzktx.html