spring gateway 和 nacos 之间的关系?

spring gateway 和 nacos 之间的关系?

项目中我部署了10个gateway的实例,和一个单机的nacos,所有服务都注册到nacos中,gateway中配置了其它服务的路由。

我通过域名映射到一个gateway实例的的访问地址,那我在通过域名访问服务的时候其它的9个gateway实例有没有起到负载均衡的作用呢?

gateway和nacos的服务流向是怎么样的呢?

Gateway和Nacos之间的关系是,Gateway将从Nacos中获取服务的路由信息,然后将请求转发到相应的服务上。

九个Gateway实例是不会起到负载均衡的作用的,因为它们只负责将请求转发到相应的服务上,而不负责处理负载均衡的问题。

服务流向是:客户端发起请求 --> Gateway根据Nacos中的路由信息将请求转发到相应的服务 --> 服务处理客户端请求 --> Gateway将服务处理的结果返回给客户端。

Spring Gateway和Nacos之间的关系是一个前端负载均衡器与服务注册与发现的组合。Nacos维护了一个注册中心,所有的微服务都在Nacos中注册,从而提供服务发现功能。而Spring Gateway作为前端负载均衡器,通过Nacos发现其它微服务,根据配置的路由规则对外提供服务。

项目中有10个Gateway实例,如果你通过域名映射到了一个Gateway实例的访问地址,其他9个Gateway实例可能会被访问到,也可能不会,这取决于域名的解析器对于这10个Gateway实例的负载均衡策略。

从服务流向上看,客户端通过域名请求访问服务,请求首先经过域名解析器,到达一个Gateway实例,该Gateway实例通过Nacos查询微服务的地址,根据配置的路由规则对请求进行转发,最后到达真正的微服务。

  • 你看下这篇博客吧, 应该有用👉 :Spring Gateway集成 Nacos注册中心不能够发现服务的问题解决
  • 除此之外, 这篇博客: Spring cloud gateway实现Api网关(nacos+gateway)中的 2.2.1 bootstrap.yml (nacos+gateway)(最终版) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • server:
      port: 7000
    spring:
      application:
        name: gateway-server # 应用名称
      cloud:
        gateway:
          discovery:
            locator:
              # 是否与服务发现组件进行结合,通过  serviceId 转发到具体的微服务
              enabled: true                       #是否开启基于服务发现得路由规则
              lower-case-service-id: true         # 是否将服务名称转小写
        nacos:
          # 注册中心配置
          discovery:
            server-addr: localhost:8848 # nacos 注册中心地址
            namespace: 0e883794-4414-4d41-a177-6d335d304e42 # 开发环境  指定 具体的命名空间id
            #group: DEFAULT_GROUP # 分组 默认分组可以省略
          # 配置中心配置
          config:
            #enabled: false #关闭配置
            server-addr: localhost:8848 # Nacos 配置中心地址
            namespace: 0e883794-4414-4d41-a177-6d335d304e42 # 开发环境  指定 具体的命名空间id
            group: TEST_GROUP # 分组
            name: test-config-dev #dataid 内容
    
    

人性化理解:
spring gateway :前端门面。
nacos :后端门面。