之前学习了如何配置Eureka注册中心、消费者等,关于更详细的一些常用的配置在这里说明。

1、注册中心的自我保护模式

  在我们调试Eureka的注册中心时,访问注册中心页面,常常会看见以下提示。

  该提示表明,注册中心此时已进入保护模式,那什么是保护模式:Eureka服务在注册到注册中心后,会周期发送心跳给注册中心,以证明自己还活着,注册中心在运行期间,会统计15分钟内的心跳失败比例是否低于85%,如果存在,则注册中心进入保护模式,该模式下,注册中心不会剔除失效的节点,这些实例不会过期,此时会有上图提示出现。由于失效节点未及时剔除,可能会出现客户端获取的服务列表中有不可能实例存在,这个时候,可以通过客户端负载均衡和熔断器等机制来实现容错机制。

  自我保护模式在真实环境中是很有用的,它是为了防止网络分区导致的网络问题或心跳续约网络不稳定情况下,实例实际可用,但注册中心却将其剔除的情况。比如a实例在A区,注册中心B区,由于网络故障,a实例无法及时发送心跳给注册中心续约,导致注册中心将其剔除,但实际a实例此时可用。当然,注册中心也可以通过关闭自我保护模式,及时剔除未续约的服务。通过eureka.server.enable-self-preservation=false配置关闭自我保护模式。除非要求及时剔除失效实例,建议还是开启自我保护模式。服务端可以通过eureka.server.eviction-interval-timer-in-ms=6000来设置失效检测时间周期,单位为ms。

  开发环境下可关闭保护模式,实例下线会及时感知到;生产环境下,可以开启保护模式,服务扩展注册中心可以马上得知,服务故障,应定位问题并重启,如果需要剔除该服务,在高可用注册中心下,可以依次重启注册中心,使失效节点剔除,并且消费端Ribbon应配置重试机制。

2、服务提供者的服务续约

  服务提供者将自己注册到注册中心后,需要通过周期发送心跳(默认30秒),让注册中心知道自己是否还存活,已防止被注册中心剔除,这个一般有两个配置项去控制。

  eureka.instance.lease-renewal-interval-in-seconds=30,控制心跳周期间隔时间;

  eureka.ins七ance.lease-expiration-duration-in-seconds=90,控制服务时效的时间,指定距离最后一次心跳时间90秒后未续约,则让注册中心剔除实例(需要同时关闭保护模式才能使过期节点被剔除)。

3、服务消费者的清单更新周期

  当我们启动服务消费者之后,消费者会发送一个Rest请求给注册中心,以获取服务实例清单。需要确保eureka.client.fetch-registry=true,该配置表明需要获取清单。

  服务消费者会定期更新服务清单(默认30秒),也可自己配置更新周期,通过eureka.client.registry-fetch-interval-seconds=60来配置。

4、服务调用

  服务调用我们使用Ribbon,默认是以轮询的方式来调用服务(采用其他方式之后会有另外文章说明)。这里涉及到Region和Zone的概念,Region大致意思是中心,一个服务只能属于一个Region,默认为default,若要自己设置可通过eureka.client.region来定义。Zone表示一个区域,常用于实现不同网络分区的实例配置,已实现负载均衡的区域亲和性。一个Region可以包含多个Zone。我们之前配置的defaultZone就是Zone的默认key值,所以自己可以指定Zone。所谓区域亲和性,指的是,Ribbon在实现的时候,会优先访问与消费者同一Zone下面的服务实例,在当前Zone不存在实例时才会去访问其他Zone的实例。以下是简单的配置及说明。

  1. 服务注册中心,服务提供者,服务消费者都需配置以下内容。

    eureka:
    client:
    prefer-same-zone-eureka: true
    region: chengdu
    availability-zones:
    chengdu: zone-1,zone-2
    service-url:
    zone-1: http://localhost:30000/eureka/
    zone-2: http://localhost:30001/eureka/

    eureka.client.prefer-same-zone-eureka=true,表明会按照availability-zones中指定的可用Zone中的第一个Zone配置的url去注册。服务注册中心在service-url中配置高可用的另一注册中心地址。服务提供者和消费者可以在单个zone的url中指定两个注册中心,实现高可用。

  2. 服务调用者和提供者,有以下配置,用于指定属于哪个zone。Ribbon消费者从注册中心拉去服务列表后,会去匹配以下配置指定的zone,优先调用zone相同的实例。
    eureka:
    instance:
    metadata-map:
    zone: zone-1

