精通springcloud:使用API网关进行路由和过滤

本文探讨了API网关在微服务架构中的重要性,特别是Spring Cloud中的Zuul和新推出的Spring Cloud Gateway。Zuul作为成熟的API网关解决方案,提供路由、负载均衡和跨领域问题处理。而Spring Cloud Gateway建立在更现代的技术栈上,旨在简化API路由和管理。文中详细介绍了如何使用Zuul进行静态路由、服务发现集成、自定义过滤器配置,并对比了Spring Cloud Gateway的特性。最后,讨论了Zuul的管理端点和过滤器功能。
摘要由CSDN通过智能技术生成

使用API网关进行路由和过滤

本章将讨论基于微服务架构的下一个重要元素,即API网关(API Gateway)。这不是我们在实践中第一次遇到这个元素。本书在第4章“服务发现”中实现了一个简单的网关模式,目的是介绍分区机制如何在使用Eureka的情况下进行服务发现。我们还曾经使用过Netflix的Zuul库,它是一个基于Java虚拟机(Java Virtual Machine, JVM) 的路由器和服务器端负载均衡器。Netlix 设计了Zuul,以提供身份验证、压力测试和金丝雀测试(Canary Test) 、动态路由,以及主动流量管理/主动多区域流量管理( Active Multregional Traffic Management)等功能。虽然没有明确说明,但它也可以充当微服务架构中的网关,其主要任务是从外部客户端隐藏系统的复杂性。

 

事实上,到目前为止,Zuul 在Spring Cloud框架内的API网关模式实现方面没有任何竞争对手。但是,随着一个名为Spring Cloud Gateway的新项目的逐步发展,情况正在发生变化。这个新项目建立在Spring Framework 5. Project Reactor和Spring Boot 2.0的基础之上。该库的最近一个稳定版本是1.0.0,但目前正在开发的版本2.0.0中则有许多重要的变化,它仍然处于里程碑阶段。Spring Cloud Gateway旨在提供一种简单而有效的方法来路由API, 并提供与其相关的跨领域问题,如安全性、监控/指标和弹性。虽然该解决方案相对较新,但绝对值得关注。

本章将要讨论的主题包括:

口基于URL的静态路由和负载均衡。

口将Zuul和Spring Cloud Gateway与服务发现集成。

口使用Zuul创建自定义过滤器。

口使用Zuul自定义路由配置。

口在路由失败的情况下提供Hytrix后备。

口对Spring Cloud Gateway中包含的主要组件——谓词和网关过滤器的说明。

使用Spring Cloud Netflix Zul

SpringCloud实现了一个嵌入式Zuul代理,允许前端应用程序对后端服务的代理调用。此功能对外部客户端非常有用,因为它隐藏了系统复杂性,有助于避免为所有微服务独立管理跨源资源共享(Cross-Origin Resource Sharing,CORS) 和身份验证问题。要启用它,可以使用@EnableZulProxy注解Spring Boot 的main类,并将传入的请求转发到目标服务。当然,Zuul也可以与Ribbon负载均衡器、Hystrix 断路器和服务发现(如使用Eureka)集成在一起。

构建网关应用程序

现在不妨先回到第7章中的示例,将最后一个元素附加到基于微服务的架构: API网关中。我们尚未考虑的是外部客户端调用服务的方式。首先,我们不希望公开系统内运行的所有微服务的网络地址。我们还可以在一个地方执行某些操作,如请求身份验证或设置跟踪标头。对于上述问题的解决方案是仅共享单个边缘网络地址,该地址会将所有传入请求代理到适当的服务。当前示例的系统架构如图8.1所示。

 

对于当前示例的这些需求,不妨回过头来参考一下第7章已经讨论过的项目。它可以在GitHub的master分支(tps:/ithib com/piomin/sample-spring -cloud-comm.gt)中找到。现在,我们将为该项目添加-一个名为gateway-service 的新模块。第一步就是将Zuul包含在Maven依赖项中,这里必须使用spring- cloud-starter-zuul启动器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值