Gateway网关-网关作用介绍

 

网关的技术实现

  在SpringCloud中网关的实现包括两种:

    gateway

    zuul

zuul是基于Servlet的实现,属于阻塞式编程,而SpringCloudGateway则是基于Spring5中提供的WebFlux,属于应式编程的实现,具备更好的性能  

 

网关作用:

  对用户请求做身份认证,权限校验

  将用户请求路由搭配微服务,并实现负载均衡

  对用户请求做限流

 

 

Gateway网关-快速入门

  1.创建信的module,引入SpringCloudGateway的依赖和nacos的服务发现依赖:

复制代码
    <dependencies>
        <!-- nacos服务注册依赖 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- 网关依赖gateway依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
    </dependencies>
复制代码

  2.编写路由配置nacos地址

复制代码
server:
    port: 10010
spring:
  application:
    name: gateway
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
    gateway:
      routes:
        - id: user-server #路由表示 必须唯一
          uri: lb://userserver # 路径的目标地址
          predicates: # 路由断言,判断请求是否符合规则
            - Path=/user/** #路由断言。判断路由是否是以/user开头,如果是则复合规则
        - id: order-server
          uri: lb://orderserver
          predicates:
            - Path=/order/**
复制代码

 

搭建网关服务

 

Gateway网关-路由断言工厂

 网关路由可以配置的内容包括:

  路由id:路由唯一标示

  uri:路由目的地,支持lb和http两种

  predicates:路由断言,判断请求是否符合要求,符合则转发路由目的地

  filters:路由过滤器,处理请求响应

路由断言工厂Route Predicate Factory

  我们在配置文件中写的断言规则只是字符串,这些字符串会被Predicate Factory读取并处理,转变为路由判断的

  咧如:Path=/user/**是按照路径匹配,这个规则是由

像这样的断言工厂在SoringCloudGateway还有十几个

 

路由断言工厂Route Predicate Factory

Spring提供11种基本的Predicate工厂:

 

 Gateway网关-路由过滤器配置

路由过滤器GatewayFilter

  GatewayFilter是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理

 

过滤器工厂 GatewayFilterFactory

  Spring提供了31中不同的路由过滤器工厂,咧如:

 

默认过滤器

  如果要对所有的路由都生效,则可以将过滤器工厂写到default下

复制代码
server:
    port: 10010
spring:
  application:
    name: gateway
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
    gateway:
      routes:
        - id: user-server #路由表示 必须唯一
          uri: lb://userserver # 路径的目标地址
          predicates: # 路由断言,判断请求是否符合规则
            - Path=/user/** #路由言。判断路由是否是以/user开头,如果是则复合规则
        - id: order-server
          uri: lb://orderserver
          predicates:
            - Path=/order/**
      default-filters:  # 全局过滤器
        - AddRequestHeader=Truth,Itcast is freaking awesome! #添加请求头
复制代码

 

总结:

  过滤器的作用是什么?

    对路由的请求或响应做加工处理,比如添加请求头

  defaultFilters的作用是什么?

    对所有路由都生效的过滤器

    

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @   monkey大佬  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示