文章目录


Spring Cloud Alibaba - 23 Gateway初体验_war包


概述

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

Spring Cloud Alibaba - 23 Gateway初体验_spring_02

重要的事情说三遍。

Spring Cloud Alibaba - 23 Gateway初体验_spring_03


网关的作用

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

Spring Cloud Alibaba - 23 Gateway初体验_微服务_04


官网

​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 # 打开端点详情

Spring Cloud Alibaba - 23 Gateway初体验_war包_05

其他工程 & 验证

分别启动

artisan-cloud-gateway 【8888】

artisan-cloud-gateway-order【8080】

artisan-cloud-gateway-product【8084】

Spring Cloud Alibaba - 23 Gateway初体验_微服务_06

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

Spring Cloud Alibaba - 23 Gateway初体验_gateway_07

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

Spring Cloud Alibaba - 23 Gateway初体验_war包_08

我们调整下参数,开启拉取nacos配置

Spring Cloud Alibaba - 23 Gateway初体验_gateway_09

重启应用,重新访问

Spring Cloud Alibaba - 23 Gateway初体验_gateway_10

如果我们 禁用网关呢?

Spring Cloud Alibaba - 23 Gateway初体验_war包_11

重启应用,重新访问

Spring Cloud Alibaba - 23 Gateway初体验_spring cloud_12


参数解读

spring.cloud.gateway.discovery.locator.enabled

Spring Cloud Alibaba - 23 Gateway初体验_spring cloud_13

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

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

Spring Cloud Alibaba - 23 Gateway初体验_微服务_14

spring.cloud.gateway.enabled

Spring Cloud Alibaba - 23 Gateway初体验_spring cloud_15

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

Spring Cloud Alibaba - 23 Gateway初体验_war包_16


转发过程

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

Spring Cloud Alibaba - 23 Gateway初体验_spring cloud_17


源码

​https://github.com/yangshangwei/SpringCloudAlibabMaster​

Spring Cloud Alibaba - 23 Gateway初体验_spring cloud_18