热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

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

这篇文章主要介绍了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 配置如下参数,开启或者关闭保护机制,生产环境建议打开:

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


推荐阅读
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文是关于自学Android的笔记,包括查看类的源码的方法,活动注册的必要性以及布局练习的重要性。通过学习本文,读者可以了解到在自学Android过程中的一些关键点和注意事项。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 突破MIUI14限制,自定义胶囊图标、大图标样式,支持任意APP
    本文介绍了如何突破MIUI14的限制,实现自定义胶囊图标和大图标样式,并支持任意APP。需要一定的动手能力和主题设计师账号权限或者会主题pojie。详细步骤包括应用包名获取、素材制作和封包获取等。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • 护墙_搭建LVS负载均衡NAT和DR模式
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了搭建LVS负载均衡NAT和DR模式相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
山野木每子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有