返回顶部
首页 > 资讯 > 后端开发 > Python >Spring Cloud Eureka: 指定Zone方式
  • 217
分享到

Spring Cloud Eureka: 指定Zone方式

2024-04-02 19:04:59 217人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录Eureka如何指定ZoneEureka中的region和Zone概念分区服务架构图Eureka中Regin和 Zone的相关配置服务注册相关服务调用Eureka如何指定Zone

Eureka如何指定Zone

有坑。

先说结论:如果想给当前服务指定属于哪个zone, 使用

eureka.instance.metadata-map.zone=myzone

属性是无效的,而应该使用:

eureka.client.availabilityZones.beijing=myzone # beijing是region

同时指定region:

eureka.client.region=beijing

至于原因,可以在EurekaClientConfigBean的源码中找到:

@Override
    public String[] getAvailabilityZones(String region) {
        String value = this.availabilityZones.get(region);
        if (value == null) {
            value = DEFAULT_ZONE;
        }
        return value.split(",");
    }

也就是说在判断当前服务属于哪个zone时,先从availabilityZone这个Map中查找,查找用的key是region名。

如果找不到,就使用默认值,即我们熟知的defaultZone。

Eureka中的region和Zone

像亚马逊这种大型的跨境电商平台,会有很多个机房。这时如果上线一个服务的话,我们希望一个机房内的服务优先调用同一个机房内的服务,当同一个机房的服务不可用的时候,再去调用其它机房的服务,以达到减少延时的作用。

于是亚马逊的 AWS 提供了 region 和 zone 两个概念

概念

  • region:可以简单理解为地理上的分区。比如亚洲地区,或者华北地区,再或者北京地区等等,没有具体大小的限制,根据项目具体的情况,可以自行划分region。
  • zone:可以简单理解为 region 内的具体机房,比如说 region 划分为华北地区,然后华北地区有两个机房,就可以在此 region 之下划分出 zone1、zone2 两个 zone

eureka 也借用了 region 和 zone 的概念

分区服务架构图

如图所示,有一个 region:华北地区,下面有两个机房,机房A 和机房B

每个机房内有一个 Eureka Server 集群 和两个服务提供者 ServiceA 和 ServerB

现在假设 serverA 需要调用 ServerB 服务,按照就近原则,serverA 会优先调用同一个 zone 内的 ServiceB,当 ServiceB 不可用时,才会去调用另一个 zone 内的 ServiceB

Eureka中Regin和 Zone的相关配置

  • 服务注册:要保证服务注册到同一个zone内的注册中心,因为如果注册到别zone的注册中心的话,网络延时比较大,心跳检测很可能出问题。
  • 服务调用:要保证优先调用同一个zone内的服务,只有在同一个zone内的服务不可用时,才去调用别zone的服务。

服务注册相关

eureka:
  client:
    # 尽量向同一区域的 eureka 注册,默认为true
    prefer-same-zone-eureka: true
    #地区
    region: huabei
    availability-zones:
      huabei: zone-1,zone-2
    service-url:
      zone-1: Http://localhost:30000/eureka/
      zone-2: http://localhost:30001/eureka/

当存在多个注册中心时,选择逻辑为

  • 如果 prefer-same-zone-eureka 为 false,按照 service-url 下的 list 取第一个注册中心来注册,并和其维持心跳检测,不再向list内的其它的注册中心注册和维持心跳。只有在第一个注册失败的情况下,才会依次向其它的注册中心注册,总共重试3次,如果3个service-url都没有注册成功,则注册失败。注册失败后每隔一个心跳时间,会再次尝试。
  • 如果 prefer-same-zone-eureka 为true,先通过 region 取 availability-zones 内的第一个zone,然后通过这个zone取 service-url 下的list,并向list内的第一个注册中心进行注册和维持心跳,不再向list内的其它的注册中心注册和维持心跳。只有在第一个注册失败的情况下,才会依次向其它的注册中心注册,总共重试3次,如果3个service-url都没有注册成功,则注册失败。注册失败后每隔一个心跳时间,会再次尝试。

为了保证服务注册到同一个 zone 的注册中心,一定要注意 availability-zones 的顺序,必须把同一 zone 写在最前面

服务调用

eureka:
  instance:
    # 服务和注册中心的心跳间隔时间,默认为30s
    lease-renewal-interval-in-seconds: 30
    # 服务和注册中心的心跳超时时间,默认为90s
    lease-expiration-duration-in-seconds: 90
    metadata-map:
      # 当前服务所属的 zone
      zone: zone1
 

服务消费者和服务提供者分别属于哪个zone,均是通过 eureka.instance.metadata-map.zone 来判定的。

服务消费者会先通过 ribbon 去注册中心拉取一份服务提供者的列表,然后通过 eureka.instance.metadata-map.zone 指定的 zone 进行过滤,过滤之后如果同一个 zone 内的服务提供者有多个实例,则会轮流调用。

只有在同一个 zone 内的所有服务提供者都不可用时,才会调用其它zone内的服务提供者。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Spring Cloud Eureka: 指定Zone方式

