title: SpringCloudAlibaba-4-nacos服务注册与发现整合spring-cloud-gateway调用
date: 2020-01-27 13:12:39
tags:

SpringCloudAlibaba

前言

我们前几节主要介绍了nacos注册中心实现服务之间的互相调用,我们这一节通过讲解nacos作为注册中心实现服务路由转发功能。

内容

1.Gateway

2.本节简介

使用SpringCloud GateWay实现如下功能:

1.浏览器通过gateway(8054)端口访问到:provider(8051)服务
2.需要通过网关请求到provider服务,需要使用:LoadBalancerClient Filter

实现如下:

  1. 1.创建项目:nacos-discovery-gateway-server
  2. 2.修改pom.xml:去除spring-boot-starter-web和spring-boot-starter-test,引入:
1
2
3
4
5
6
7
8
9
<!--gateway 网关依赖,内置webflux 依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
```
3. 3.父工程里面添加: <module>nacos-discovery-gateway-server</module>
4. 4.配置gateway路由策略

spring:
application:
name: nacos-discovery-gateway-server
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
gateway:
routes:

- id: nacos-discovery-provider
  uri: lb://nacos-discovery-provider
  predicates:
    - Path=/hello

server:
port: 8054

1
2
3
4
5
6
7
8
9
10
11
5. 5.测试:
http://127.0.0.1:8054/hello?name=123
返回:Hello 123 port:8051
以上说明通过8054的网关访问到了8051的provider服务
6. 6.默认情况下:
我们访问:http://127.0.0.1:8054/provider/hello就可以访问到:http://127.0.0.1:8054/hello,所以我们访问某个微服务时候不能每次都配置一个路由前缀,需要我们统一管理:
方法一:我们通过配置context-path作为微服务路由前缀;比如配置nacos-discovery-provider服务的context

//设置nacos-discovery-gatewayr的application.yml
spring:
application:
name: nacos-discovery-gateway-server
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
gateway:
routes:

- id: nacos-discovery-provider
  uri: lb://nacos-discovery-provider
  predicates:
    - Path=/provider

//设置nacos-discovery-provider的context-path
server:
port: 8051
servlet:
context-path: provider

1
2
3
4
方法二:
我们跳过前缀的第一个uri

spring:
application:
name: nacos-discovery-gateway-server
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
metadata:
name: lengleng
gateway:
routes:

- id: nacos-discovery-provider
  uri: lb://nacos-discovery-provider
  predicates:
    - Path=/provider/**
  filters:
    - StripPrefix=1

```

毕业于<br>相信技术可以改变人与人之间的生活<br>码农一枚