[Spring Cloud] Gateway 快速配置

网关介绍

问题背景 :

微服务架构中 , 随着模块拆分 , 原本单体应用的权限校验逻辑需要在多个服务中重复出现 , 导致代码冗余和维护困难

服务接口直接暴露 , 缺乏统一安全屏障和流量治理入口

API 网关

API 网关是微服务架构的唯一入口(门面模式) , 类似于"前台" , 主要负责 :

权限控制 : 统一身份验证 , 拦截非法请求

动态路由 : 根据规则将请求转发至目标微服务

负载均衡 : 当目标服务有多个实例时 , 自动分发流量

限流 : 防止突发流量压垮后端服务

常见网关 :

组件

特点

状态

Zuul

Netflix 开源,与 Eureka/Ribbon 配合好

2018 年进入维护状态,不再推荐新项目使用

Spring Cloud Gateway

Spring 官方基于 Netty 开发,异步非阻塞,性能更高

推荐,旨在替代 Zuul,性能约为 Zuul 的 1.6 倍

Spring Cloud Gateway 快速入门

① 创建 gateway Module 并引入依赖

<!--网关-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--负载均衡-->
<dependency><groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

② 配置文件

server:
  port: 10030 # 网关端口

spring:
  application:
    name: gateway
  profiles:
    active: dev
  cloud:
    loadbalancer:
      nacos:
        enabled: true
      ribbon:
        enabled: false
    nacos:
      discovery:
        server-addr: 39.106.193.201:8848
#        cluster-name: SH
        namespace: fe19f572-f4b8-423f-a783-def2beba9ca4
      config:
        server-addr: 39.106.193.201:8848
        file-extension: yaml
        namespace: fe19f572-f4b8-423f-a783-def2beba9ca4
    gateway:
      routes: # 路由配置列表
        - id: product-service # 路由唯一标识
          uri: lb://product-service # 目标服务地址 (lb表示负载均衡)
          predicates: # 路由断言 (匹配规则)
            - Path=/product/** # 匹配以 /product 开头的请求
        - id: order-service
          uri: lb://order-service
          predicates:
            - Path=/order/**
  • id : 自定义路由 ID , 唯一
  • uri : 目标服务地址 , 支持普通 URI 和 lb://应用注册服务名称 (lb 标识负载均衡 , 使用 lb://方式标识从注册中心获取到服务地址)
  • predicates : 路由条件 , 根据匹配结果决定是否执行该请求路由
  • Path 断言Path=/product/** 表示匹配所有以 /product 开头的 URL

组合断言 : 一个路由可以配置多个断言 , 所有断言必须同时满足

注意 : 在之前的项目中我们配置过 namespace 需要将 gateway 放在和其余项目相同的环境中 , 否则项目启动成功后也无法调用

③ 测试 : http://127.0.0.1:10030/order/1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值