zoukankan      html  css  js  c++  java
  • spring_cloud之网关(Gateway)

    一、Gateway 网关简介

    •   spring cloud Gateway 是spring 基于spring 5.0 spring boot 2.0、Project Reactor等技术开发
    •   spring cloud Gateway 基于filter链提供网关基本功能:安全、监控/埋点、限流等
    •   spring cloud Gateway 为微服务架构提供简单、有效的统一api路由器管理方式。
    •   spring cloud GateWay 代替 Netflix Zuul 的解决方案。 Netflix Zuul 目前处于维护状态,无新功能的开发

      核心:过滤和路由

      Gateway组件核心是一系列的过滤器,通过这些过滤器将客户端的请求转发到对应的微服务中,是加在整个微服务最前沿的防火墙和代理器,隐藏微服务ip信息,从而加强安全保护。Gateway本身就是一个微服务,需要注册到Eureka中。

      添加网关Gateway微服务架构图:

      

       不管使来自客户端的请求,还是服务内部调用都可通过网关,然后在通过网关实现鉴权、动态路由等操作。网关就是统一入口。

      核心概念:

    • 路由(route) :路由信息组成。由一个Id、一个目的URL、一组断言工厂、一组filter组成。如果路由器断言为真。说明请求Url和配置路由匹配。
    • 断言(predicate):Gateway中的断言函数输入类型是spring 5.0 框架中的 serverWebExchange。Gateway中的断言函数允许开发者自定义匹配来自 http request 中的任何信息。参数和请求头。
    • 过滤器(filter): 一个标准的spring WebFilter.Gateway中的filter 分为2种类型。分别是 Gateway Filter 、Global Filter。过滤器会将请求和响应进行修改处理。

    二、简单入门

      1、所需依赖pom.xml 需要注册到eureke 注册中心所以添加Eureka client 依赖 

    1 <dependency>
    2     <groupId>org.springframework.cloud</groupId>
    3     <artifactId>spring-cloud-starter-gateway</artifactId>
    4 </dependency>
    5 
    6 <dependency>
    7     <groupId>org.springframework.cloud</groupId>
    8     <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    9 </dependency>

       2、启动添加注解  @EnableDiscoveryClient  

       3、配置文件application.yml 添加路由配置 、将请求到网关服务地址中包含 /provider/ 的请求路由转发的 192.168.188.10:9091 服务上 

     1 spring:
     2   cloud:
     3     gateway:
     4       routes:
     5           # 路由Id
     6         - id: springcloud-eureka-provider-routes
     7           #代理服务器地址
     8           uri: http://192.168.188.10:9091
     9           #断言规则
    10           predicates:
    11             - Path=/provider/**

    路由地址写死不合理,可spring cloud Gateway 中通过配置动态路由。详情见:面向服务路由

    三、面向服务路由 将ip地址 使用lb://服务名代替 Gateway根据服务名通过ribbon算法获取服务地址  ,lb:后的服务名必须在Eureka中注册才能使用

     1 spring: 
     2   cloud:
     3     gateway:
     4       routes:
     5           # 路由Id
     6         - id: springcloud-eureka-provider-routes
     7           #代理服务器地址
     8           uri: lb://springcloud-eureka-provider
     9           #断言规则
    10           predicates:
    11             - Path=/provider/**

    log 分析 

    四、 路由前缀处理

      1、前缀的添加与去除

        

        客户端请求地址与微服务请求地址不一致时,可通过配置路径过滤器实现路径前缀的添加个去除

      添加前缀配置:关键字:PrefixPath  

     1 spring:
     2   cloud:
     3     gateway:
     4       routes:
     5           # 路由Id
     6         - id: springcloud-eureka-provider-routes
     7           #代理服务器地址
     8           uri: lb://springcloud-eureka-provider
     9           #断言规则
    10           predicates:
    11             - Path=/**
    12           filters:
    13             - PrefixPath=/provider

       去除前缀配置: 关键:StripPrefix  

    spring:
      cloud:
        gateway:
          routes:
              # 路由Id
            - id: springcloud-eureka-provider-routes
              #代理服务器地址
              uri: lb://springcloud-eureka-provider
              #断言规则
              predicates:
                #- Path=/**
                - Path=/api/provider/**
              filters:         
              #配置去除前缀 1:标识1个路径 2:标识2个路径 以此类推
                - StripPrefix=1
  • 相关阅读:
    ASP.NET 母版页和内容页中的事件
    用powershell 获取windows窗口标题
    PowerShell中格式化命令和输出命令
    Powershell视频教程
    百度谷歌眼中的80后90后
    oracle导出和导入
    Websphere 优化文档
    windows 全部命令
    Oracle SQL 语句一
    怎样启动、关闭和重新启动oracle监听器 in linux
  • 原文地址:https://www.cnblogs.com/lxn0216/p/14206720.html
Copyright © 2011-2022 走看看