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 ...
随机推荐
- mysql常见错误代码解释
mysql常见错误代码解释 原创 作者:bayaim 时间:2017-12-26 11:07:14 38 ---------------------------------------------- ...
- [日常] 解决github速度特别慢
执行下面这俩命令,找到对应的IP,增加host就能解决 nslookup github.global.ssl.fastly.Netnslookup github.com root@tao-PC:/va ...
- 渗透测试学习 十、 MSsql注入下
大纲:MySQL介绍及操作 MySQL注入原理 MySQL注入其他操作 一.MySQL介绍及操作 介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle ...
- VM虚拟机Android安装图形界面
摘自,转 https://blog.csdn.net/weixin_42633191/article/details/89391188
- springboot 使用 jedis 连接 Redis 数据库
1. 在 pom.xml 配置文件中添加依赖 <!-- redis 依赖 --> <dependency> <groupId>org.springframework ...
- VMware Tools安装方法
安装VMware Tools的步骤 点击[虚拟机]选项中的[安装VMware Tools],此时在Ubuntu的桌面上就会出现一个光盘图标. 如果之前已经安装过了,[虚拟机]选项中应为[重新安装VMw ...
- xposed 原理分析
1.添加hook方法 首先是init进程打开 app_process,然后进入XposedInit.java main() - > initForZygote() 加入对ActivityThre ...
- 【洛谷P3329】 [ZJOI2011]最小割(最小割树)
洛谷 题意: 给出一个无向图,之后有\(q,q\leq 30\)组询问,每组询问有一个\(x\),回答有多少点对\((a,b)\)其\(a-b\)最小割不超过\(x\). 思路: 这个题做法要最小割树 ...
- 5. Vue - 小清单实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【简单的spfa+优先队列】
题目是给出只有x和y构成的图,相同元素走路不花费,不同元素间花费1,给出起点终点,最少花费是 #include<cstdio>#include<algorithm>#inclu ...