本文链接: https://lsjlt.com/news/141254.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Spring Cloud Eureka: 指定Zone方式
    目录Eureka如何指定ZoneEureka中的region和Zone概念分区服务架构图Eureka中Regin和 Zone的相关配置服务注册相关服务调用Eureka如何指定Zone...
    99+
    2024-04-02
  • Spring cloud如何实现FeignClient指定Zone调用
    目录背景介绍对应配置(假设调用的服务名字是service-provider)分析这里放上源码ZoneAwareLoadBalancer的选择Server源码实现配置类需要修改的配置S...
    99+
    2024-04-02
  • Spring Cloud Eureka 搭建 & 集群方式
    目录1.Eureka 搭建 2. Eureka 集群2.1 Eureka 集群原理关于Eureka的详细介绍已经在上篇文章通俗的讲了。 Eureka 本身是使用java 来...
    99+
    2024-04-02
  • springcloudclient指定注册到eureka的ip与端口号方式
    client指定注册到eureka的ip与端口号 #设置使用IP eureka.instance.prefer-ip-address=true #设置外网IP号 eureka.ins...
    99+
    2024-04-02
  • Spring cloud 限流的多种方式
    目录一、实战基于 Spring cloud Gateway 的限流 二、基于阿里开源限流神器:Sentinel 在频繁的网络请求时,服务有时候也会受到很大的压力,尤其是那种网络攻击,...
    99+
    2024-04-02
  • Spring Cloud分布式定时器之ShedLock的实现方法
    这篇文章主要介绍了Spring Cloud分布式定时器之ShedLock的实现方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。ShedLockShedLock是一个在分布式...
    99+
    2023-06-08
  • spring cloud eureka 服务启动失败的原因分析及解决方法
    目录环境:错误log环境: <spring-boot-version>2.3.5.RELEASE</spring-boot-version> <s...
    99+
    2024-04-02
  • Spring Cloud Gateway网关XSS过滤方式
    目录1.创建一个Filter2. 处理XSS字符串3.其它使用到的工具修改XSS是一种经常出现在web应用中的计算机安全漏洞,具体信息请自行Google。本文只分享在Spring C...
    99+
    2024-04-02
  • Spring Cloud服务安全连接方式
    目录Spring Cloud服务安全连接一、加入security启动器二、自定义用户名密码三、安全连接Spring Cloud微服务安全一、JWT介绍二、JWT进阶特性三、JWT组成...
    99+
    2024-04-02
  • springboot cloud使用eureka整合分布式事务组件Seata 的方法
    前言 近期一直在忙项目,我也是打工仔。不多说,我们开始玩一玩seata。 正文 什么都不说,我们按照惯例,先上一个图(图里不规范的使用请忽略): 简单一眼就看出来, 比我们平时用...
    99+
    2024-04-02
  • Spring Cloud OAuth2实现自定义token返回格式
    目录问题描述解决方案总结最近读者朋友针对Spring Security OAuth2.0 想要陈某补充一些知识,如下: 今天这篇文章就来回答其中一个问题:如何自定义token的返回...
    99+
    2024-04-02
  • Spring Cloud | 实现Eureka Server 高可用服务注册中心全套解决方案
    目录 1、在搭建Eureka Server,配置高可用服务注册中心,配置3个Eureka Server:2、因为是在本地实现的话,需要在localhost加入三个服务,需要改变etc/host...
    99+
    2023-10-23
    java spring spring cloud eureka 微服务
  • spring cloud 配置中心native配置方式
    目录spring cloud 配置中心native配置1、pom文件添加依赖2、配置文件application.properties中配置本地路径3、主程序开启@EnableConf...
    99+
    2024-04-02
  • Spring-cloud Config Server的3种配置方式
    目录Spring-cloud Config Server的3种配置1.config 默认Git加载2.加载本地开发环境3.加载 本地物理环境4.加载svn环境springcloud统...
    99+
    2024-04-02
  • Spring cloud中限流的方式有哪些
    这篇文章主要介绍了Spring cloud中限流的方式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在频繁的网络请求时,服务有时候也会受到很大的压力,尤其是那种网络攻击...
    99+
    2023-06-15
  • Spring Cloud Alibaba负载均衡实现方式
    目录一、负载均衡的两种方式服务器端负载均衡客户端侧负载均衡二、手写一个客户端侧负载均衡器三、使用Ribbon实现负载均衡一、负载均衡的两种方式 服务器端负载均衡 传统的方式前端发送请...
    99+
    2024-04-02
  • spring cloud gateway跨域全局CORS配置方式
    在Spring 5 Webflux中,配置CORS,可以通过自定义WebFilter实现: 注:此种写法需真实跨域访问,监控header中才会带相应属性。 代码实现方式 impo...
    99+
    2024-04-02
  • Spring Cloud OAuth2怎么实现自定义token返回格式
    这篇“Spring Cloud OAuth2怎么实现自定义token返回格式”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我...
    99+
    2023-07-02
  • Spring Cloud Config 使用本地配置文件方式
    一、简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。 在Spring Cloud中,有分布式配置中心组件spring cl...
    99+
    2024-04-02
  • Spring Cloud服务安全连接方式是什么
    这篇文章主要讲解了“Spring Cloud服务安全连接方式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring Cloud服务安全连接方式是什么”吧!Spring Cloud服...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作