0
点赞
收藏
分享

微信扫一扫

微服务初体验(三):集成Gateway网关和Sentinel限流

码农K 2021-09-18 阅读 64
前言
集成Gateway网关

回顾项目上次以及集成了Nacos、Dubbo等框架,现在需要在原有项目上进行集成Gateway的操作,还未配置对应的Nacos、Dubbo的朋友可以回顾一下《微服务初体验(一):整合Nacos进行服务注册和项目初始化》、《微服务初体验(二):使用Nacos作为配置中心并集成Dubbo》之前的内容。

之前的项目中已经集成了Gateway这个模块,现在只需要修改Gateway模块对应的Maven依赖和对应的yaml路由转发规则即可。首先打开对应的pom.xml删除其中的多余web依赖,然后引入如下依赖:

        <!-- 公共依赖模块-->
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>cloud-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!-- Gateway网关-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>2.2.4.RELEASE</version>
        </dependency>

        <!-- nacos注册中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>

开始编写Gateway对应的路由配置,打开cloud-gateway模块下的application.yml配置文件,编写下列规则:

server:
  port: 80

spring:
  application:
    name: gateway

  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

    gateway:
      routes:
        - id: consumer_route
          #uri后面指定消费者的服务id
          uri: lb://consumer
          predicates:
            #匹配条件
            - Path=/**

重启项目,然后通过访问80通过网关转发请求至consumer模块的Controller中,可以看到下图访问的是80端口但是请求已经被转发至8011端口的consumer服务上了,至此Gateway网关集成完毕。


集成Sentinel进行限流

Sentinel是阿里推出的一个分布式系统的流量管控框架,可以很好的对流量进行削峰降级、负载均衡之类的管控,首先在common模块中引入相关依赖

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>

引入依赖完毕后去github上下载对应的jar,记得要选择对应的版本,笔者这里的对应的版本是1.7.1
下载完毕之后使用java -jar命令启动


配置对应yml文件

spring:
  cloud:
    sentinel:
      transport:
        #本机Sentinel的控制台地址
        dashboard: localhost:8080
        #当前服务和Sentinel通讯的端口
        port: 8719

由于Sentinel是懒加载,所以在请求完该接口后才会出现对应的数据,所以现在直接访问会出现Sentinel控制台内容为空的情况,多刷新几次请求接口即可显示对应的接口数据


以上Nacos整合Gateway、Sentinel等框架已完成,框架中具体的配置和复杂实现还是要根据项目实际情况去配置,在此只是简单的搭建出对应Demo。

举报

相关推荐

0 条评论