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

相关文章
|
6天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
14天前
|
消息中间件 自然语言处理 Java
知识科普:Spring Cloud Alibaba基本介绍
知识科普:Spring Cloud Alibaba基本介绍
45 2
|
20天前
|
人工智能 开发框架 Java
总计 30 万奖金,Spring AI Alibaba 应用框架挑战赛开赛
Spring AI Alibaba 应用框架挑战赛邀请广大开发者参与开源项目的共建,助力项目快速发展,掌握 AI 应用开发模式。大赛分为《支持 Spring AI Alibaba 应用可视化调试与追踪本地工具》和《基于 Flow 的 AI 编排机制设计与实现》两个赛道,总计 30 万奖金。
|
21天前
|
人工智能 Java API
阿里云开源 AI 应用开发框架:Spring AI Alibaba
近期,阿里云重磅发布了首款面向 Java 开发者的开源 AI 应用开发框架:Spring AI Alibaba(项目 Github 仓库地址:alibaba/spring-ai-alibaba),Spring AI Alibaba 项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。本文将详细介绍 Spring AI Alibaba 的核心特性,并通过「智能机票助手」的示例直观的展示 Spring AI Alibaba 开发 AI 应用的便利性。示例源
|
26天前
|
人工智能 Java API
阿里云开源 AI 应用开发框架:Spring AI Alibaba
阿里云开源 Spring AI Alibaba,旨在帮助 Java 开发者快速构建 AI 应用,共同构建物理新世界。
|
2月前
|
Java 开发者 Spring
Spring Cloud Gateway 中,过滤器的分类有哪些?
Spring Cloud Gateway 中,过滤器的分类有哪些?
39 3
|
1月前
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
35 0
|
2月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
27天前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
139 2
|
3月前
|
缓存 Java Maven
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决