文章目录
- 参数解读
概述
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
重要的事情说三遍。
网关的作用
网关常见的功能有路由转发、权限校验、限流控制等作用
官网
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】
再确认下【artisan-cloud-gateway】的配置文件
通过网关地址 端口为8888访问订单微服务
我们调整下参数,开启拉取nacos配置
重启应用,重新访问
如果我们 禁用网关呢?
重启应用,重新访问
参数解读
spring.cloud.gateway.discovery.locator.enabled
启网关拉取nacos的服务 即是否可以通过微服务的名称直接调用接口 【默认值false, 建议保持false】
开启了,容易暴漏后端服务
spring.cloud.gateway.enabled
网关的开启与关闭 , 需要开启
转发过程
我们简单看下 spring.cloud.gateway.discovery.locator.enabled
设置为true
后, 网关是如何处理这些请求的 ,后面再解读源码
源码
https://github.com/yangshangwei/SpringCloudAlibabMaster