当前位置: 首页 > news >正文

SpringCloud-Eureka原理分析

Eureka是Netflix开源的一款用于实现服务注册与发现的工具。在微服务架构中,服务的动态注册和发现是必不可少的组成部分,而Eureka正是为了解决这一问题而诞生的。

一、为何需要Eureka

在微服务架构中,服务之间的协同合作和高效通信是至关重要的。服务的自动注册与发现成为了解决这一挑战的核心问题之一。Eureka作为Netflix开源的服务注册与发现组件,提供了一种简单且高效的解决方案。通过Eureka,服务实例能够自动注册和注销,同时其他服务能够动态地发现和调用这些服务,实现了微服务架构中的高度灵活性和可伸缩性。 

可能这段话听上去有些晦涩难懂,下面就由我来举例解释:

如我们前面文章介绍的,微服务架构是一种优秀的分布式架构,是为了弥补单体应用的不足发展过来的。

传统的单体应用如下图:

各业务之间是耦合的,没有单独根据业务去做区分,部署虽然方便,但是容灾性比较差,一旦一个服务挂掉,整个应用都会宕机,而且每次发布,都需要全量部署,系统维护非常耗时,从而影响用户体验。

后面为了适应大项目的需求,解决这类宕机问题,分布式架构应运而生,服务按模块为单位进行封装,极大程度避免了整体宕机的问题,而且每次发布只需要发布所需要的模块。

分布式应用架构如下:

但分布式的服务调用问题也接踵而至。

由于服务分别部署在不同的端口,如果我们按照传统的调用方法,把端口号写死,那么会导致端口变动时需要反复部署。

传统服务调用如图所示:

这种硬编码地址的调用方法非常不灵活,我们需要做很多的端口配置,修改起来又需要重新部署,而且服务挂掉了,也没有补救措施。

对于服务挂掉的问题,我们的理想方案是同时启动多个相同服务,部署在不同端口,一旦一个服务挂掉了,系统可以自动选择出最优端口进行替补。

为此,Eureka 应运而生。

Eureka 重点解决的就是服务注册与发现、负载均衡的问题。

引入Eureka 解决服务注册与发现、负载均衡后的服务调用如图:


二、Eureka原理

Eureka 的原理基于 CAP(一致性、可用性、分区容忍性)理论。Eureka 通过维护一份服务注册表,记录了各个服务实例的信息,包括服务名、实例 ID、IP 地址等。服务提供者通过向 Eureka 服务器注册自身信息,而服务消费者则通过查询 Eureka 服务器来获得可用服务实例的信息。Eureka 还实现了心跳机制和自我保护机制,确保服务实例的及时发现和故障恢复。

下面我们来详细解释。

Eureka 工作原理图如下:

服务提供者在启动时向 Eureka 服务器注册自己的信息,包括服务名、实例 ID、IP 地址等。完成注册的服务会出现在图中的服务提供者模块里,供服务消费者调用时选择。

服务消费者同样也会向 Eureka 服务器注册。服务消费者通过查询 Eureka 服务器获取可用服务实例的信息,从而进行服务调用。

服务调用的过程,大概如下:

  • ① 服务提供者向 Eureka 服务器注册服务信息;
  • ② 服务消费者从 Eureka 服务器拉取已注册的服务提供者信息;
  • ③ 服务消费者选择其中一个最优的服务提供者,这个过程叫负载均衡;
  • ④ 服务消费者远程调用选定的服务提供者。

同时,Eureka 通过定时发送心跳来检测服务实例的健康状况,确保注册表的及时更新。当 Eureka 服务器在一定时间内未收到服务实例的心跳时,会进入自我保护模式,保障注册表的稳定性。


三、Eureka原理总结

总体而言,Eureka的工作原理可归纳为以下几点:

功能点功能详述
自动注册与发现Eureka 允许服务实例在启动时自动注册,同时其他服务可以通过查询 Eureka 服务器获得服务实例的信息,实现动态发现。
负载均衡Eureka 通过维护服务实例的注册表,使得服务消费者可以从多个可用实例中进行负载均衡,提高系统性能和可用性。
自我保护机制Eureka具备自我保护机制,能够在网络分区故障或服务实例长时间不发送心跳时,保障注册表的稳定性。
开源社区支持作为Netflix开源项目,Eureka得到了广泛的社区支持和持续的更新,使其成为一个稳定可靠的服务注册与发现解决方案。

