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

简单了解springbooteureka交流机制

这篇文章主要介绍了简单了解springbooteureka交流机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一 前言

这篇文章参考了官方文档,主要是描述了eureka client 和 eureka server 之间的交流机制; peer to peer 的 对等复制交流机制;

eureka 官方文档

二 server client 之间的交流

euraka 的 client 与 server 之间的交流主要通过如下方面;

2.1 Register

Register (服务注册) ; Eureka client 会向 Eureka server 注册 关于自生运行实例的信息,比如 ip 地址,主机名,健康状态;

2.2 Renew

Renew(服务续约);Eureka client 会向 Eureka server 每隔30秒发送心跳;续约的目的是通知 Eureka server 自己代表的实例是处于存活状态;如果 Eureka server 90 秒内 未收到 续约心跳,就会将这个实例从服务列表中剔除;官方建议是不要修改续约间隔,原因是服务器要使用这些信息去确认 Eureka server 与 Eureka client 之间的交流是否存在广泛传播的问题;

2.3 Fetch Registry

Fetch Registry(抓取注册列表);Eureka clients 会 从 Eureka server 中 抓取注册的服务列表并且缓存到本地;Eureka clients 缓存本地的服务列表信息会以30秒为间隔定期更新增量信息(上次抓取与当前抓取的服务列表之间不同的信息);通常 Eureka server 会保存增量信息3分钟;因此,Eureka clients 每个增量抓取的服务信息有可能是相同的实例;Eureka client 会自动处理这些重复的信息;

如果处于一些原因导致抓取的信息不匹配,Eureka Client 就会重新抓取整个注册列表的服务信息;Eureka 抓取的信息是以json或者xml格式,通常是josn格式,并且是被压缩过信息,这些压缩过的信息与没压缩过的细信息是相同,压缩的目的就是减小体积,提升性能;

2.4 Cancel

Cancel(服务下线);Eureka client 会发送 下线请求给 Eureka server ,Eureka server 就会将 这个 client 的实例从注册列表中剔除;发送下线请求代码如下:

DiscoveryManager.getInstance().shutdownComponent()

2.5 Time Lag

Time Lag (时间差);所有的 Eureka client操作都会反应给 Eureka Server 或者 接下来其他的 Eureka client ;由于 Eureka server 会缓存 有效信息并根据时间周期更新,Eureka Client 也会 根据时间周期定期更新增量信息;因此,可能会占据2分钟左右的时间将更新的信息全部发送到Eureka Client ;

三 peer to peer 之间的交流

3.1 故障处理

Eureka clients 与 Eureka server 之间的交流是在相同的zone之间交流;如果 server发生问题或者不在相同的zone中,client 就会将 故障转移到server 的其他zone中处理,每个node中都会有一个zone用于专门处理故障;

3.2 peer to peer

如果 server 开始接受流量,Eureka client所有的操作都会在server 上执行,附近的 集群node就会尝试复制一份server已知信息到自己的node;如果Eureka clinet 操作出于某些原因失败了,这些信息就会遗留到下次心跳进行协调,心跳也会在server之间复制;

如果server启动 ,就会尝试获取附近 node 的信息复制一份过来;如果从这个node复制过来的信息存在问题,就会放弃与之peer to peer(对等复制);如果client续约的时间低至一个阈值(15 分钟内低于 85%),那么server 也会停止这些过期的 client 以保护 已经注册的信息;

peer to peer 也就是 eureka 的自我保护机制; 当 Eureka client 与 Eureka server之间存在网络分区的情况,Eureka server 会 保护已经保存的信息,此时 Eureka client 是不能向 Eureka server 注册自己,最好的方法就是尝试向其他的 Eureka server注册自己;在这种情况下 server 无法从附近的 node 获取注册信息,此时会等待 5分钟 让 client 注册信息,因此流量倾斜到某组实例,会造成容量问题;

3.3 peer之间断网

peer之间断网会发生如下情况:

peers 之间心跳复制就会失败,server 会检查到这种情况并且进入自我保护机制,保护当前已经保存的信息;

server会出现孤立情况,换句话说有些 Eureka Client 会 收到 新的注册信息,有些则收不到;也就是我们经常说的数据丢失;

当网络恢复并且稳定,peers 之间能够进行健康交流,注册信息会自动的同步到其他server;

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


推荐阅读
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 本文探讨了SSDP(简单服务发现协议)和WSD(Web服务发现)协议,特别是SSDP如何通过固定多播地址239.255.255.250:1900实现局域网内的服务自发现功能。文中还详细介绍了SSDP协议的关键操作类型及其应用场景。 ... [详细]
  • Spring Cloud Config 使用 Vault 作为配置存储
    本文探讨了如何在Spring Cloud Config中集成HashiCorp Vault作为配置存储解决方案,基于Spring Cloud Hoxton.RELEASE及Spring Boot 2.2.1.RELEASE版本。文章还提供了详细的配置示例和实践建议。 ... [详细]
  • 本文介绍了一个优化过的JavaScript函数,用于从API获取电影信息并渲染到网页上,同时注册Service Worker以提升用户体验和性能。 ... [详细]
  • 深入解析MySQL查询优化:特定类型查询的高级策略
    本文详细探讨了MySQL中特定类型查询的优化方法,包括COUNT()查询、关联查询、LIMIT分页及UNION查询的优化技巧,旨在提高数据库查询效率。 ... [详细]
  • 本文探讨了浏览器的同源策略限制及其对 AJAX 请求的影响,并详细介绍了如何在 Spring Boot 应用中优雅地处理跨域请求,特别是当请求包含自定义 Headers 时的解决方案。 ... [详细]
  • 深入分析十大PHP开发框架
    随着PHP技术的发展,各类开发框架层出不穷,成为了开发者们热议的话题。本文将详细介绍并对比十款主流的PHP开发框架,旨在帮助开发者根据自身需求选择最合适的工具。 ... [详细]
  • 探索Squid反向代理中的远程代码执行漏洞
    本文深入探讨了在网站渗透测试过程中发现的Squid反向代理系统中存在的远程代码执行漏洞,旨在帮助网站管理者和开发者了解此类漏洞的危害及防范措施。 ... [详细]
  • MapReduce原理是怎么剖析的
    这期内容当中小编将会给大家带来有关MapReduce原理是怎么剖析的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1 ... [详细]
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • 本文详细介绍了如何使用 PHP 编程语言输出 99 乘法表,包括使用不同的循环结构如 do-while、for 循环等方法,并提供了具体的代码示例。 ... [详细]
  • 本文档详细介绍了在 Kubernetes 集群中部署 ETCD 数据库的过程,包括实验环境的准备、ETCD 证书的生成及配置、以及集群的启动与健康检查等关键步骤。 ... [详细]
  • 详解 | 日志系统ViseLog的基本使用与功能
    本文详细介绍了日志系统ViseLog的使用方法及其核心功能,旨在帮助开发者更好地理解和利用这一工具,提高开发效率。 ... [详细]
  • ServletContext接口在Java Web开发中扮演着重要角色,它提供了一种方式来获取关于整个Web应用程序的信息。通过ServletContext,开发者可以访问初始化参数、共享数据以及应用资源。 ... [详细]
author-avatar
淑圣承琦9_416
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有