Spring Cloud Alibaba 入门学习笔记第四篇

什么是Gateway路由网关

关于Gateway路由网关,这篇文章介绍的非常详细:Gateway网关简介及使用

Spring Cloud Gateway 特性:(官方文档机翻)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
markdown复制代码	基于 Spring Framework 5、Project Reactor 和 Spring Boot 2.0

能够匹配任何请求属性的路由。

谓词和过滤器特定于路由。

断路器集成。

Spring Cloud DiscoveryClient 集成

易于编写谓词和过滤器

请求速率限制

路径重写

Spring Cloud Gateway: 官方文档地址

总的来说就是一个牛皮的基于Spring WebFlux的请求处理框架

简单使用

引入JAR

1
2
3
4
5
6
7
8
9
10
11
12
13
xml复制代码    <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- nacos 注册中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

配置路由

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
yml复制代码server:
port: 8000
spring:
cloud:
gateway:
discovery:
locator:
enabled: true # 开启路由网关服务发现
lower-case-service-id: true # 服务名转为小写
url-expression: 'lb://'+serviceId # 服务调用方式 serviceId表示注册中心的服务名称
routes:
# 服务转发
- id: test-service #必填 路由id
uri: lb://service-a # 必填 对应上面的url-expression 表示调用注册中心里面的名为service-a的服务
predicates: # 必填 至少有一种匹配方式
- Path=/api/** # 匹配所有api开头的路径 (其他匹配方式见官方文档)
filters: # 非必填
- StripPrefix=1 # 将路径的第一个值去掉后转发 例如 /api/getUser 会变成 /getUser
# 路由转发
- id: cookie_route
uri: http://hjljy.cn/ # 转发到http://hjljy.cn/
predicates:
- Cookie=name, hjljy # 如果携带cookie,参数名为name,值为hjljy,则转发
nacos:
server-addr: 127.0.0.1:8848 # 注册中心地址
discovery:
service: gateway

使用测试

1 启动nacos注册中心

2 启动路由网关服务(需要先保证注册中心存在一个名为service-a的服务,并且有个接口 /getUser )
3 访问 127.0.0.1:8000/api/getUser 查看是否返回正确的数据

注意事项

  • 需要去掉对spring-boot-starter-web 的依赖,不能同时存在
  • 服务名避免使用下划线链接

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%