nacos2.1.1-gateway-Sentinel1.8.3实战,其中nacos为本地集群,如果不想弄集群的话,可以直接用单机;
上面链接的工程中包含了consumer,provider和nacos-gateway,还有一个自定义路由的gateway
组件明细:
功能 | 名称 |
注册中心和配置中心 | nacos |
网关 | spring-cloud-gateway |
流量控制、熔断降级、系统负载保护 | Sentinel |
1首先安装nacos2.1.1服务端(建议采用MySQL方式:需要先建好库和表)和sentinel
nacos集群启动后,访问页面http://127.0.0.1:8848/nacos/index.html(默认用户名和密码都是nacos)可以看到如下(我本地是做了三个端口的集群):
2sentinel启动后,访问http://127.0.0.1:8080/#/dashboard(默认用户名和密码都是sentinel),看到页面如下(刚开始没有应用,启动nacos-gateway和provider后调用一次可以看到下图):
3启动nacos后,配置GatewayStarterApplication-dev.yaml和dynamic-routing.json(自定义路由工程gateway需要),然后启动nacos-gateway,provider和customer
#GatewayStarterApplication-dev.yaml
server:
port: 8082
spring:
cloud:
sentinel:
transport:
dashboard: localhost:8080
gateway:
routes:
- id: consumer-api
uri: lb://consumer
predicates:
- Path=/cum/**
filters:
- StripPrefix=1
- id: provider-api
uri: lb://provider
predicates:
- Path=/pvr/**
filters:
- StripPrefix=1
discovery:
locator:
enabled: true #表明gateway开启服务注册和发现的功能,并且spring cloud gateway自动根据服务发现为每一个服务创建了一个router,这个router将以服务名开头的请求路径转发到对应的服务。
lowerCaseServiceId: true #是将请求路径上的服务名配置为小写(因为服务注册的时候,向注册中心注册时将服务名转成大写的了),比如以/service-hi/*的请求路径被路由转发到服务名为service-hi的服务上。
filters:
- StripPrefix=1
nacos:
discovery:
server-addr: 127.0.0.1:8848,127.0.0.1:8838,127.0.0.1:8858
#dynamic-routing.json
{
"refreshGatewayRoute": true,
"routeList": [
{
"id": "consumer-api",
"predicates": [
{
"name": "Path",
"args": {
"_genkey_0": "/cum/**"
}
}
],
"filters": [
{
"name": "StripPrefix",
"args": {
"_genkey_0": "1"
}
}
],
"uri": "lb://consumer",
"order": 0
},
{
"id": "provider-api",
"predicates": [
{
"name": "Path",
"args": {
"_genkey_0": "/api/pvr/**"
}
}
],
"filters": [
{
"name": "StripPrefix",
"args": {
"_genkey_0": "2"
}
}
],
"uri": "lb://provider",
"order": 0
}
]
}
4验证环节: 通过postman请求provider和customer
按照上面的步骤应该可以实现图中的效果,如果中途有任何问题,可以在文章下面留言,另有文章微服务-springcloud-Eureka+config+bus+sleuth+admin,欢迎交流