使用Spring Cloud Gateway实现路由和负载均衡。

长按关注《Java学研大本营》

Spring Cloud Gateway是基于Spring framework 5、Project Reactor和Spring Boot 2.0构建的API网关实现。它取代了之前使用的spring-cloud-netflix-zuul。请访问下面的链接了解更多详情。

Spring Cloud Greenwich.RC1现已发布。(https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now#spring-cloud-netflix-projects-entering-maintenance-mode)

还有一些其他的API网关实现,如Kong、Tyk、Apigee等,它们并不基于Spring Cloud。但是本讨论完全基于Spring团队创建的开源Spring Cloud Gateway。

一、简介

Spring Cloud Gateway是非阻塞式的,即它的设计、编写方式绝不会阻塞主线程。相反,这些线程始终可以为请求提供服务,并在后台异步处理请求,一旦处理完成就返回响应。

Spring Cloud Gateway提供以下几个功能:

  • 将应用程序中所有服务的路由映射到单个URL。

  • 构建过滤器,可以检查并处理通过网关发出的请求和响应。

  • 构建谓词,这些对象允许我们在执行或处理请求之前检查请求是否满足一组给定的条件。

Spring Cloud Gateway是一个反向代理。反向代理是位于试图访问资源的客户端和资源本身之间的中间服务器。客户端甚至不知道自己正在与服务器通信。反向代理负责捕获客户端的请求,然后代表客户端调用远程资源。简而言之,反向代理就像其他API网关一样,充当所有进入系统的请求的单一入口点,而系统则分为一个或多个微服务。

可以对网关进行配置,以基于与DiscoveryClient兼容的服务注册表中注册的服务创建路由。要启用此功能,我们需要在属性文件中设置以下属性,并确保DiscoveryClient实现位于类路径上并已启用(例如Netflix Eureka、Consul或Zookeeper)。

spring.cloud.gateway.routes[1].uri=lb://inventory-service

如果URL具有lb方案(即lb://myservice),它将使用Spring Cloud ReactorLoadBalancer将名称解析为实际的主机和端口。因此,如果不添加lb方案,负载均衡将无法工作。

七、结语

这就是关于Spring Cloud Gateway中路由和负载均衡的讨论。完整的代码可以在以下的GitHub链接中找到。

https://github.com/purbarunc/Spring-Cloud-Microservice/tree/gateway-loadbalancing

推荐书单

扫码查看活动书单

《Spring Cloud 微服务快速上手》

《Spring Cloud 微服务快速上手》介绍了当下最主流的属于Spring生态的微服务框架,它继承了Spring Boot的优点,开发部署都非常简单。本书内容全面,介绍了微服务架构的发展历程,包含Spring Cloud Netflix 和 Spring Cloud 阿里巴巴的组件,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。在解读核心组件的实现原理的同时,配以案例进行实践。本书内容包含微服务架构和云原生架构,读者在掌握微服务之后,可以进一步掌握云原生知识。

【半价促销中】购买链接:https://item.jd.com/13251159.html

精彩回顾

使用缓存方法大幅提升Spring Boot性能

手把手教你用Spring Boot发送电子邮件

掌握这5点,轻松入门Spring Cloud

10个超级实用的Java代码片段

10个必备的VS Code插件,解锁你的编程潜力

手把手教你开发自己的VSCode插件

长按关注《Java学研大本营》
长按访问【IT今日热榜】,发现每日技术热点

本篇文章来源于微信公众号: Java学研大本营



微信扫描下方的二维码阅读本文

此作者没有提供个人介绍
最后更新于 2024-08-01