Spring Cloud Alibaba - 23 Gateway初体验

简介: Spring Cloud Alibaba - 23 Gateway初体验

6735aa4777de402592fbe82e8b40ee3d.png

概述


Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,用于取代Zuul网关。


基于Netty,WebFlux . 由于不是Sevlet容器,不能打成war包, 只支持SpringBoot2.X,不支持1.x

基于Netty,WebFlux . 由于不是Sevlet容器,不能打成war包, 只支持SpringBoot2.X,不支持1.x

基于Netty,WebFlux . 由于不是Sevlet容器,不能打成war包, 只支持SpringBoot2.X,不支持1.x

50e28ab43ab7411aa9129ee6f573a1c9.png


重要的事情说三遍。


网关的作用


网关常见的功能有路由转发、权限校验、限流控制等作用


官网

https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/

来个栗子

创建一个gateWay的工程 artisan-cloud-gateway


step1 搞依赖

  <dependencies>
    <!--gateway -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <!--nacos-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
        </dependency>
     <!--actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>


step2 搞注解 (gateway没有注解)

写个服务发现的注解(高版本也可以不写),gateway没有注解


step3 搞配置

server:
  port: 8888
#gateway注册到nacos上的服务名称
spring:
  application:
    name: api-gateway
  cloud: #nacos
    nacos:
      discovery:
        server-addr: 1.117.97.88:8848
    gateway: #gateway
      discovery:
        locator:
          enabled: false   # 是否可以通过微服务的名称直接调用接口 【默认值false, 建议保持false】
      enabled: true  # 是否开启服务网关
management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: always  # 打开端点详情


其他工程 & 验证

分别启动

artisan-cloud-gateway 【8888】

artisan-cloud-gateway-order【8080】

artisan-cloud-gateway-product【8084】

b7d88d9fa40041fe9d3a3f974bb8e9d9.png


再确认下【artisan-cloud-gateway】的配置文件

a6a8ea24a30144deafcc077c8557753b.png

通过网关地址 端口为8888访问订单微服务


6d7afcd2b00d4d08995211a8abdca7fb.png我们调整下参数,开启拉取nacos配置

c0070bf7b11240cb8823f5060f3e14e0.png

重启应用,重新访问

77f4711b2d7c4a1c9ace52ddeea0c7ef.png

如果我们 禁用网关呢?

db0c41b631bc48a9b54b83a06d14593b.png


重启应用,重新访问

f4b5633297ae40cab355f7bc6c6efb3b.png

参数解读


spring.cloud.gateway.discovery.locator.enabled


57d84aface324bc1ba2274b98a92feb9.png


启网关拉取nacos的服务 即是否可以通过微服务的名称直接调用接口 【默认值false, 建议保持false】

开启了,容易暴漏后端服务


spring.cloud.gateway.enabled

6714ce33aa56404c8a4ba819202c3911.png


网关的开启与关闭 , 需要开启


转发过程


我们简单看下 spring.cloud.gateway.discovery.locator.enabled 设置为true后, 网关是如何处理这些请求的 ,后面再解读源码



275b0a4294cc4b4ab3555721ada18235.png


源码


https://github.com/yangshangwei/SpringCloudAlibabMaster

相关文章
|
2月前
|
JSON Java API
利用Spring Cloud Gateway Predicate优化微服务路由策略
Spring Cloud Gateway 的路由配置中,`predicates`​(断言)用于定义哪些请求应该匹配特定的路由规则。 断言是Gateway在进行路由时,根据具体的请求信息如请求路径、请求方法、请求参数等进行匹配的规则。当一个请求的信息符合断言设置的条件时,Gateway就会将该请求路由到对应的服务上。
156 69
利用Spring Cloud Gateway Predicate优化微服务路由策略
|
15天前
|
人工智能 安全 Java
AI 时代:从 Spring Cloud Alibaba 到 Spring AI Alibaba
本次分享由阿里云智能集团云原生微服务技术负责人李艳林主讲,主题为“AI时代:从Spring Cloud Alibaba到Spring AI Alibaba”。内容涵盖应用架构演进、AI agent框架发展趋势及Spring AI Alibaba的重磅发布。分享介绍了AI原生架构与传统架构的融合,强调了API优先、事件驱动和AI运维的重要性。同时,详细解析了Spring AI Alibaba的三层抽象设计,包括模型支持、工作流智能体编排及生产可用性构建能力,确保安全合规、高效部署与可观测性。最后,结合实际案例展示了如何利用私域数据优化AI应用,提升业务价值。
|
2月前
|
SpringCloudAlibaba 负载均衡 Dubbo
【SpringCloud Alibaba系列】Dubbo高级特性篇
本章我们介绍Dubbo的常用高级特性,包括序列化、地址缓存、超时与重试机制、多版本、负载均衡。集群容错、服务降级等。
【SpringCloud Alibaba系列】Dubbo高级特性篇
|
2月前
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
2月前
|
SpringCloudAlibaba JavaScript Dubbo
【SpringCloud Alibaba系列】Dubbo dubbo-admin安装教程篇
本文介绍了 Dubbo-Admin 的安装和使用步骤。Dubbo-Admin 是一个前后端分离的项目,前端基于 Vue,后端基于 Spring Boot。安装前需确保开发环境(Windows 10)已安装 JDK、Maven 和 Node.js,并在 Linux CentOS 7 上部署 Zookeeper 作为注册中心。
【SpringCloud Alibaba系列】Dubbo dubbo-admin安装教程篇
|
2月前
|
SpringCloudAlibaba Dubbo Java
【SpringCloud Alibaba系列】Dubbo基础入门篇
Dubbo是一款高性能、轻量级的开源Java RPC框架,提供面向接口代理的高性能RPC调用、智能负载均衡、服务自动注册和发现、运行期流量调度、可视化服务治理和运维等功能。
【SpringCloud Alibaba系列】Dubbo基础入门篇
|
26天前
|
人工智能 自然语言处理 Java
Spring Cloud Alibaba AI 入门与实践
本文将介绍 Spring Cloud Alibaba AI 的基本概念、主要特性和功能,并演示如何完成一个在线聊天和在线画图的 AI 应用。
255 7
|
2月前
|
Java Nacos Sentinel
Spring Cloud Alibaba:一站式微服务解决方案
Spring Cloud Alibaba(简称SCA) 是一个基于 Spring Cloud 构建的开源微服务框架,专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。
343 13
Spring Cloud Alibaba:一站式微服务解决方案
|
2月前
|
JavaScript Java Kotlin
深入 Spring Cloud Gateway 过滤器
Spring Cloud Gateway 是新一代微服务网关框架,支持多种过滤器实现。本文详解了 `GlobalFilter`、`GatewayFilter` 和 `AbstractGatewayFilterFactory` 三种过滤器的实现方式及其应用场景,帮助开发者高效利用这些工具进行网关开发。
299 1
|
4月前
|
JSON SpringCloudAlibaba Java
Springcloud Alibaba + jdk17+nacos 项目实践
本文基于 `Springcloud Alibaba + JDK17 + Nacos2.x` 介绍了一个微服务项目的搭建过程,包括项目依赖、配置文件、开发实践中的新特性(如文本块、NPE增强、模式匹配)以及常见的问题和解决方案。通过本文,读者可以了解如何高效地搭建和开发微服务项目,并解决一些常见的开发难题。项目代码已上传至 Gitee,欢迎交流学习。
247 1
Springcloud Alibaba + jdk17+nacos 项目实践