快速搭建一个SpringGateway网关
☝️搭建脚手架
我们可以去 Spring initializer 网站或者用 IDEA 来快速创建出一个 Spring Cloud Gateway 项目。
这里我们选择的注册中心是 Zookeeper,你也可以自己选择其他的注册中心来注册你的项目,比如阿里巴巴的 Nacos 等。
配置完相关信息后,点击下面的 GENERATE
按钮就可以导出项目的 zip
压缩包,解压后用 IDE 打开。
打开后就是这个样子:
✌️配置路由
Ymal 方式配置
为了方便配置,我们把 application.properties
改成 application.yml
。
然后配置一个转发到百度到路由。
spring:
cloud:
gateway:
routes:
- id: route-demo
uri: https://baidu.com
predicates:
- Path=/**
在配置中,我加来一个谓词 Path
,表示所有当请求都会匹配到这个路由下,然后转发到 uri
配置到网址里。所以当我们打开浏览器访问 [http://localhost:8080/](http://localhost:8080/)
是就会自动跳转到百度到首页。
Java 代码方式配置
除了用配置文件配置路由外,我们还可以用代码的方式来配置路由。
下面来展示一下代码方式配置的路由:
@Bean
public RouteLocator routesConfig(RouteLocatorBuilder builder){
return builder.routes()
.route("route-demo",r -> r.path("/**").uri("https://baidu.com"))
.build();
}
这几行代码实现的是和上面配置一样的功能,当访问 [http://localhost:8080/](http://localhost:8080/)
时也会跳转到百度首页。
👌注册到 Zookeeper
接下来演示一下如何把网关注册到 Zookeeper。
首先在我们本地搭建好 Zookeeper,我这边是直接用 Docker 启动了一个 Zookeeper。
然后在配置文件添加如下配置:
spring:
application:
name: weidain-gateway
cloud:
zookeeper:
connect-string: localhost:2181
上面到 weidain-gateway
是我们注册到 Zookeeper 上到服务名,地址 [localhost:2181](http://localhost:2181)
是我们本地 Zookeeper 注册中心到地址。
启动项目后,我们用 Zookeeper 可视化工具就可以看到注册中心多了一个 services
节点,节点下面有我们注册上去的 weidain-gateway
服务
下面就是我们网关服务注册到 Zookeeper 到数据:
{
"name": "weidain-gateway",
"id": "8c802a81-12e7-4f72-9034-aee00c0745bb",
"address": "169.254.238.114",
"port": 8080,
"sslPort": null,
"payload": {
"@class": "org.springframework.cloud.zookeeper.discovery.ZookeeperInstance",
"id": "application-1",
"name": "weidain-gateway",
"metadata": {
"instance_status": "UP"
}
},
"registrationTimeUTC": 1620118042689,
"serviceType": "DYNAMIC",
"uriSpec": {
"parts": [
{
"value": "scheme",
"variable": true
},
{
"value": "://",
"variable": false
},
{
"value": "address",
"variable": true
},
{
"value": ":",
"variable": false
},
{
"value": "port",
"variable": true
}
]
}
}