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月前
|
前端开发 Java API
Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
本文解析了Spring Cloud Gateway中出现“Unsupported transfer encoding: chunked”错误的原因,指出该问题源于Feign依赖的HTTP客户端与服务端的`chunked`传输编码不兼容,并提供了具体的解决方案。通过规范Feign客户端接口的返回类型,可有效避免该异常,提升系统兼容性与稳定性。
168 0
|
3月前
|
缓存 监控 Java
说一说 SpringCloud Gateway 堆外内存溢出排查
我是小假 期待与你的下一次相遇 ~
446 5
|
3月前
|
Java API Nacos
|
2月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
708 0
|
6月前
|
前端开发 Java 数据库
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——Thymeleaf 介绍
本课介绍Spring Boot集成Thymeleaf模板引擎。Thymeleaf是一款现代服务器端Java模板引擎,支持Web和独立环境,可实现自然模板开发,便于团队协作。与传统JSP不同,Thymeleaf模板可以直接在浏览器中打开,方便前端人员查看静态原型。通过在HTML标签中添加扩展属性(如`th:text`),Thymeleaf能够在服务运行时动态替换内容,展示数据库中的数据,同时兼容静态页面展示,为开发带来灵活性和便利性。
289 0
|
2月前
|
缓存 JSON 前端开发
第07课:Spring Boot集成Thymeleaf模板引擎
第07课:Spring Boot集成Thymeleaf模板引擎
350 0
第07课:Spring Boot集成Thymeleaf模板引擎