在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/**
将Gatway注册到Eureka Server
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