当前位置: 首页 > 知识库问答 >
问题:

Eureka服务器和Spring Cloud API网关如何相互通信?

邢心水
2023-03-14

在Spring Boot微服务架构中,我们通常通过执行Eureka将每个微服务(其许多实例)注册到Eureka服务器。客户使用eureka=true注册,eureka。客户fetch registry=true和eureka。客户服务URL。默认区域=http://localhost:8761/eureka。因此,Eureka充当这些服务(服务名称、主机名及其IP)的服务注册表。

Spring Cloud API网关充当任何微服务调用的单个入口点。它可以作为代理服务,将请求路由到相关的微服务,抽象生产者的详细信息。它只有路由信息,那么Spring Cloud API gateway如何知道调用哪个微服务实例?API网关和Eureka如何通信和负载平衡?

spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true
      routes:
      - id: user-service
        uri: lb://user-service
        predicates:
        - Path=/users/**
        
      - id: order-service
        uri: lb://department-service
        predicates:
        - Path=/departments/**

共有2个答案

双志强
2023-03-14

将Gatway注册到Eureka Server

罗光华
2023-03-14
spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true

在API网关中启用发现定位器后,除非绝对需要,否则不必手动配置路由。

API网关知道将传入请求路由到哪个Eureka服务的方式如下:

假设Orders Service运行在http://localhost:8080API Gateway运行在Orders Servicehttp://localhost:8082Eureka Service名称-order-service上

然后,如果order-service getOrders endpoint:http://localhost:8080/orders,则启用Discovery Locator后,需要使用以下URL通过API网关路由请求:https://localhost:8082/order-service/orders,即{ApiGatewayHost}/{EurekaServiceId}/{ActualEndpoint}。

 类似资料:
  • 我一直在试图找到一个与eureka服务器集成的spring cloud gateway的运行示例,以及一些Hystrix示例,但到目前为止我还没有找到。有什么地方可以找到它吗?我真的很想看到spring cloud gateway投入使用,取代我目前的Zuul API服务。 谢谢!

  • iam使用spring boot gateway与eureka服务器,但当我试图从gateway访问某个api时,它不使用gateway路由的路径,而是使用服务名 但如果我将“book”替换为“books”(服务名),它就会起作用

  • spring webclient无法从eureka服务器的服务实例名称中检索实际主机,出现以下异常: Spring启动版本:2.2.3。BUILD-SNAPSHOT

  • 如何包含Eureka服务器 要在项目中包含Eureka服务器,请使用组org.springframework.cloud和工件id spring-cloud-starter-eureka-server的启动器。有关 使用当前的Spring Cloud发布列表设置构建系统的详细信息,请参阅Spring Cloud项目页面。 如何运行Eureka服务器 示例eureka服务器; @SpringBoot