Eureka原理

news/2024/11/16 12:38:06/文章来源:https://www.cnblogs.com/study-top/p/18297425

Eureka高级架构

image
每一个地区对应一个region,zone 相当于机房

Eureka的服务治理流程

1、客户端启动时会向Eureka server发送注册请求;
2、当注册成功后客户端会每30秒定时通过提供的http api请求一次Eureka server端获取服务列表,第一次是全量,后面都是增量,然后缓存到本地;
3、若Eureka server端超过90秒没有收到服务客户端的请求,那么就会从服务列表中将这个服务给剔除;

Eureka 重要概念

  • 服务注册(Register)
    服务启动时向Eureka server注册自己的服务信息,比如ip、port等;
    注意:服务的注册和剔除并不会通知客户端,只能等客户端自己定时去同步(30s请求同步一次)
  • 服务续约(Renew,或许说是心跳检测)
    服务注册之后会周期性的向Eureka server发送心跳,表明服务是活跃的;
  • 服务发现(Fetch Registers)
    服务消费者通过Eureka client向Eureka server查询可用服务,并获得服务的信息;
  • 服务剔除(Eviction)
    如果客户端一定时间内没有发送心跳给Eureka server端,那么Eureka server端就会从服务列表剔除;
  • 服务下线(Cancel)

Eureka 高可用架构(ap架构)

image
服务启动后向Eureka注册并立即响应,后续Eureka Server异步将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。

正是因为本地缓存的设计才保证了eureka的高可用;

集群节点之间的数据同步通过广播的方式达到数据的最终一致性,有点像gossip算法;

Eureka server端的缓存架构

image
为了解决服务列表的读写冲突,Eureka采用多次缓存架构:
服务注册时,Eureka server端会将服务实例更新到注册列表缓存(registry)和读写缓存(readWriteCacheMap)中,然后每隔30秒将数据更新到只读缓存(readOnlyCacheMap)中;
客户端从Eureka server 端获取服务列表时,直接从读缓存(readOnlyCacheMap)中获取;

  • registry缓存
    实时更新,ui界面直接读取这个缓存,并且服务的注册和下线都是操作这个缓存;
  • readWriteCacheMap
    读写缓存,每次新的服务注册上来之后会清空这个缓存,客户端从readOnlyCacheMap中获取不到数据之后会从这里获取,如果这里也获取不到会从registry中加载进readWriteCacheMap并返回给客户端;

registry缓存的每次更新(新服务的注册,旧服务的剔除下线)都会清空readWriteCacheMap缓存,从而实现数据的一致性;
该缓存有过期时间180s

  • readOnlyCacheMap
    客户端端从这里获取数据,每隔30s会从readWriteCacheMap缓存中同步数据;

Eureka的自我保护机制

当因为网络原因导致大部分服务被剔出时,如果剔除的服务达到了Eureka的阈值,那么就会触发Eureka的自我保护机制,从而不会再剔除任何服务;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/742285.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法金 | 来了,pandas 2.0

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」今日 210+/10000,内含 Pandas 是一个强大的数据分析库,广泛应用于科学研究、金融分析、商业智能等领域。它提供了高效的数据结构和数据分析工具,使得处理和分析数据变…

给你安利一个程序员上岸公务员的开源项目

写在前面 也许你还在工位上焦虑着人工智能会不会替代自己 也许你还在为一眼看不到头的加班而苦恼 也许你还在为夜晚拉长了的背影而感到孤独无助。 那么今天推荐的这个开源项目或许值得你一看。 都说宇宙的尽头是考编,今天推荐的开源项目就是公务员从入门到上岸,最佳程序员公考…

WSL2连接USB设备(以USRP B210为例)

使用WSL2时,发现其无法直接识别到宿主机上插入的USB设备。 可利用USPIPD-WIN项目进行连接。 以下以USRP B210设备连接为例,展示连接过程: 安装USBIPD-WIN 项目 参考连接 USB 设备 | Microsoft Learn,我选择通过.msi文件安装:转到 usbipd-win 项目的最新发布页。 选择 .msi…

Simple WPF: S3实现MINIO大文件上传并显示上传进度

早两天写了一篇S3简单上传文件的小工具,知乎上看到了一个问题问如何实现显示MINIO上传进度,因此拓展一下这个小工具能够在上传大文件时显示进度。最新内容优先发布于个人博客:小虎技术分享站,随后逐步搬运到博客园。 创作不易,如果觉得有用请在Github上为博主点亮一颗小星…

.NET 9 预览版6发布

微软发布了 .NET 9 的第 6 个预览版,此版本包括对运行时、SDK、.NET MAUI、ASP.NET Core 和 C# 的更新,预览版没有包含太多新的主要功能或特性,因为已接近 .NET 9 开发的最后阶段,该开发计划于 11 月全面发布。Loongarch的Native-AOT代码合进去了,龙芯.NET 可以直接同步社…

【Azure Developer】一个复制Redis Key到另一个Redis服务的工具(redis_copy_net8)

介绍一个简单的工具,用于将Redis数据从一个redis端点复制到另一个redis端点,基于原始存储库转换为.NET 8:https://github.com/LuBu0505/redis-copy-net8介绍一个简单的工具,用于将Redis数据从一个redis端点复制到另一个redis端点,基于原始存储库转换为.NET 8:https://git…

[Windows环境]nvm工具的介绍和安装

nvm工具介绍 NVM(Node Version Manager)是一个用于管理Node.js版本的工具。它允许用户在同一台机器上同时安装和切换不同版本的Node.js,以便在不同的项目中使用特定的Node.js版本。同时为每个版本保留独立的环境,避免版本冲突和兼容性问题。此文章步骤以windows为例使用set…

劫持TLS绕过canary 堆和栈的灵活转换

引入:什么是TLScanary? TLScanary 是一种在 Pwn(主要是二进制漏洞利用)中常见的技术,专门用于处理 TLS 保护的二进制文件。在安全竞赛(例如 CTF)和漏洞利用场景中,攻击者需要应对目标程序的多层安全机制,其中 TLS 是一种常见的保护措施。TLScanary 结合了 TLS 协议与堆…

松灵机器人scout mini小车 自主导航(3)——建图导航仿真

松灵机器人Scout mini小车建图导航仿真 在之前的文章中,我们已经介绍了如何在gazebo和rviz对scout mini小车进行仿真,并且测试了添加自定义的传感器,在本文章中将进一步介绍如何利用scout mini小车 在仿真环境中建图和导航。 仓库链接: https://gitee.com/agent-explorer/ro…

ComfyUI进阶篇:ControlNet核心节点

前言: ControlNet_aux库包含大量的图片预处理节点,功能丰富,适用于图像分割、边缘检测、姿势检测、深度图处理等多种预处理方式。掌握这些节点的使用是利用ControlNet的关键,本篇文章将帮助您理解和学会使用这些节点。 目录 一、安装方法 二、模型下载 三、Segmentor节点 四…

面对百度的无期徒刑,幸好还有微软的必应

昨天我们通过【i博客园】公众号发布文章 被百度降权的经历:没有百度的日子,是百度给的无期徒刑 时发现,百度不但没有回心转意,反而对园子的处罚更加严厉了,博客主站(www域名)的新发内容一天内0收录。而在去年9月21日我们完全解除对百度蜘蛛的屏蔽后(详见博文),9月25日…

2024-07-11 npm publish报错合集

报错1:This package has been marked as private npm ERR! 你的包被设为私有模式了。npm ERR! code EPRIVATE npm ERR! This package has been marked as private npm ERR! Remove the private field from the package.json to publish it.原因:你发布的包被标记为私有了,如…