springCloud服务注册Eureka实现过程图解

介绍

 Eureka 是Netfix开发的,一个基于Rest服务的,服务注册与发现的组件。

   主要包括两个组件:Eureka Server和Eureka Client

       Eureka Server:注册中心,提供服务注册与发现

       Eureka Client:java客户端(通常就是微服务中的客户端和服务端) 

上图简要描述了Eureka的基本架构,由3个角色组成:

1.Eureka Server(注册中心,相当于中介)

 2.Service Provider(服务提供方,相当于房东)

 3.Service Consumer(服务消费方,相当于租客)

服务注册Register

  当eureka提供方(provider)向Eureka Server注册时,它提供自身的元数据,例如:ip地址,端口,运行状况指示符等(房东在中介登记房屋信息,比如:面积,价格,地段)

服务续约Renew

  服务提供方(provider)每隔30s(默认)发送一次心跳来续约,通过续约告诉Eureka Server 该服务提供方仍然存在,没有出现问题,正常情况下,如果Eureka Server在90s内没有收到服务提供方的续约,它会将实例从注册中心删除(房东定期告诉中介,我的房子还外租(续约),中介就会保留房屋信息)

服务剔除Eriction

  在默认情况下,当服务提供方连续90s没有向注册中心进行续约,即心跳,注册中心会将该服务从服务注册列表中剔除(房东定期联系中介告诉他房子还续约,如果中介长时间没有收到房东的续约信息,中介会将他的房屋信息下架)

获取注册列表信息FetchRegistries

  服务消费方从注册中心获取注册表信息,并将其缓存到本地,消费方会使用该信息查找其他服务,从而进行远程调用,该注册列表定期30S更新一次,每次返回注册列表信息可能与服务消费方缓存信息不同,服务消费方会自动处理,重新获取整个注册表信息,eureka Server和Eureka Client可以使用JSON/XMl格式进行通信,默认情况下Eureka Client使用Json格式来获取注册列表信息(租客去中介获取所有的房屋信息,而且租客为了获取最新的房屋 信息会定期向中介获取并更新本地列表)

获取服务是服务消费者的基础,所以必有两个重要参数需要注意:

服务下线Cancel

 服务提供方在程序关闭时向注册中心发送取消请求,发送后该服务提供方的信息将从注册中心的服务列表中删除(房东告诉中介房子不租了,中介将此房子的信息删除),该下线请求不会自动完成,需要调用:

远程调用Remote Call

  当服务消费方从注册中心获取到服务提供方信息后,就可以通过Http请求调用对应的服务;服务提供者有多个时,服务消费方会通过Ribbon自动进行负载均衡

自我保护机制

  默认情况下,如果注册中心在90秒内没有接受到某个微服务实例的心跳,会注销该实例,但是在微服务架构下服务之间通常都是跨进程调用,我那果洛通信往往会面临这各种问题,比如微服务状态正常,网络分区故障,导致实例被注销。大量实例被注销,会威胁到整个微服务架构的可用性,所以eureka就有了自我保护机制,Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 即会进入自我保护机制

Eureka Server 触发自我保护机制后,页面会出现提示:

Eureka Server 进入自我保护机制,会出现以下几种情况:

  1.Eureka不再从注册列表中移除因为长时间没收到心跳而应该过期的服务

  2.Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其他节点上

  3.当网络稳定时,当前实例新的注册信息会被同步到其他节点上

  Eureka 自我保护机制是为了防止误杀服务而提供的一个机制。当个别客户端出现心跳失联时,则认为是客户端的问题,剔除掉客户端;当 Eureka 捕获到大量的心跳失败时,则认为可能是网络问题,进入自我保护机制;当客户端心跳恢复时,Eureka 会自动退出自我保护机制。

  如果在保护期内刚好这个服务提供者非正常下线了,此时服务消费者就会拿到一个无效的服务实例,即会调用失败。对于这个问题需要服务消费者端要有一些容错机制,如重试,断路器等。

