Spring Cloud 之 Gateway详解

这篇具有很好参考价值的文章主要介绍了Spring Cloud 之 Gateway详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好,我是升仔

前言

在微服务架构中,网关扮演着至关重要的角色。它不仅是服务与外界交流的门户,还负责路由、过滤和安全等重要功能。Spring Cloud Gateway作为Zuul的继任者,凭借其更高的性能和灵活的配置方式,成为了现代微服务架构的首选网关解决方案。在本文中,将深入探讨Spring Cloud Gateway的关键特性,包括路由、过滤器、断言、安全性和限流机制。

替代Zuul的新网关

为什么选择Spring Cloud Gateway

  1. 性能优越:Gateway基于WebFlux框架,使用非阻塞API,性能相比Zuul有显著提升。
  2. 灵活配置:支持编程式和声明式两种配置方式,易于适应不同场景的需求。
  3. 功能丰富:提供了更多内置的过滤器和断言,满足复杂的路由需求。

核心组件

  • 路由器(Router):负责将请求路由到相应的微服务。
  • 过滤器(Filter):在请求发送前或后执行特定的逻辑。
  • 断言(Predicate):用于匹配HTTP请求的某些特定条件。

路由、过滤器和断言

路由配置

路由是Gateway的核心功能,它定义了外部请求如何转发到不同的微服务。例如:

@Bean
public RouteLocator myRoutes(RouteLocatorBuilder builder) {
    return builder.routes()
        .route(p -> p
            .path("/get")
            .filters(f -> f.addRequestHeader("Hello", "World"))
            .uri("http://httpbin.org"))
        .build();
}

这段代码定义了一个简单的路由规则:当请求路径是/get时,添加一个请求头Hello: World,然后将请求转发到http://httpbin.org

过滤器使用

过滤器允许在请求被路由前或后执行一些操作。如上例所示,.filters(f -> f.addRequestHeader("Hello", "World"))就是一个简单的过滤器。

断言的作用

断言用于判断请求是否符合某些条件,只有符合条件的请求才会被路由。例如:.path("/get")就是一个路径匹配断言。

网关安全和限流

安全配置

Spring Cloud Gateway可以与Spring Security结合,实现网关层面的安全控制。例如,可以通过配置认证和授权规则来保护API。

@Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
    http
        .authorizeExchange()
        .pathMatchers("/anything/**").authenticated()
        .anyExchange().permitAll()
        .and()
        .csrf().disable();
    return http.build();
}

