1.服务提供者
1.1服务注册
服务提供者启动时,会通过rest请求的方式将自己注册到Eureka Server上,同时带上了自身服务的一些元数据信息。Eureka Server接收到请求后,将元数据信息存储在一个双层结构的Map中,其中与第一层的key是服务名,第二层的key是具体的服务实例名
eureka.client.register-with-eureka=false 是否向注册中心注册自己 默认 true
eureka.client.fetch-registry=false 是否去检索注册中心的服务 默认 true

1.2服务续约
在注册完服务后,服务提供者会维护一个心跳用来持续高速Eureka Server“我还活着”,以防止Eureka Server的“剔除任务”将该服务实例从服务列表中排除出去
eureka.instance.lease-renewal-interval-in-seconds=30 定义服务续约任务的调用间隔时间 默认30s
eureka.instance.lease-expiration-duration-in-seconds=90 定义服务失效的时间 默认90s

1.3服务下线
当服务实例进行正常的关闭操作时,会触发一个服务下线的rest请求给Eureka Server ,告诉注册中心:”我要下线了“,服务端在接收请求后,将该服务置为下线(DOWN),并把下线时间传播出去(通知服务消费者)

2.服务消费者
2.1获取服务
eureka.client.fetch-registry=ture 是否检索注册中心的服务,获取服务则必须设置为true 默认为true
eureka.client.registry.fetch.interval.seconds=30 当启动服务消费者时,会发送一个rest请求给注册中心,来获取上面注册的服务清单;为了性能考虑,Eureka Server会维护一份只读的服务清单来返回给客户端,同时缓存清单会每隔30秒更新一次

2.2服务调用
服务消费者获取服务清单后,通过服务名可以获取具体提供服务的实例名和该实例的元数据信息。有了这些元数据信息,客户端可以根据自己的需要决定具体调用哪个实例。对于访问实例的选择,Eureka中有Region和Zone两个概念,一个Region中可以包含多个Zone,每个服务客户端需要被注册到一个Zone钟,所以每个客户端对应一个Region和一个Zone。在进行服务调用时,优先访问同处一个Zone的服务提供方,若访问不到,再访问其他Zone的服务提供者。

3.服务注册中心
3.1服务同步
当两个服务提供者注册到注册中心集群,它们的信息被注册中心集群维护(此时注册中心之间互相注册为服务)当服务提供者发送服务注册请求到一个注册中心时,他会将该请求转发给集群中相连的其他注册中心,从而实现注册中心的服务同步。通过服务同步,两个服务提供者的服务信息就可以通过这两台服务注册中心的任意一台获取到。

3.2失效剔除
有时,服务实例并不一定是正常下线,可能由于内存溢出,网络故障等原因使得服务不能正常工作,而服务注册中心并未收到“服务下线”的请求。为了从服务列表中将这些无法提供服务的实例剔除,Eureka Server在启动时会创建一个定时任务,默认每隔一段时间(默认60s)将当前清单中超时(默认90s)没有续约的服务剔除

3.3自我保护
服务注册到注册中心后,会维护一个心跳连接,告诉Eureka Server自己还活着。Eureka Server 在运行期间会统计心跳失败比例在15分钟内是是否低于85%,如果出现低于的情况(单机调试很容易满足,实际在生产环境中通常是由于网络不稳定导致的),会将当前的实例注册信息保护起来,让这些实例不过期,尽可能保护注册信息。而在这段保护期间内,实例若出现问题,那么客户端会拿到实际已经不存在的服务实例,会出现调用失败的情况,这时客户端就必须要有容错机制,比如请求重试,熔断器等
注:在单机调试时,服务注册中心信息面板经常会出现如下提示:

这就是由于触发了Eureka Server的自我保护机制
可以使用eureka.server.enable-self-preservation=false参数来关闭保护机制

