当前位置:   article > 正文

Spring Gateway网关配置_spring gateway配置

spring gateway配置

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

前面介绍了Spring Cloud框架集中的Dubbo和Seata框架,以及Sentinel框架保障服务器运行的稳定性。本文将介绍SpringGateway网关框架。


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是网关

"网"指网络,"关"指关口或关卡

网关:就是指网络中的关口\关卡

网关就是当前微服务项目的"统一入口"

程序中的网关就是当前微服务项目对外界开放的统一入口

所有外界的请求都需要先经过网关才能访问到我们的程序

提供了统一入口之后,方便对所有请求进行统一的检查和管理
在这里插入图片描述
网关的主要功能有

  • 将所有请求统一经过网关
  • 网关可以对这些请求进行检查
  • 网关方便记录所有请求的日志
  • 网关可以统一将所有请求路由到正确的模块\服务上

二、 Spring Gateway简介

使用Spring Gateway作为项目的网关框架。

Spring Gateway是Spring自己编写的,也是SpringCloud中的组件。

SpringGateway官网

https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/

网关项目git地址

https://gitee.com/jtzhanghl/gateway-demo.git

1、简单网关演示

SpringGateway网关是一个依赖,不是一个软件

所以我们要使用它的话,必须先创建一个SpringBoot项目

这个项目也要注册到Nacos注册中心,因为网关项目也是微服务项目的一个组成部分

beijing和shanghai是编写好的两个项目

gateway项目就是网关项目,需要添加相关配置

<dependencies>
    <!--   Gateway依赖   -->
    <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>
</dependencies>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

下面对当前项目所有服务器添加路由配置信息

server:
  port: 9000
spring:
  application:
    name: gateway
  cloud:
    nacos:
      discovery:
        # 网关也是微服务项目的一部分,所以也要注册到Nacos
        server-addr: localhost:8848
    gateway:
      # routes是一个数组,数组中的数据使用"-"开头表示数据中的一个对象
      routes:   # 开始编写Gateway路由配置
          # 当前路由的名称,和任何其他名称没有关联,只是不能和后面再出现的路由名称重复
        - id: gateway-beijing
          # 当匹配当前路由设置时,访问指定的服务器名称(Nacos注册的服务器名称)
          # lb是LoadBalance的缩写,是负载均衡的调用
          uri: lb://beijing
          # 编写断言配置,断言的意思就是满足指定条件时运行某些事情
          # predicates:断言
          predicates:
            # 断言中我们编写当路径满足指定条件时
            # 当请求路径以/bj/开头时,就会路由到上面设置好的beijing服务器运行
            # ↓ P大写!!!!!!!!
            - Path=/bj/**
            #下面上海服务器配置类似
        - id: gateway-shanghai
          uri: lb://shanghai
          predicates:
            - Path=/sh/**
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

上面的yml配置了bejing和shanghai项目的路由信息

我们使用

http://localhost:9000/bj/show可以访问beijing服务器的资源

http://localhost:9000/sh/show可以访问shanghai服务器的资源

以此类推,再有很多服务器时,我们都可以仅使用9000端口号来将请求路由到正确的服务器

就实现了gateway成为项目的统一入口的效果

2、动态路由

网关项目随着微服务数量的增多

gateway项目的yml文件配置会越来越多,维护的工作量也会越来越大

所以我们希望gateway能够设计一套默认情况下自动路由到每个模块的路由规则

这样的话,不管当前项目有多少个路由目标,都不需要维护yml文件了

这就是我们SpringGateway的动态路由功能

配置文件中开启即可

server:
  port: 9000
spring:
  application:
    name: gateway
  cloud:
    nacos:
      discovery:
        # 网关也是微服务项目的一部分,所以也要注册到Nacos
        server-addr: localhost:8848
    gateway:
      discovery:
        locator:
          # 这是开启动态路由的配置,动态路由设置默认是不开启的 也就是enabled: false
          # 路由规则是在网关端口号后,先写路由目标注册到nacos的名称,再编写具体路径
          
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/830922
推荐阅读
相关标签
  

闽ICP备14008679号