Spring Cloud Eureka详细说明
之前学习了如何配置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的实例。以下是简单的配置及说明。
- 服务注册中心,服务提供者,服务消费者都需配置以下内容。
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中指定两个注册中心,实现高可用。
- 服务调用者和提供者,有以下配置,用于指定属于哪个zone。Ribbon消费者从注册中心拉去服务列表后,会去匹配以下配置指定的zone,优先调用zone相同的实例。
eureka:
instance:
metadata-map:
zone: zone-1
Spring Cloud Eureka详细说明的更多相关文章
- 1 Spring Cloud Eureka服务治理
注:此随笔为读书笔记.<Spring Cloud微服务实战> 什么是微服务? 微服务是将一个原本独立的系统拆分成若干个小型服务(一般按照功能模块拆分),这些小型服务都在各自独立的进程中运行 ...
- 第三章 服务治理:Spring Cloud Eureka
Spring Cloud Eureka是Spring Cloud Netflix 微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能.Spri ...
- 第三章 服务治理: Spring Cloud Eureka
Spring Cloud Eureka是 Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能 服务治理 ...
- 1 Spring Cloud Eureka服务治理(上)
注:此随笔为读书笔记.<Spring Cloud微服务实战>,想学习Spring Cloud的同伴们可以去看看此书,里面对源码有详细的解读. 什么是微服务? 微服务是将一个原本独立的系统拆 ...
- Spring Cloud Eureka(三):认识Eureka Server 与 Eureka Client
Spring Cloud Netflix 是什么 This project provides Netflix OSS integrations for Spring Boot apps through ...
- 【Spring Cloud 系列】 二、Spring Cloud Eureka 的第一印象
Eureka : 翻译翻译,找到了!(惊讶语气) Spring CLoud 中的 Spring Cloud Eureka,用于 分布式项目中的服务治理.是对Netflix 套件中的Eureka 的二次 ...
- Spring Cloud Eureka源码分析之服务注册的流程与数据存储设计!
Spring Cloud是一个生态,它提供了一套标准,这套标准可以通过不同的组件来实现,其中就包含服务注册/发现.熔断.负载均衡等,在spring-cloud-common这个包中,org.sprin ...
- Spring Cloud Eureka Server集群Demo级搭建
将上篇随笔Spring Cloud Eureka服务Demo级搭建进行改造,改造成一个在本机的伪集群 1.修改hosts文件(windows10 hosts文件位置:C:\Windows\System ...
- spring cloud eureka高可用
记录下自己踩的坑 spring cloud eureka的高可用网上的教程大致分为两种,一种是两两互相注册,一种是三个互相注册. 1.两两互相注册 普通服务的注册写法都是http://peer1/eu ...
随机推荐
- vue--实现跑马灯效果
<div id="app"> <input type="button" value="开始" @click="l ...
- ES3、ES5、ES6对象代理的写法差异
ES3的对象代理写法: console.log('定义私有变量ES3写法:') // ES3 var Person = function (){ var data = { name:'ES3', ag ...
- 201871010113-刘兴瑞《面向对象程序设计(java)》第六-七周学习总结
项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>htt ...
- 有史以来Mysql面试题大全详解?
1.MySQL的复制原理以及流程 根柢原理流程,3个线程以及之间的相关: 主:binlog线程——记载下悉数改动了数据库数据的语句,放进master上的binlog中: 从:io线程——在运用sta ...
- 【BZOJ5457】城市(线段树合并)
点此看题面 大致题意: 一棵树上每个点有颜色\(a_i\)和权值\(b_i\),求以每个点为根的子树内权值和最大的颜色及其权值和. 线段树合并 这是一道线段树合并板子题. (关于线段树合并,可参考我的 ...
- AtCoder Grand Contest 036
Preface 这篇已经鸽了好久的说,AGC037都打完了才回来补所以题目可能都记不大清楚了,如有错误请指正 这场感觉难度远高于上一场,从D开始就不会了,E没写(看了题解都不会写),F就是抄曲明姐姐的 ...
- 【转】Linux设置定时任务方法
设置:每天4点运行脚本/var/x/web/train/modeltrain [root@T-XXX-ML-01 log]# crontab -e0 4 * * * /var/x/web/train/ ...
- 当usbnet打印 kevent * may have been dropped(转)
http://patchwork.ozlabs.org/patch/815639/ Every once in a while when my system is under a bit of str ...
- Python连载17-排序函数&返回函数的函数
一.高阶函数-排序 1.定义:把一个序列按照给定算法进行排序 2.key:在排序前对每一个元素进行key函数运算,可以理解成按照key函数定义的逻辑进行排序 3.python2和python3相差巨大 ...
- 转载-logbock.xml
转载:CS408 Spring boot——logback 基础使用篇:https://www.cnblogs.com/lixuwu/p/5804793.html#autoid-0-0-0 阅读目录 ...