Eureka的功能特性及相关配置的更多相关文章

  1. JAVA Spring Cloud 注册中心 Eureka 相关配置

    转载至  https://www.cnblogs.com/fangfuhai/p/7070325.html Eureka客户端配置       1.RegistryFetchIntervalSecon ...

  2. SpringCloudConfig相关配置简介、使用、整合Eureka

    目的: 1.SpringCloud Config简介 2.Config Server基本使用 3.Config Client基本使用 4.Config整合Eureka 5.Config配置搜索路径 S ...

  3. SpringCloud系列六:Feign接口转换调用服务(Feign 基本使用、Feign 相关配置)

    1.概念:Feign 接口服务 2.具体内容 现在为止所进行的所有的 Rest 服务调用实际上都会出现一个非常尴尬的局面,例如:以如下代码为例: Dept dept = this.restTempla ...

  4. eureka集群基于DNS配置方式

    https://www.cnblogs.com/relinson/p/eureka_ha_use_dns.html   最近在研究spring cloud eureka集群配置的时候碰到问题:多台eu ...

  5. SpringCloud Eureka Client和Server侧配置及Eureka高可用配置

    一.Eureka注册中心和客户端配置Demo. 1.Server端 a.使用Idea创建Spring项目,如下所示: b.相关配置 application.yaml配置文件如下: # eureka本身 ...

  6. zookeeper集群的搭建以及hadoop ha的相关配置

    1.环境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 master作为active主机,data1作为standby备用机,三台机器均作为数据节点,yarn资源 ...

  7. Linux网络相关配置

    一.修改网卡相关配置 Linux网络参数是在/etc/sysconfig/network-scripts/ifcfg-eth0中设置,其中ifcfg-eth0表示是第一个网卡,如果还有另外一块网卡,则 ...

  8. ios开发之Info.plist文件相关配置

    前言:在iOS开发中有些情况下需要对Info.plist文件进行配置,以下介绍几种相关配置.以后遇到需要配置的再更新... 开发环境:swift3.0.1,Xcode8.1 一,项目中需要使用第三方字 ...

  9. SharePoint 2013 托管导航及相关配置 <二>

    本文的思路是使用JQuery重写SharePoint自带托管导航的样式,其实思路和脚本都非常简单,引用一下JQuery脚本,然后重写导航的样式,把脚本放到母版页中,即可.当然,使用JQuery可以做很 ...

随机推荐

  1. IOS Swift语言开发 tableView的重用以及自cell的自适应高度

    http://www.aichengxu.com/iOS/11143168.htm 一.准备数据 (这是一个元组,第一个元素为英雄的名字;第二个元素为英雄头像图片的名字,格式为.PNG,如果为其他的格 ...

  2. C# 操作PDF 图层(Layer)——添加、删除图层、设置图层可见性

    前言 通过添加图层,我们可以将文本.图片.表格.图形等元素精确定位于页面指定位置,将这些元素进行叠放.组合形成页面的最终效果.此外,对于页面中已有的图层我们也可以进行设置图层可见性.删除图层等操作.因 ...

  3. form表单序列化为Jquery对象

    <form id="DailyFinancial" > @*class="form-inline"*@ <div class="fo ...

  4. spring cloud 入门系列六:使用Zuul 实现API网关服务

    通过前面几次的分享,我们了解了微服务架构的几个核心设施,通过这些组件我们可以搭建简单的微服务架构系统.比如通过Spring Cloud Eureka搭建高可用的服务注册中心并实现服务的注册和发现: 通 ...

  5. JDK 源码分析(4)—— HashMap/LinkedHashMap/Hashtable

    JDK 源码分析(4)-- HashMap/LinkedHashMap/Hashtable HashMap HashMap采用的是哈希算法+链表冲突解决,table的大小永远为2次幂,因为在初始化的时 ...

  6. Java核心卷笔记(一)

    第三章Java基程序设计结构 1.注释 三种注释方式: // 注释单行 /* 内容 */ 注释单行 /** * 内容 */ 2. java 数据类型 Java数据类型可分为两种:基本数据类型和引用数据 ...

  7. python中@classmethod @staticmethod区别

    Python中3种方式定义类方法, 常规方式, @classmethod修饰方式, @staticmethod修饰方式. class A(object): def foo(self, x): prin ...

  8. Python_shelve模块操作二进制文件

    import shelve #导入shelve模块 fp=shelve.open('shelve_test.dat') #创建或打开二进制文件 zhangsan={'age':38,'sex':'Ma ...

  9. C语言检查ip是否合法

    在工作当中我们经常会遇到这种问题:判断一个输入的字符串是否为合法的IP地址,下面是一个测试小程序: #include <stdio.h> #include <string.h> ...

  10. SSM-Spring-11:Spring中使用代理工厂Bean实现aop的四种增强

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 说说那四种增强:前置增强,后置增强,环绕增强,异常增强 那什么是代理工厂bean呢? org.springfr ...