之前学习了如何配置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. Linux 内存文件系统-ramfs and tmpfs

    Linux内存文件系统:可满足高IO的要求 ramdisk: 基于虚拟在内存中的其他文件系统(ex2fs). 挂载方式:mount /dev/ram /mnt/ramdisk ramfs: 物理内存文 ...

  2. jsp页面格式化时间 fmt:formatDate格式化日期

    使用fmt函数需在jsp中引入 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" ...

  3. 3.Python网络编程_多任务问题抛出

    #单线程程序 import time def sing(): """唱歌5秒钟""" for i in range(5): print(&q ...

  4. 清空txt文件

    如果想在每次写入前清空txt文件里面的内容,不必删掉文件,只需要使用truncate方法就行了,代码 0x01:以读/写的方式打开文件: f = open("read_test.txt&qu ...

  5. Paper | Noise2Noise: Learning Image Restoration without Clean Data

    目录 故事背景 算法原理 点估计 神经网络算法与点估计的关系 核心思想 回头品味 实验 高斯 其他生成噪声 发表在2018 ICML. 摘要 We apply basic statistical re ...

  6. 小白专场-树的同构-python语言实现

    目录 一.题意理解 二.求解思路 更新.更全的<数据结构与算法>的更新网站,更有python.go.人工智能教学等着你:<https://www.cnblogs.com/nickch ...

  7. Java List<T> 去重

    1.List<T>,是个泛型,实际业务里,它经常是一个bean,例如Person类,里面有age.name等属性. 2.如果List<Person>  ps 有重复的数据,我们 ...

  8. 本博客采用 CC BY-NC-SA 4.0 进行许可

    本博客采用 CC BY-NC-SA 4.0 进行许可

  9. 海边拾贝-C-面试篇

    优秀的面试资料,不定期会更新: Leetcode上面别人整理的若干面试资料: https://github.com/huihut/interview 剑指offer:https://blog.csdn ...

  10. ​LeetCode 26:删除排序数组中的重复项 Remove Duplicates from Sorted Array

    给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. Give ...