spring cloud gateway入门到进阶

前言

最近,了解了一下,目前的一些api网关的常用技术,配置了一下spring cloud gateway。做一下记录吧,毕竟时间长了,容易忘。

  • zuul1.x
  • zuul2.x
  • spirng cloud gateway
  • nginx + lua(openresty ,kong)
  • envoy

上边这几种都是可以作为网关使用的,其他的几种,后边有时间,再做详细的介绍,今天我们一起来看下spring cloud gateway的使用吧。

前置
版本

JDK版本:1.8
springboot版本:2.3.10.RELEASE
springlcoud版本:Hoxton.SR12

依赖
<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>Hoxton.SR12</spring-cloud.version>
</properties>
<dependencyManagement>
     <dependencies>
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-dependencies</artifactId>
             <version>${spring-cloud.version}</version>
             <type>pom</type>
             <scope>import</scope>
         </dependency>
     </dependencies>
 </dependencyManagement>
 <dependencies>
	 <dependency>
	     <groupId>org.springframework.cloud</groupId>
	     <artifactId>spring-cloud-starter-gateway</artifactId>
	 </dependency>
	
	 <dependency>
	     <groupId>org.springframework.cloud</groupId>
	     <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
	     <version>2.2.9.RELEASE</version>
	 </dependency>
 </dependencies>

就用到这个两个starter依赖,还是比较简单的。

application.yml配置(重点)

第一种:手动配置路由

spring:
  cloud:
    gateway:
      routes:
      - id: route01 # 就是一个唯一的id,用于api的分组(如:这个是订单服务,下边的route02是库存服务)
        predicates: # 断言
          - Path=/api/order/** # Path路径匹配,P必须大写,否则会报错。此时的意思是在访问localhost:8888/api/order/xxx 时,会被路由到下边配置的uri地址上。
        filters: # 过滤器
          - StripPrefix= 2   # 此处StripPrefix必须首字母大写,而且后边紧跟=,否则也会报错。此配置的作用是,将路由的时候,将api/order去掉,变成localhost:8080/xxx 值2表示去掉两级。若值为1的话,则为localhost:8080/order/** 但是此时路由路径不对了,订单服务访问404
        uri: http://localhost:8080
      - id: route02 
        uri: http://localhost:8081
        predicates:
          - Path=/api/stock/**
        filters:
          - StripPrefix= 2
  application:
    name: myGateWay

server:
  port: 8888

第二种:动态路由

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
  application:
    name: myGateWay

server:
  port: 8888

eureka:
  client:
    service-url:
      defaultZone: http://localhost:9999/eureka/

使用动态路由,需要再pom.xml中添加eureka客户端的依赖,开启服务发现。所谓动态路由,就是当我们访问网关的时候,网关自动从注册中心中拿到一个服务的地址,然后自动路由过去。我们不在需要对url进行配置。

【注意】
配置好之后,我们就可以使用localhost:8888/服务名/接口具体url 进行访问,服务名在eureka的web管理页面中可以看是全大写的,此处请求的时候也必须服务名大写才可以。

此时,大家估计就有疑问了,大写的服务名在url路径中,多不美观,其次要是服务名又很长,岂不是url很长,多不雅观,接下来,我们来解决这个问题。

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
      - id: order-service  # 起一个唯一的名字
        predicates:
          - Path=/order/**   
        filters:
          - StripPrefix= 1        # 过滤掉/order
        uri: lb://ORDER-SERVICE # 假如我们的订单服务名叫 ORDER-SERVICE
  application:
    name: myGateWay

server:
  port: 8888

eureka:
  client:
    service-url:
      defaultZone: http://localhost:9999/eureka/

上边这样,进行一个routes的配置,此时就可以指定访问的路径了,之前的访问url为:localhost:8888/ORDER-SERVICE/findAll ,此时的访问路径则为:localhost:8888/order/findAll
这两个url此时都可以访问到后端的订单微服务。这样就更加灵活的指定一个服务的访问路劲了。

总结

本文为spring cloud gateway的一个快速入门,后边更高阶的功能在慢慢记录吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值