Eureka的设计理念简单而实用,使得它成为构建微服务架构中服务注册与发现的首选解决方案。通过深入理解Eureka的原理,开发者能够更好地利用其功能,构建出稳健、高可用的微服务体系。

相关文章:

SpringCloud-Eureka原理分析

Eureka是Netflix开源的一款用于实现服务注册与发现的工具。在微服务架构中,服务的动态注册和发现是必不可少的组成部分,而Eureka正是为了解决这一问题而诞生的。 一、为何需要Eureka 在微服务架构中,服务之间的协同合作和高效通信是至关重要…...

LeetCode周赛——384

1.修改矩阵&#xff08;模拟&#xff09; class Solution { public:vector<vector<int>> modifiedMatrix(vector<vector<int>>& matrix) {int n matrix.size();int m matrix[0].size();vector<int> ans(m);for(int i 0; i < m; i)for(…...

C#,巴都万数列(Padonve Number)的算法与源代码

1 巴都万数列&#xff08;Padovan Sequence&#xff09; 巴都万数列&#xff08;Padovan Sequence&#xff09;是一个整数数列。 首数个值为1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 21, 28, 37 ... 此数列以建筑师理察巴都万命名&#xff0c;他的论文Dom&#xff08;1994年&a…...

NSSCTF Round#18 RE GenshinWishSimulator WP

恶搞原神抽卡模拟器 看到软件的界面&#xff0c;大致有三种思路&#xff1a; 修改石头数量一直抽&#xff0c;如果概率正常肯定能抽到&#xff08;但是估计设置的概率是0&#xff09;在源码里找flag的数据把抽卡概率改成100%直接抽出来 Unity逆向&#xff0c;根据经验应该dnsp…...

鸿蒙系统对应安卓版本

鸿蒙系统对应安卓版本 使用安卓studio 新建一个app 然后添加代码打印&#xff1a; Log.d(“MainActivity”, "SDK Version: " Build.VERSION.SDK_INT); 或者把 Build.VERSION.SDK_INT 添加到显示的字符串上面 我这里 build.gradle.kts 配置 android {compileSdk…...

算法-16-并查集

并查集简介 并查集&#xff1a;一开始&#xff0c;把a&#xff0c;b&#xff0c;c放入并查集&#xff0c;a自己一个集合&#xff0c;b自己一个&#xff0c;c自己一个 提供的方法 1.boolean isSameSet(a,b)&#xff0c;判断ab是否在同一个集合 2.void union(a,b),把a所…...

【C/C++】2024春晚刘谦春晚魔术步骤模拟+暴力破解

在这个特别的除夕夜&#xff0c;我们不仅享受了与家人的温馨团聚&#xff0c;还被电视机前的春节联欢晚会深深吸引。特别是&#xff0c;魔术师刘谦的精彩表演&#xff0c;为我们带来了一场视觉和心灵的盛宴。在我的博客“【C/C】2024春晚刘谦春晚魔术步骤模拟暴力破解”中&…...

Java运算符和表达式

Java运算符和表达式 和C语言一样&#xff0c;java也有基础的运算符和表达式&#xff0c;用来完成一些基础的数学计算&#xff0c;以及逻辑运算&#xff0c;我们一起来学习一下吧。 算数运算符 首先&#xff0c;这个算数运算符与数学中即C语言的运算符的功能一样&#xff0c;利…...

波奇学Linux:软硬链接

ln指令建立链接 软链接 硬链接 所属者的前的数字表示硬链接数&#xff0c;引用计数&#xff0c;file.txt和soft_link是软链接所以都为2 软链接有独立inode&#xff0c;硬链接没有&#xff0c;所以硬链接不是独立文件&#xff0c;软链接是独立文件&#xff0c;且硬链接的属性会…...

HTTP网络通信协议基础