Spring Cloud Eureka详细说明的更多相关文章

  1. 1 Spring Cloud Eureka服务治理

    注:此随笔为读书笔记.<Spring Cloud微服务实战> 什么是微服务? 微服务是将一个原本独立的系统拆分成若干个小型服务(一般按照功能模块拆分),这些小型服务都在各自独立的进程中运行 ...

  2. 第三章 服务治理:Spring Cloud Eureka

    Spring Cloud Eureka是Spring Cloud Netflix 微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能.Spri ...

  3. 第三章 服务治理: Spring Cloud Eureka

    Spring Cloud Eureka是 Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能 服务治理 ...

  4. 1 Spring Cloud Eureka服务治理(上)

    注:此随笔为读书笔记.<Spring Cloud微服务实战>,想学习Spring Cloud的同伴们可以去看看此书,里面对源码有详细的解读. 什么是微服务? 微服务是将一个原本独立的系统拆 ...

  5. Spring Cloud Eureka(三):认识Eureka Server 与 Eureka Client

    Spring Cloud Netflix 是什么 This project provides Netflix OSS integrations for Spring Boot apps through ...

  6. 【Spring Cloud 系列】 二、Spring Cloud Eureka 的第一印象

    Eureka : 翻译翻译,找到了!(惊讶语气) Spring CLoud 中的 Spring Cloud Eureka,用于 分布式项目中的服务治理.是对Netflix 套件中的Eureka 的二次 ...

  7. Spring Cloud Eureka源码分析之服务注册的流程与数据存储设计!

    Spring Cloud是一个生态,它提供了一套标准,这套标准可以通过不同的组件来实现,其中就包含服务注册/发现.熔断.负载均衡等,在spring-cloud-common这个包中,org.sprin ...

  8. Spring Cloud Eureka Server集群Demo级搭建

    将上篇随笔Spring Cloud Eureka服务Demo级搭建进行改造,改造成一个在本机的伪集群 1.修改hosts文件(windows10 hosts文件位置:C:\Windows\System ...

  9. spring cloud eureka高可用

    记录下自己踩的坑 spring cloud eureka的高可用网上的教程大致分为两种,一种是两两互相注册,一种是三个互相注册. 1.两两互相注册 普通服务的注册写法都是http://peer1/eu ...

随机推荐

  1. DOS(磁盘操作系统)基本命令-思维导图

  2. C# Session 操作类

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. 跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort)

    跳跃空间(链表)排序 选择排序(selection sort),插入排序(insertion sort) 选择排序(selection sort) 算法原理:有一筐苹果,先挑出最大的一个放在最后,然后 ...

  4. 分布式系统ID的几种生成办法

    前言 一般单机或者单数据库的项目可能规模比较小,适应的场景也比较有限,平台的访问量和业务量都较小,业务ID的生成方式比较原始但是够用,它并没有给这样的系统带来问题和瓶颈,所以这种情况下我们并没有对此给 ...

  5. C++:基本类型的转换

    C++:基本类型的转换 一.string转为int [参考:https://blog.csdn.net/m0_37316917/article/details/82712017] string num ...

  6. itest(爱测试) 4.1.1 发布,开源BUG 跟踪管理 & 敏捷测试管理软件

    v4.1.1下载地址 :itest下载 itest 简介:查看简介 itest 开源敏捷测试管理,testOps 践行者.可按测试包分配测试用例执行,也可建测试迭代(含任务,测试包,BUG)来组织测试 ...

  7. 01 less的使用

    使用less 安装两个包 1===>cnpm install less less-loader --save-dev less中的注释 以 //开头的注释 不会被编译到css文件中去 以 /** ...

  8. python 实现 AES CBC模式加解密

    AES加密方式有五种:ECB, CBC, CTR, CFB, OFB 从安全性角度推荐CBC加密方法,本文介绍了CBC,ECB两种加密方法的python实现 python 在 Windows下使用AE ...

  9. Mybatis 的 mapper配置文件,XXXXMapper.xml

    存着一个配置文件,方便开发使用.主要是XML标签. <?xml version="1.0" encoding="UTF-8" ?> <!DOC ...

  10. 【Eureka篇三】Eureka服务发现(4)

    注:该知识点并不是重点. 修改子模块:microservicecloud-provider-dept-8001 1. 修改DeptController @Autowired private org.s ...