【硬核】Spring Cloud Gateway(网关)

在这里插入图片描述

概念

Gateway是基于异步非阻塞模型上进行开发的,有springcloud团队开发。用来代替Zuul。

近几个月收集了收集了N份精校过的PDF版的Java八股文大全,涉及Java后端的方方面面,分享给大家。希望能帮助到大家面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。

看这里: 直接获取方式点我

文档版,如下图:
在这里插入图片描述

内容

Route(路由)

路由是构建网关的基本模块,它由ID,目标URL,一系列的断言和过滤器组成,如果断言为true则匹配该路由

Predicate(断言)

参考的是java8的java.util.function.Predicate
开发人员可以匹配HTTP请求中的所有内容(例如请求头或者请求参数),如果请求与断言想匹配则路由

Filter(过滤)

指的是Spring框架中GatewayFilter的实例,使用过滤器,可以请求被路由器前或者之后对请求进行修改

Zuul

Zuul1基于servlet阻塞I/O的API Gateway,且进入维护
Zuul2虽然基于非阻塞I/O,但是还没有发布,且SpringCloud没有整合

优点

基于Spring Framework5, Project Reactor 和SpringBoot 2.0 进行构建
动态路由:能够匹配任何请求属性
可以对路由指定Predicate(断言) 和 Filter(过滤器)
继承Hystrix的断路器功能
集成SpringCloud服务发现功能
易于编写的Predicate(断言) 和 Filter(过滤器)
请求限流功能
支持路由重写

作用

可以不对外开放服务端,只对外开放网关

Spring Cloud Gateway工作流程

Spring Cloud Gateway工作流程.png

使用

1、 新建网关模型
2、 pom引入Gateway

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

3、将网关注册进eureka/Zookeeper/Consul
4、由yml网关配置。在yml中加入

spring: 
  cloud:
    gateway:
      routes:
        - id: payment_routh #路由的id,没有固定规则但要求唯一,建议配合服务名
        -url: http://localhost:8001 #匹配后提供服务的路由地址
        -predicates:
          - Path=/payment/get/** #断言,路径相匹配的进行路由

        - id: payment_routh2 #路由的id,没有固定规则但要求唯一,建议配合服务名
        -url: http://localhost:8001 #匹配后提供服务的路由地址
        -predicates:
          - Path=/payment/1b/** #断言,路径相匹配的进行路由

5、测试
在网关中,不需要springboot的web和actuator,否则启动报错。在pom中移除即可
–启动eureka/Zookeeper/Consul、网关、服务端
–通过网关访问服务端

6、用代码配置,创建一个配置类

@Configuration
public class GatwayConfig{
   
  @Bean
  public RouteLocator customRouteLocator(RouteLocatorBuilder routeLocatorBuilder){
   
    RouteLocatorBuilder.Builder routes = routeLocatorBuilder.routes();
    
    routes .route("path_route",r -> r.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值