背景
当我的项目是分区部署时,心愿一个机房内的服务优先调用同一个机房内的服务,当同一个机房的服务不可用的时候,再去调用其它机房的服务,防止跨区拜访

eureka server1配置

spring:  application:    name: eureka1server:  port: 7101eureka:  instance:    prefer-ip-address: true    hostname: localhost  client:    # 是否容许注册到eureka上    register-with-eureka: false    # 是否从Eureka Server获取注册的服务信息    fetch-registry: false    #如果prefer-same-zone-eureka为false,依照service-url下的list取第一个注册核心来注册,并维持心跳检测,不会再向list内的其余的注册核心注册和维持心跳,只有在第一个注册失败的情 况,才会顺次向其余注册核心注册,总共三次,如果三个service-url都没有注册胜利,则注册失败,每隔一个心跳工夫会再次尝试。    #如果prefer-same-zone-eureka为true,先通过region取availability-zones内的第一个zone,而后通过这个Zone取service-url下的List,并向list内的第一个注册核心注册和维持心跳,总共三次,如果三个service-url都没有注册胜利,则注册失败,每隔一个心跳工夫会再次尝试。    prefer-same-zone-eureka: true    #地区,名称可自定义    region: myRegion    # 区域定义,配置须要按程序来    availability-zones:      myRegion: beijing,shanghai    service-url:      beijing: http://localhost:7101/eureka/      shanghai: http://localhost:7102/eureka/

eureka server2配置

spring:  application:    name: eureka2server:  port: 7102eureka:  instance:    prefer-ip-address: true    hostname: localhost  client:    # 是否容许注册到eureka上    register-with-eureka: false    # 是否从Eureka Server获取注册的服务信息    fetch-registry: false    #如果prefer-same-zone-eureka为false,依照service-url下的list取第一个注册核心来注册,并维持心跳检测,不会再向list内的其余的注册核心注册和维持心跳,只有在第一个注册失败的情 况,才会顺次向其余注册核心注册,总共三次,如果三个service-url都没有注册胜利,则注册失败,每隔一个心跳工夫会再次尝试。    #如果prefer-same-zone-eureka为true,先通过region取availability-zones内的第一个zone,而后通过这个Zone取service-url下的List,并向list内的第一个注册核心注册和维持心跳,总共三次,如果三个service-url都没有注册胜利,则注册失败,每隔一个心跳工夫会再次尝试。    prefer-same-zone-eureka: true    #地区,名称可自定义    region: myRegion    # 区域定义,配置须要按程序来    availability-zones:      myRegion: shanghai,beijing    service-url:      beijing: http://localhost:7101/eureka/      shanghai: http://localhost:7102/eureka/

service1(优先注册上海所在区域)配置

spring:  application:    name: serviceserver:  port: 7111eureka:  instance:    prefer-ip-address: true    metadata-map:    # 定义所属zone      zone: shanghai  client:    register-with-eureka: true    fetch-registry: true    prefer-same-zone-eureka: true    region: myRegion    availability-zones:      # 留神程序      myRegion: shanghai,beijing    service-url:      beijing: http://localhost:7101/eureka/      shanghai: http://localhost:7102/eureka/

service2(优先注册北京所在区域)配置

spring:  application:    name: serviceserver:  port: 7112eureka:  instance:    prefer-ip-address: true    # 定义所属zone    metadata-map:      zone: beijing  client:    register-with-eureka: true    fetch-registry: true    prefer-same-zone-eureka: true    region: myRegion    availability-zones:      # 留神程序      myRegion: beijing,shanghai    service-url:      beijing: http://localhost:7101/eureka/      shanghai: http://localhost:7102/eureka/

consumer(拜访上海所在区域)配置

spring:  application:    name: consumerserver:  port: 7121eureka:  instance:    prefer-ip-address: true    # 定义所属zone    metadata-map:      zone: shanghai  client:    register-with-eureka: true    fetch-registry: true    prefer-same-zone-eureka: true    region: myRegion    availability-zones:      # 留神程序      myRegion: shanghai,beijing    service-url:      beijing: http://localhost:7101/eureka/      shanghai: http://localhost:7102/eureka/

以上,也可加一个默认的 defaultZone ,当服务不可用时,会从默认注册核心上获取对应服务