当前位置:

SpringCloud 集成GateWay

访客 2024-04-23 301 0

目录一、添加pom依赖二、配置yml文件三、自定义过滤器四、跨域统一配置五、gateway整合sentinel服务保护(1)添加sentinel依赖(2)开启你的sentinel服务(3)添加sentinel配置一、添加pom依赖

在gateway服务里添加依赖

  • <dependency>
  • <groupId>org.springframework.cloud</groupId>
  • <artifactId>spring-cloud-starter-gateway</artifactId>
  • </dependency>
  • 注gateway依赖已经集成了web依赖再次添加web依赖会报错。

    二、配置yml文件

    gateway的核心配置介绍:

    这里注意predicates断言的子项要用等于号赋值,因为他底层已用了反射来进行解析,断言的意思是当我们访问某个标识的字段时gateway会判断当前要路由的对象属于哪个id,如:

    localhost:8080/stock_serv其中stock_serv为断言前缀,gateway通过他来配置对应的路由,又由于对应路由上一般不会有对应的标识存在,如:

    localhost:8080/stock_serv/test的路由,实际上我应该要访问的是localhost:8080/test的路由,所以还需设置一个过滤器filters其子项也必须使用等于号,固定写法

    -StripPrefix=1#去掉第一层前缀

    就可以在转发是将前缀断言去掉,访问到正确路径了。下面是集成了Nacos注册中心的配置:

  • server:
  • port:8088
  • spring:
  • application:
  • name:api-gateway
  • cloud:
  • nacos:
  • server-addr:localhost:8848#nacos的服务配置
  • discovery:
  • cluster-name:Service_cluster_1#集群
  • group:Service_group_1#分组名
  • username:nacos#用户名
  • password:nacos#密码
  • namespace:public#环境分类
  • #gateway的配置
  • gateway:
  • #路由规则
  • routes:
  • -id:server3_route#路由的唯一标识,路由到对应的服务
  • #uri:http://localhost:8003/#需要转发的地址
  • uri:lb://SERVICE-3#注册到nacos后,这里直接写路由服务的服务名
  • #lbloadbalancenacos里的本地负载均衡策略
  • #断言规则,用于路由规则的匹配
  • predicates:
  • -Path=/server3_serv/**
  • #localhost:8088/server3_serv/order/add路由到如下路径
  • #localhost:8003/server3_serv/order/add
  • #由于server1的访问路径里没有/server3_serv/路径,所以这里需要过滤掉该路径
  • filters:
  • -StripPrefix=1#转发之前去掉第一层的路径,过滤调用附加路径
  • #localhost:8003/order/add
  • #-id:server1_route
  • 这里注意配置到nacos里和直接使用在uri的写法上有些区别,nacos里的只需要lb://服务名即可。

    访问服务localhost:8088/server3_serv/test,相当于访问了localhost:8003/test的路径,效果如下:

    三、自定义过滤器四、跨域统一配置

    也可以通过配置类的方式来解决:

    五、gateway整合sentinel服务保护(1)添加sentinel依赖
  • <!--sentinel启动器-->
  • <dependency>
  • <groupId>com.alibaba.cloud</groupId>
  • <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
  • </dependency>
  • <dependency>
  • <groupId>com.alibaba.cloud</groupId>
  • <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
  • </dependency>
  • (2)开启你的sentinel服务

    (3)添加sentinel配置
  • spring:
  • cloud:
  • #sentinel配置
  • sentinel:
  • transport:
  • dashboard:127.0.0.1:8080
  • 访问后可以看到已监控到该网关了。

    发表评论

    • 评论列表
    还没有人评论,快来抢沙发吧~