目录 前言&#xff1a; 1.HTTP协议理论 1.1协议概念 1.2工作原理 1.3工作场景 2.HTTP抓包工具 2.1Fiddler工具 2.2抓包原理 2.3抓包结果 3.HTTP协议格式 3.1HTTP请求 3.2HTTP响应 3.3格式总结 前言&#xff1a; 在了解完网络编程的传输层UDP和TCP通信协议后&#…...

Java实现河南软件客服系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理人员2.2 业务操作人员 三、系统展示四、核心代码4.1 查询客户4.2 新增客户跟进情况4.3 查询客户历史4.4 新增服务派单4.5 新增客户服务费 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的河…...

【小沐学GIS】基于C++QT绘制三维数字地球Earth(OpenGL)

&#x1f37a;三维数字地球系列相关文章如下&#x1f37a;&#xff1a;1【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;456:OpenGL、glfw、glut&#xff09;第一期2【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;456:OpenGL、glfw、glut&#xff09;第二期3【小沐…...

如何生成生成一个修仙世界的狗血短剧剧本

如何生成生成一个修仙世界的狗血短剧剧本 生成一个修仙世界的狗血短剧剧本将上述剧本转为对话 生成一个修仙世界的狗血短剧剧本 剧本名称&#xff1a;《仙途情缘》 角色&#xff1a; 易天行&#xff1a;男主角&#xff0c;天赋异禀的修仙者&#xff0c;性格坚毅&#xff0c;正…...

【MIMO】

MIMO技术入门 1.简介 MIMO(多入多出):多天线技术。 注意&#xff1a;此处的多天线&#xff0c;并不是有多个天线板&#xff0c;对基站来讲指天线有多套振子&#xff08;每一套振子都可以看成一个独立的天线&#xff09;。 4G 8天线&#xff1b;5G 64T64R&#xff1b;不仅基站…...

ZooKeeper分布式锁

ZooKeeper是一个开源的分布式协调服务&#xff0c;它主要用于维护配置信息、提供分布式同步、命名服务等。ZooKeeper的数据模型类似于文件系统&#xff0c;它的数据结构中的每个数据节点称为znode&#xff0c;可以用它来实现分布式锁。 ZooKeeper分布式锁的原理&#xff1a; …...

WPF是不是垂垂老矣啦?平替它的框架还有哪些

WPF&#xff08;Windows Presentation Foundation&#xff09;是微软推出的一种用于创建 Windows 应用程序的用户界面框架。WPF最初是在2006年11月推出的&#xff0c;它是.NET Framework 3.0的一部分&#xff0c;为开发人员提供了一种基于 XAML 的方式来构建丰富的用户界面。 W…...

浅析Linux追踪技术之ftrace:Tracepoint

文章目录 概述Tracepoint使用定义Tracepoint添加Tracepoint调用 Tracepoint数据结构TRACE_EVENT实现DECLARE_TRACE__DECLARE_TRACE trace_xxx函数相关参考 概述 Tracepoint&#xff08;跟踪点&#xff09;是添加到代码流程中的调用点&#xff0c;并且允许开发者注册自定义的回…...

python ftp文件断点续传 并判断ftp文件下载完成

在Python中实现FTP文件的断点续传&#xff0c;通常涉及到以下步骤&#xff1a; 连接到FTP服务器。获取远程文件的大小。检查本地文件是否存在以及它的大小。如果本地文件不存在或大小小于远程文件&#xff0c;从上次中断的位置开始下载。下载完成后&#xff0c;检查文件大小以…...

SpringBoot+Vue3 完成小红书项目

简介 该项目采用微服务架构&#xff0c;实现了前后端分离的系统设计。在前端&#xff0c;我们选择了 Vue3 配合 TypeScript 和 ElementUi 框架&#xff0c;以提升开发效率和用户体验。而在后端&#xff0c;则是运用 SpringBoot 和 Mybatis-plus 进行开发&#xff0c;保证了系统…...

springboot集成Sa-Token及Redis的redisson客户端

文章目录 什么是Sa-Token?为什么集成Redis的redisson客户端?如何集成?maven依赖application.yml配置过滤器配置验证参考什么是Sa-Token? Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权…...