通过在 Eureka Server 配置如下参数,开启或者关闭保护机制,生产环境建议打开:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Spring Cloud搭建eureka过程图解

    这篇文章主要介绍了Spring Cloud搭建eureka过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Eureka Server 的搭建 eureka 是 Spring Cloud 的注册中心,提供服务注册和服务发现的功能. 利用idea 快速创建一个eureka应用 File - NewProject-Spring Initalizr 1.利用 https://start.spring.io 创建spring cloud eure

  • 详解SpringCloud eureka服务状态监听

    一.前言 近期由于公司不同平台项目之间的业务整合,需要做到相互访问! 每个平台均有自己的注册中心和服务,且注册中心相互之间并没有相互注册! 借助spring的事件监听,在eureka-server端监听服务注册,将所有服务的ip和port存放至redis库,然后让其他平台服务通过redis库获取ip和端口号,进而进行http调用.结构图如下: 二.事件解析 事件列表 在org.springframework.cloud.netflix.eureka.server.event包下会发现如下类: E

  • springboot2.0和springcloud Finchley版项目搭建(包含eureka,gateWay,Freign,Hystrix)

    前段时间spring boot 2.0发布了,与之对应的spring cloud Finchley版本也随之而来了,两者之间的关系和版本对应详见我这边文章:spring boot和spring cloud对应的版本关系 项目地址:spring-cloud-demo spring boot 1.x和spring cloud Dalston和Edgware版本搭建的微服务项目现在已经很流行了,现在很多企业都已经在用了,这里就不多说了. 使用版本说明: spring boot 2.0.x spring

  • SpringCloud Eureka搭建的方法步骤

    1.SpringCloud是什么 以前的服务器就像是一个医院只有一个医生,什么病人都要让这个医生看,如果医生觉得太累,自我暴毙了,那整个医院都瘫痪了.而springcloud流行起来之后,就像是医院里面有了外科诊室,内科诊室等,每一个诊室都有一群医生负责,这样不管哪一个医生不行了都不会影响整个医院的运转.把一台或好几台服务器中的众多服务,分类出来,解耦合出来,把他们类似的功能交给同一个集群来做,把互相耦合在一起的功能剥离出来,按业务,按功能来把他们作为一个个微服务放在服务器上,而这个服务器就只提

  • SpringCloud Eureka自我保护机制原理解析

    这篇文章主要介绍了SpringCloud Eureka自我保护机制原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1. 自我保护机制演示 eureka在频繁修改微服务名称的时候,可以会出现如下现象: 2. 什么是自我保护模式? 默认情况下,如果EurekaServer在一定时间内没有接收到某个微服务实例的心跳,EurekaServer将会注销该实例(默认90秒).但是当网络分区故障发生时,微服务与EurekaServer之间无法正常通信

  • SpringCloud Eureka 服务注册实现过程

    一.将服务注册到Eureka 一个SpringBoot应用如果要注册到Spring Cloud环境(Greenwich.SR3版本),步骤很简单: pom.xml中添加启动器:spring-cloud-starter-netflix-eureka-client: 增加配置:eureka.client.serviceUrl.defaultZone: http://localhost:8100/eureka/: 启动应用: 如果注册中心正常,此时就能在注册中心发现这个应用了,如下图红框所示: 按照s

  • SpringCloud Eureka Provider及Consumer的实现

    Eureka-Provider 服务的提供者 新建一个服务提供者项目 1.导入pom文件 <properties> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.SR3</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>

  • SpringCloud Eureka服务发现实现过程

    这篇文章主要介绍了SpringCloud Eureka服务发现实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.Eureka服务端集群开发 1.先创建一个父工程 若是不是普通demo,还有别的配置时,需要注意若是服务开不起来可能就是父类依赖中可能会需要<dependencyManagement>这个标签. 2.再创建两个子工程 1.导入依赖 <dependency> <groupId>org.springfr

  • springCloud服务注册Eureka实现过程图解

    介绍 Eureka 是Netfix开发的,一个基于Rest服务的,服务注册与发现的组件. 主要包括两个组件:Eureka Server和Eureka Client Eureka Server:注册中心,提供服务注册与发现 Eureka Client:java客户端(通常就是微服务中的客户端和服务端) 上图简要描述了Eureka的基本架构,由3个角色组成: 1.Eureka Server(注册中心,相当于中介) 2.Service Provider(服务提供方,相当于房东) 3.Service C

  • Springcloud服务注册consul客户端过程解析

    1.版本说明 springboot 2.2.5.RELEASE springcloud Hoxton.SR6 2.依赖 <!--引入consul client依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependen

  • SpringCloud 服务注册和消费实现过程

    系统架构 在没有微服务之前有已经有跨服务调用了,比如ServiceB去调用ServiceA中的服务 , 传统模式可以直接在ServiceB中写ServiceA中的服务但是这样是写死了的,不够灵活. 下图就是传统的调用 微服务下的跨系统调用应该是这样的: 此时服务的调用应该是分两个步骤的: ServiceB 去服务中心拿到ServiceA的地址,如果ServiceA是单机部署,那么这个地址就只有一个,如果ServiceA是集群是集群环境部署,那么发现的地址就是多个. 拿到了ServiceA的地址后

  • SpringCloud服务注册和发现组件Eureka

    本篇文章,我们来讲解springcloud的服务注册和发现组件,上一章节我们讲解了如何搭建springcloud的多模块项目,已经新建了springcloud-eureka-server,springcloud-eureka-client两个模块,本章节就在这基础上直接使用. 想要了解的请参考:一起来学Spring Cloud | 第一章 :如何搭建一个多模块的springcloud项目 一.Eureka简介: 1.1 什么是eureka Eureka是一个基于REST的服务,主要用于AWS云中

  • SpringCloud 服务注册中的nacos实现过程

    如下图,org.springframework.cloud.spring-cloud-commons包下定义了一系列接口,其中就包括serviceregistry的系列规范,并通过SPI机制去调用接口实现. 在该包的META-INF/spring.factories文件中,可以找到EnableAutoConfiguration.class为key的value中有AutoServiceRegistrationAutoConfiguration.class这一项. 来看看这个AutoServiceR

  • SpringCloud 服务注册IP错误的解决

    SpringCloud 服务注册IP错误 1.错误原因 在服务注册的时候,是使用 spring.cloud.client.ipAddress 这个变量,如果本机有多个网卡,那么可能会把不是本机以太网的网卡地址注册上去. 使用 ipconfig 可以看到,本机上有多个以太网适配器,而每个以太网适配器,都有一个 IPv4 地址,这时注册上去的 IP,就是其中一个,却不一定是正确的那个. 2.处理 2.1.禁用其他网卡 到电脑的 更改适配器 设置中,将不是本机以太网的其他网卡禁用 2.2.配置 到电脑

  • Springcloud seata nacos环境搭建过程图解

    最近学习了一下seata,由于nacos现在也挺火,于是学习了seata注册到nacos,然后集成springcloud 1.nacos配置(自行上官网下载) 将nacos/conf/nacos-mysql.sql导入自己的数据库 2.配置修改nacos/conf/application.properties spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?character

  • SpringCloud添加客户端Eureka Client过程解析

    1.添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> 2.添加客户端配置 /src/main/java/resource/application.yml server: port: 8770 eur

  • SpringCloud学习笔记之SpringCloud搭建父工程的过程图解

    目录 SpringCloud和SpringBoot版本选择 更详细的版本选择 相关技术选型 创建工程 创建父工程 新建maven工程 配置父工程的pom文件 SpringCloud是分布式微服务架构的一站式解决方案,十多种微服务架构落地技术的集合体,俗称微服务全家桶 SpringCloud和SpringBoot版本选择 自2019年以后官方建议使用2.0以后的版本 官网地址 在官网的页首可以看到最新版本以及对应的springboot版本 在官网可以看到官方推荐的springcloud与sprin

  • 详解springcloud之服务注册与发现

    本次分享的是关于springcloud服务注册与发现的内容,将通过分别搭建服务中心,服务注册,服务发现来说明:现在北京这边很多创业公司都开始往springcloud靠了,可能是由于文档和组件比较丰富的原因吧,毕竟是一款目前来说比较完善的微服务架构:本次分享希望能给大家带来好的帮助: Eureka服务中心 Provider注册服务 Consumer发现服务 Eureka服务中心高可用 Eureka服务中心 就我现在了解到并且用的比较多的注册中心有zookeeper和Eureka,我的上上篇文章分享

随机推荐