Spring boot 尤里卡服务-地点

Spring boot 尤里卡服务-地点,spring-boot,spring-cloud,netflix-eureka,Spring Boot,Spring Cloud,Netflix Eureka,我对春靴和春云还不熟悉。 我想问一下,我是否可以为多个地点(不同国家)提供一项eureka服务 比如说 一个eureka服务和一个应用程序服务正在运行两次,分别用于斯洛伐克和捷克。 然后我想为那个位置和另一个公共服务提供边缘服务。 可能吗 配置尤里卡服务 spring: application: name: eureka-service server: port: 8761 eureka: instance: preferIpAddress: true cli

我对春靴和春云还不熟悉。 我想问一下,我是否可以为多个地点(不同国家)提供一项eureka服务

比如说 一个eureka服务和一个应用程序服务正在运行两次,分别用于斯洛伐克和捷克。 然后我想为那个位置和另一个公共服务提供边缘服务。 可能吗

配置尤里卡服务

spring:
  application:
    name: eureka-service

server:
  port: 8761
eureka:
  instance:
    preferIpAddress: true
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
配置服务公用

server:
  port: 9082
eureka:
  instance:
    preferIpAddress: true
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
配置服务-a

spring:
  application:
    name: service-a

eureka:
  instance:
    preferIpAddress: true
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
---
spring:
  profiles: sk
server:
  port: 9080
eureka:
  instance:
    metadataMap:
      zone: skZone
---
spring:
  profiles: cz
server:
  port: 9081
eureka:
  instance:
    metadataMap:
      zone: czZone
配置服务-a-apigateway

spring:
  application:
    name: service-a-apigateway
zuul:
  routes:
    book-apigateway:
      serviceId: service-a
      path: /api/**
    book-common-api:
      serviceId: service-common
      path: /common/**

eureka:
  instance:
    preferIpAddress: true
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

---
spring:
  profiles: sk
server:
  port: 9050
eureka:
  instance:
    metadataMap:
      zone: skZone

---
spring:
  profiles: cz
server:
  port: 9051
eureka:
  instance:
    metadataMap:
      zone: czZone

Service-a-apigateway(profile:sk)只能调用Service-a(profile:sk)和Service-common。配置文件(cz)具有相同的行为。这很好。
但当service-a(配置文件:sk)关闭时,service-a-apigateway(配置文件:sk)可以调用service-a(配置文件:cz)。这种行为是不受欢迎的。

我认为是这样,通过在zuul边缘和服务A上设置属性
eureka.instance.metadataMap.zone

“默认情况下,它将用于定位与客户端位于同一区域中的服务器…”


当我运行三个eureka服务,其中一个(common eureka)复制到其余两个服务时,我能够解决这个问题。但我不知道这是不是个好主意


谢谢你的建议。我更新了我的问题。我明白了,你想完全限制它,而不仅仅是喜欢它。默认值是ZonePreferenceServerListFilter,它会回退到另一个区域。您可能可以创建自己的服务器列表过滤器并对其进行配置。请参阅ZonePreferenceServerListFilter的源,然后使用新筛选器重新配置功能区。