YOLOv11厨房食材目标检测数据集-2499张-Meat-1_5

YOLOv11厨房食材目标检测数据集 &#x1f4ca; 数据集基本信息 目标类别&#xff1a; [‘ayam’, ‘beef’, ‘pork’]中文类别&#xff1a;[‘鸡肉’, ‘牛肉’, ‘猪肉’]训练集&#xff1a;2256 张验证集&#xff1a;164 张测试集&#xff1a;79 张总计&#xff1a;2499 张 …...

嵌入式系统学习路线:从C语言到RTOS/Linux的四年规划

1. 项目概述&#xff1a;为什么需要一个清晰的嵌入式学习路线&#xff1f;如果你是一名刚踏入大学校门&#xff0c;对电子、计算机或者自动化感兴趣的新生&#xff0c;看到“嵌入式”这个词&#xff0c;可能会觉得它既神秘又遥远。它不像手机App开发那样触手可及&#xff0c;也…...

影刀RPA跨境店群自动化实战:Python协同Chromium底层调度与容器化环境隔离系统架构

定了。在这场旷日持久的跨境电商反爬风控拉锯战中&#xff0c;我们终于用一套基于 Python 深度协同的分布式微服务调度架构&#xff0c;重塑了跨境千店矩阵的自动化底座。 这几天&#xff0c;科技圈被“DeepSeek V4 首发华为昇腾芯片&#xff0c;国产 AI 开始打破英伟达 CUDA …...

探索罗技鼠标宏:掌握PUBG压枪技术的完整路径

探索罗技鼠标宏&#xff1a;掌握PUBG压枪技术的完整路径 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 在《绝地求生》这款竞技性极强的射击游戏…...

周奕成(中国武术散打运动员)

周奕成&#xff0c;男&#xff0c;出生于辽宁省海城市&#xff0c;中国武术散打运动员&#xff0c;二级运动员&#xff08;三次认证&#xff09;&#xff0c; 所属队伍为辽宁省散打专业队&#xff0c;参赛体重区间&#xff1a;60kg → 65kg → 70kg 。赛事与等级认证1. 2023年 …...

初次使用Taotoken完成模型调用从注册到收到响应的全过程记录

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初次使用Taotoken完成模型调用从注册到收到响应的全过程记录 作为一名开发者&#xff0c;当需要将大模型能力集成到自己的项目中时…...

收藏!小白程序员必看:如何抓住AI大模型时代红利?从入门到高薪就业全解析!

脉脉《2026春招职场洞察报告》显示&#xff0c;AI岗位量同比暴增8.7倍&#xff0c;AI科学家/负责人月薪破10万元&#xff0c;成为高薪职业断层领先者。新经济行业高薪岗位TOP20中&#xff0c;AI占据多数。字节跳动、大疆等大厂吸纳就业力强。文章建议考生关注AI相关新专业&…...

开发雨天居家室内活动推荐程序,根据人数年龄自动生成雨天居家休闲创意活动。

一个完全去营销化、偏工程与创业实验视角的 Python 示例项目&#xff0c;定位为课程级 MVP 原型&#xff0c;不绑定任何平台、不推荐商品、不引导消费。雨天居家室内活动推荐程序——基于人数与年龄的规则推荐系统实验一、实际应用场景描述在下雨天气&#xff0c;家庭或室友常面…...

告别VirtualBox的‘不是Host-Only适配器’错误:一个网络配置的深度修复指南

VirtualBox Host-Only网络故障全解析&#xff1a;从原理到实战修复 当你正准备启动VirtualBox中的开发环境虚拟机时&#xff0c;突然弹出的红色错误提示框让所有工作戛然而止——"Interface is not a Host-Only Adapter"。这个看似简单的网络适配器错误背后&#xf…...

【权威验证】Perplexity书评辅助效果对比实验:传统写作vs AI增强写作(N=1,247篇样本,p<0.001)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;【权威验证】Perplexity书评辅助效果对比实验&#xff1a;传统写作vs AI增强写作&#xff08;N1,247篇样本&#xff0c;p<0.001&#xff09; 本实验基于真实学术出版场景&#xff0c;对1,247篇计算机科学领…...