Spring Cloud Alibaba - Gateway 入门案例(二)(Gateway 整合 nacos /(非阿里组件))

Spring Cloud Alibaba - Gateway 入门案例(二)(Gateway 整合 nacos)(非阿里组件)

回溯

上一篇博文讲述了 Gateway 的简单使用,但是有遗留的问题,就是调用的微服务地址竟然是写死的,这样一旦微服务的地址发生更改,那么配置文件也需要更改。

对于这个问题,是不是有点眼熟?对的,前面的博文有讲述,就是为了解决这个问题所以我们引进了服务治理 Nacos 。这篇博文我们就讲述一下 Gateway 和 Nacos 的整合。

Gateway 整合 nacos

在市面上,对于 Gateway 整合 nacos 的用法通常有两种,这边简要介绍一下。

这里的操作都是基于上一篇博客的操作,若有疑问,可以参考SpringCloud Alibaba - Gateway 入门案例(一)(网关介绍 / Gateway 介绍 / Gateway 快速入门)

方式一(复杂/灵活/常用)

首先添加pom依赖,完整pom如下

  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
    </parent>
    
    <dependencies>
        <!--gateway网关 不能引入starter-web-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>
    </dependencies>

然后在启动类添加 @EnableDiscoveryClient

在这里插入图片描述
在配置文件中加上

spring:
	cloud:
	    nacos:
      		discovery:
        		server-addr: 127.0.0.1:8848 #nacos地址
		gateway:
      		discovery:
        		locator:
          			enabled: true #让 gateway可以发现nacos中的微服务

修改之前uri的值,之前的uri值是写死的路径,现在我们可以放上微服务注册在nacos上的服务名。

最终修改后的配置文件如下:

server:
  port: 7777
spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true #让gateway可以发现nacos中的微服务
      routes: # 路由数组  指当请求满足什么样的条件的时候,转发到哪个微服务上
        - id: nacosxfz_route #当前路由标识,要求唯一 (默认值uuid,一般不用,需要自定义)
          uri: lb://test-scz #请求最终要被转发的地址   lb指的是从nacos中按照名称获取微服务,并遵循负载均衡策略
          order: 1 #路由优先级,数字越小,优先级越高
          predicates: #断言 判断条件,返回值是boolean 转发请求要返回的条件 (可以写多个)、
            - Path=/scz_server/** #当请求路径满足path指定的规则时,此路由信息才会正常转发
          filters: #过滤器(在请求传递过程中,对请求做一些手脚)
            - StripPrefix=1 # 在请求转发之前去掉一层路径
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

ps(lb指的是从nacos中按照名称获取微服务,并遵循负载均衡策略)

test-scz 是需要调用的微服务注册在nacos上的名字。

接下来进行测试

在这里插入图片描述
在这里插入图片描述
请求成功,证明 Gateway 整合 nacos 成功。

此方式企业中运用的比较多,原因是 predicatesfilters 可以自定义配置,相对而言较为灵活。这两个参数在后面的章节会进行较为详细的讲解。

方式二(简单/死板/不常用)

为什么简单?因为真的非常简单,步骤和方式一一样,但是!配置文件不用那么多花里胡哨的配置。

routes 可以不用配置!!!

最终yml配置:

server:
  port: 7777
spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true #让gateway可以发现nacos中的微服务
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

在这里插入图片描述

访问成功!

但是:我们要注意,此时它默认 predicates Path 和需要调用的微服务名称相同,所以可以根据访问微服务名称作为路径访问微服务。

因为方便,而抛弃了更灵活的配置,是不是有一点吃了芝麻丢了西瓜呢???

### 回答1: 要想让 Spring Cloud Starter Alibaba Nacos Config 启动,应该在你的项目中正确地配置Nacos服务器的地址,以及相应的Nacos配置文件名称,然后再把 Spring Cloud Starter Alibaba Nacos Config 添加到项目的依赖中。 ### 回答2: Gateway导入spring-cloud-starter-alibaba-nacos-config启动不了可能有以下几个可能引起的原因。 首先,可能是由于没有正确配置Nacos的相关信息导致无法启动。要使用Nacos作为配置中心,需要在配置文件中正确配置Nacos的相关信息,包括Nacos配置中心的地址、命名空间、组等信息。如果这些信息配置不正确或者缺失,Gateway将无法连接到Nacos,并因此无法启动成功。 其次,可能是版本兼容性问题导致的启动失败。Spring Cloud Gatewayspring-cloud-starter-alibaba-nacos-config有不同的版本发布,如果版本不兼容会导致启动失败。建议查看Spring Cloud Gatewayspring-cloud-starter-alibaba-nacos-config的版本兼容性列表,并确保使用兼容的版本。 另外,也可能是由于依赖引入错误导致无法启动。在pom.xml文件中,需要正确引入spring-cloud-starter-alibaba-nacos-config的依赖项,包括正确的groupId、artifactId和version等。如果依赖引入错误或者缺失,Gateway将无法找到相应的类和资源,并因此无法启动成功。 最后,还可能是由于其他配置错误或者环境问题导致的启动失败。例如,可能是网路不可达、Nacos服务异常等。建议检查配置文件和相关环境是否正确,并尝试重启Nacos服务和Gateway服务来解决问题。 总之,要解决Gateway导入spring-cloud-starter-alibaba-nacos-config无法启动的问题,需要仔细检查配置、引入依赖和环境等方面是否正确,并确保版本兼容性。另外,可以查看启动日志或者运行调试工具来获取更多详细的错误信息,从而定位并解决问题。 ### 回答3: 当启动gateway项目时,使用了spring-cloud-starter-alibaba-nacos-config依赖,但却遇到了启动问题。 首先,需要检查是否在项目的pom.xml文件中正确地引入了spring-cloud-starter-alibaba-nacos-config依赖。可以参考官方文档或其他可靠资源,确保依赖的版本和配置正确无误。 其次,需要确认gateway的配置文件中是否正确地配置了Nacos作为配置中心。可以通过检查application.yml文件(或其他相关配置文件)中的配置信息,确保Nacos的相关配置项正确。 另外,还需要检查网关的启动日志,查找可能存在的错误信息。启动日志可能会给出更多的线索,帮助我们找到问题所在。 此外,还要确认Nacos配置中心中是否正确地配置了网关的相关配置。可以登录Nacos控制台,查看与网关相关的配置项是否正确,并确保网关项目可以正确从Nacos配置中心获取配置信息。 最后,如果以上步骤都没有解决问题,可以考虑向开发社区或论坛寻求帮助。在提问时,提供更多的详细信息(如错误日志、配置文件内容等),有助于其他开发者更准确地理解和解决问题。 总之,解决启动问题需要逐一排查可能存在的原因,包括依赖、配置和日志等方面,并参考文档和其他可靠资源来确保正确性。如果自己无法解决,可以向开发社区寻求帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值