当前位置: 首页 > news >正文

(四)Spring Cloud Alibaba 2023.x:高效构建 Gateway 网关服务

目录

前言

准备

项目集成

pom.xml引入依赖

启动类

yml文件添加网关配置

修改消费者FeignService类

结果验证


前言

Spring cloud alibaba 体系中构建微服务,我们使用Spring Cloud Gateway 作为服务网关, Gateway是Spring 官方推出的一款基于 WebFlux 的高性能、轻量级网关框架,支持动态路由、限流熔断、过滤器链等功能,且与 Spring 生态深度集成,易于上手并具有广泛的社区支持 。

Tips!

为什么不使用阿里系的网关 Higress ,而是选择spring cloud gateway?
        Alibaba 没有重复造轮子去开发一个类似 Gateway 的通用网关,而是专注于更前沿的 云原生场景,打造了 Higress。Higress 针对 Kubernetes 场景进行了深度优化,支持 Istio、服务网格等技术,是为云原生时代的分布式服务架构量身定制的网关解决方案。

        Spring Cloud Gateway 已经是一个非常成熟和高效的网关解决方案,能够满足大多数微服务场景的需求,与Spring 生态的深度整合,适配性和易用性都非常优秀。因此,在传统的 Spring 微服务体系中,使用 Gateway 已经足够。

        这种明确的分工让两者在各自的场景中都发挥了最大优势,而不是功能上的重复建设。在spring cloud alibaba 的官方github试例代码中也是使用的Gateway。

准备

  • jdk17+
  • maven3.9.4+
  • idea2023
  • spring cloud: 2023.0.1.0
  • spring cloud alibaba: 2023.0.1

源码获取:GitHub - RemainderTime/spring-cloud-alibaba-base-demo: 基于spring cloud alibaba生态快速构建微服务脚手架

项目集成

创建一个网关服务:cloud-gateway

那么目前有三个服务项目:

pom.xml引入依赖

在网关服务gateway中引入依赖

<!-- API网关 gateway-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- Spring Boot Actuator -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 负载均衡 loadbalancer -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

启动类

启动类上依然加上注解@EnableDiscoveryClient作为一个服务注册到nacos中

yml文件添加网关配置

server:port: 9090
spring:application:name: cloud-gateway  # 网关服务的名称cloud:gateway:discovery:locator:enabled: true  # 开启自动服务发现routes:- id: http-producer-routeuri: lb://http-cloud-producer #生产者服务名称predicates:- Path=/test/**  # 匹配路径 /test/...
#          filters:
#            - RewritePath=/test/(?<segment>.*), /test/feign/${segment}  # 重写为生产者的接口路径

uri:这个属性为生产者在注册中心的服务名称

Path:这个属性为生产者提供的接口路径路由

注册中心配置相关和前面服务一样,可参考前面的nacos集成篇

修改消费者FeignService类

@FeignClient(name = "cloud-gateway")
public interface FeignService {}

主要就是修改注解中的服务名称,将之前的生产者服务名称修改为网关的服务名称。

消费者向请求网关服务,在通过网关服务路由转发到生产者

结果验证


至此网关配置成功了

http://www.lryc.cn/news/505269.html

相关文章:

  • Android XR 是什么?解释它的功能、设备、开发工具等
  • 【算法】实体关系抽取
  • Codeforces Round 993 (Div. 4)题解
  • 【计算机网络】期末考试预习复习|中
  • 从零用java实现 小红书 springboot vue uniapp (4)个人主页优化
  • 为“行车大脑”降温:Simdroid-EC助力汽车ECU设计研发
  • 视频汇聚平台:Liveweb视频流媒体平台视频监控系统解决方案
  • 通过解调使用正则化相位跟踪技术进行相位解包裹
  • VMware替代 | 双一流大学采用ZStack ZSphere虚拟化平台加速医学应用算法分析
  • UNIAPP框架uView初步集成与开发设计
  • C05S08-LVS负载均衡
  • C 语言代码诗韵:数字功能的雅集华章
  • ps案例制作
  • 【C++】列表初始化、声明、范围for、array容器
  • C++智能指针详解
  • 基础库正则表达式
  • 【spring专题】spring如何解析配置类和扫描包路径
  • MyBatis框架的入门
  • 代码随想录D22-23 回溯算法01-02 Python
  • 【网络云计算】2024第50周-每日【2024/12/13】小测-理论-写10个Bash Shell脚本-解析
  • MATLAB转换C语言--问题(一)FFT 和 IFFT 的缩放因子
  • 轻松上手:使用 Vercel 部署 HTML 页面教程
  • 如何运用 HTM?
  • 12.16【net】【study】
  • 2023和2024历年美赛数学建模赛题,算法模型分析!
  • Node.js内置模块
  • 测评|携程集团25年社招在线测评北森题库、真题分析、考试攻略
  • 快速启动Go-Admin(Gin + Vue3 + Element UI)脚手架管理系统
  • 数据分流:优化数据处理流程的关键策略
  • RabbitMQ如何构建集群?