这段代码配置了一个简单的安全规则:路径匹配/anything/**的请求需要进行身份验证,其他请求则无需验证。

限流机制

限流是网关的另一个重要功能,用于防止服务被过量请求压垮。Gateway提供了多种限流策略,例如基于请求的数量或者请求者的IP地址。

@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
    return builder.routes()
        .route(r -> r.path("/throttle")
            .filters(f -> f.requestRateLimiter(c -> c.setRateLimiter(redisRateLimiter())))
            .uri("http://httpbin.org"))
        .build();
}

这段代码定义了一个限流规则:对于路径/throttle的请求,通过redisRateLimiter()方法提供的限流策略进行处理。

结语

Spring Cloud Gateway不仅是Zuul的优秀替代品,更是现代微服务架构中不可或缺的组成部分。它通过高效的路由、灵活的过滤器和精确的断言,结合了强大的安全和限流机制,为微服务提供了坚实的网关支持。随着云原生技术的不断发展,Spring Cloud Gateway将继续发挥其重要作用,助力企业构建高效、安全的微服务架构。

最后说一句(求关注,求赞,别白嫖)

最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。

这是大佬写的,7701页的BAT大佬写的刷题笔记,让我offer拿到手软

本文已收录于我的技术网站,next-java.com, 有大厂完整面经,工作技术等经验分享

求一键三连:点赞、分享、收藏

点赞对我真的非常重要!在线求赞,加个关注非常感激文章来源地址https://www.toymoban.com/news/detail-830369.html

到了这里,关于Spring Cloud 之 Gateway详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Cloud Gateway 过滤器详解

    Spring Cloud Gateway根据作用范围划分为:GatewayFilter和GlobalFilter 由filter工作流程点,可以知道filter有着非常重要的作用,在“pre”类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等,在“post”类型的过滤器中可以做响应内容、响应头的修改,日志的输

    2023年04月08日
    浏览(40)
  • Spring Cloud Gateway过滤器GlobalFilter详解

    一、过滤器的场景 在springCloud架构中,网关是必不可少的组件,它用于服务路由的转发。对客户端进行屏蔽微服务的具体细节,客户端只需要和网关进行交互。所以网关顾名思义,就是网络的一个关卡。它就是一座城的城门守卫。所以这个守卫就可以做很多工作,比如对来访

    2024年02月14日
    浏览(42)
  • SpringCloud - Spring Cloud 之 Gateway网关,Route路由,Predicate 谓词/断言,Filter 过滤器(十三)

    阅读本文前可先参考 ​​​​​​SpringCloud - Spring Cloud根/父项目,开发准备(二)_MinggeQingchun的博客-CSDN博客 SpringCloud - Spring Cloud 之 Gateway网关(十三)_MinggeQingchun的博客-CSDN博客 Web 有三大组件(监听器 过滤器 servlet),Spring Cloud GateWay 最主要的功能就是路由转发,而在定义

    2024年02月14日
    浏览(67)
  • Spring Cloud Gateway GlobalFilter(全局过滤器)详解(官方原版)

    GlobalFilter接口具有与GatewayFilter相同的签名。这些是有条件地应用于所有路由的特殊过滤器。 当请求与路由匹配时,过滤web处理程序会将GlobalFilter的所有实例和GatewayFilter的所有路由特定实例添加到过滤器链中。这个组合过滤器链由org.springframework.core.Ordered接口排序,您可以通

    2024年02月09日
    浏览(45)
  • spring cloud gateway中出现503 spring cloud gateway中出现503

    当搭建网关模块的时候出现503的错误的最大的可能就是没有设置负载均衡的依赖包  原先搭建的时候采用的是下面的方式进行设置的 上面的这种方式可以直接进行注册和发现,但是要求必须导入下面的依赖 希望简单的随笔能够帮助你!

    2024年02月11日
    浏览(52)
  • 【Spring Cloud 八】Spring Cloud Gateway网关

    【Spring Cloud一】微服务基本知识 【Spring Cloud 三】Eureka服务注册与服务发现 【Spring Cloud 四】Ribbon负载均衡 【Spring Cloud 五】OpenFeign服务调用 【Spring Cloud 六】Hystrix熔断 【Spring Cloud 七】Sleuth+Zipkin 链路追踪 在项目中是使用了Gateway做统一的请求的入口,以及统一的跨域处理以及

    2024年02月12日
    浏览(48)
  • Spring Cloud Gateway 超时、CORS配置 | Spring Cloud 17

    Spring Cloud Gateway 可以为所有路由配置 Http 超时(响应和连接) ,并为每个特定路由覆盖设置。 配置全局 http 超时: connect-timeout 必须 以毫秒为单位 指定。 response-timeout 必须指定为 java.time.Duration 使用示例:

    2024年02月14日
    浏览(55)
  • Spring Cloud Gateway

    目录 一、Spring Cloud Gateway 1、网关介绍 2、GateWay 3、GateWay项目搭建 4、GateWay配置路由的两种方式 4.1、YML配置 4.2、配置类 5、GateWay实现负载均衡 5.1、自动负载均衡 5.2、手动负载均衡 6、GateWay断言Predicate 7、GateWay的Filter         在 微服务架构 中,一个 系统会被拆分为很多

    2024年02月10日
    浏览(50)
  • 浅谈Spring Cloud Gateway

    网关:用户和微服务的桥梁 网关的核心是一组过滤器,按照先后顺序执行过滤操作。 Spring Cloud Gateway是基于webFlux框架实现,而webFlux框架底层则使用了高性能的Reactor模式通信框架的Netty Spring Cloud Gateway是Spring Cloud生态系统中的一个API网关,它基于Spring Framework 5,Spring Boot 2和P

    2024年02月11日
    浏览(45)
  • Spring Cloud Gateway学习

    传统的单体架构只有一个服务开放给客户端调用,但是在微服务架构体系中是将一个系统拆分成多个微服务,那么作为客户端如何去调用这些微服务呢?如果没有网关的存在,就只能在本地记录每个微服务的调用地址。 无网关的微服务架构存在的问题: 客户端多次请求不同

    2024年02月07日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包