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的原理,开发者能够更好地利用其功能,构建出稳健、高可用的微服务体系。

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

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

相关文章

网络原理TCP/IP(1)

文章目录 端口号UDP协议 在网络通信中,协议非常重要 协议进行了分层 应用层就是对应着应用程序,是程序员打交道最多的这一层,调用系统提供的网络api写出来的代码都是属于应用层的 应用层有很多现成的协议,但是更多的还是程序员需要…

Redis篇之集群

一、主从复制 1.实现主从作用 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。主节点用来写的操作,从节点用来读操作,并且主节点发生写操作后,会把数据同…

RabbitMQ详解

RabbitMQ 1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应&a…

设计模式理解:单例模式+工厂模式+建设者模式+原型模式

迪米特法则:Law of Demeter, LoD, 最少知识原则LKP 如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。 所以,在运用迪米特…

一文读懂转融通

最近多家公司都在讲解关于转融通要求。今天我们就来详细聊聊! 转融通是一种证券借贷机制,它允许机构投资者在融资融券交易中借入或借出证券。 具体来说,机构投资者可以向券商借入证券,或者将持有的证券借给券商,以扩大…

诺奖经济学家称AI将取代STEM专业工作!Altman:人类无需工作,我给发钱

最近,2010年诺贝尔经济学奖得主,伦敦政治经济学院(LSE)教授Christopher Pissarides公开表态,在不远的未来,传统意义上的「数理化」学科知识和技能,都将会被AI取代。 这位劳动力市场经济学家警告…

mac检查CPU温度和风扇速度软件:Macs Fan Control Pro 1.5.17中文版

Macs Fan Control Pro for Mac是一款专业的电脑风扇控制工具,旨在帮助Mac用户有效控制电脑的风扇速度,提高电脑的运行效率和稳定性。 软件下载:Macs Fan Control Pro 1.5.17中文版 该软件支持多种风扇控制模式和预设方案,用户可以…

Vue源码系列讲解——虚拟DOM篇【一】(Vue中的虚拟DOM)

目录 1. 前言 2. 虚拟DOM简介 2.1什么是虚拟DOM? 2.2为什么要有虚拟DOM? 3. Vue中的虚拟DOM 3.1 VNode类 3.2 VNode的类型 3.2.1 注释节点 3.2.2 文本节点 3.2.3 克隆节点 3.2.4 元素节点 3.2.5 组件节点 3.2.6 函数式组件节点 3.2.7 小结 3…

使用pygame生成红包封面

import pygame import sys# 初始化pygame pygame.init()# 设置红包封面尺寸 size width, height 640, 960 screen_color (255, 0, 0) # 红色背景# 创建窗口 screen pygame.display.set_mode(size) pygame.display.set_caption(红包封面)# 加载龙形图片 dragon_image pygam…

运维自动化bingo前端

项目目录结构介绍 项目创建完成之后,我们会看到bingo_web项目其实是一个文件夹,我们进入到文件夹内部就会发现一些目录和文件,我们简单回顾一下里面的部分核心目录与文件。 ├─node_modules/ # node的包目录,项目运行的依赖包…

【C++】模板入门教程

C模板是C编程中的重要利器,能够大大提高编码效率。函数模板和类模板是模板编程中的两个重要概念,它们允许我们编写独立于数据类型的通用代码。 本文将深入介绍函数模板和类模板的使用方法,以及它们的实现原理、匹配规则和注意事项&#xff0…

Python进阶--下载想要的格言(基于格言网的Python爬虫程序)

注:由于上篇帖子(Python进阶--爬取下载人生格言(基于格言网的Python3爬虫)-CSDN博客)篇幅长度的限制,此篇帖子对上篇做一个拓展延伸。 目录 一、爬取格言网中想要内容的url 1、找到想要的内容 2、抓包分析,找到想…

交友系统---让陌生人变成熟悉人的过程。APP小程序H5三端源码交付,支持二开。

随着社交网络的发展和普及,人们之间的社交模式正在发生着深刻的变革。传统的线下交友方式已经逐渐被线上交友取而代之。而同城交友正是这一趋势的产物,它利用移动互联网的便利性,将同城内的人们连接在一起,打破了时空的限制&#…

[计算机提升] 备份系统:系统映像

6.3 备份系统:系统映像 备份系统和还原系统是一套互补的操作。 操作系统的备份就是将操作系统当前的所有数据复制到硬盘的一个空闲区域,以防止系统崩溃或数据丢失。还原操作则是将先前备份的数据恢复到操作系统中,使系统回到之前的样子&…

Matplotlib绘制炫酷散点图:从二维到三维,再到散点图矩阵的完整指南与实战【第58篇—python:Matplotlib绘制炫酷散点图】

文章目录 Matplotlib绘制炫酷散点图:二维、三维和散点图矩阵的参数说明与实战引言二维散点图三维散点图散点图矩阵二维散点图进阶:辅助线、注释和子图三维散点图进阶:动画效果和交互性散点图矩阵进阶:调整样式和添加密度图总结与展…

【小白开服日记】幻兽帕鲁服务器如何搭建?

玩转幻兽帕鲁服务器,阿里云推出新手0基础一键部署幻兽帕鲁服务器教程,傻瓜式一键部署,3分钟即可成功创建一台Palworld专属服务器,成本仅需26元,阿里云服务器网aliyunfuwuqi.com分享2024年新版基于阿里云搭建幻兽帕鲁服…

时序预测 | MATLAB实现基于CNN-BiLSTM-AdaBoost卷积双向长短期记忆网络结合AdaBoost时间序列预测

时序预测 | MATLAB实现基于CNN-BiLSTM-AdaBoost卷积双向长短期记忆网络结合AdaBoost时间序列预测 目录 时序预测 | MATLAB实现基于CNN-BiLSTM-AdaBoost卷积双向长短期记忆网络结合AdaBoost时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.Matlab实现…

多线程基础

线程与进程 进程 进程是对运⾏时程序的封装,是系统进⾏资源调度和分配的基本单位,实现了操作系统的并发。程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存&…

Arthas使用教程—— 阿里开源线上监控诊断产品

文章目录 1 简介2背景3 图形界面工具 arthas 阿里开源3.1 :启动 arthas3.2 help :查看arthas所有命令3.3 查看 dashboard3.4 thread 列出当前进程所有线程占用CPU和内存情况3.5 jvm 查看该进程的各项参数 (类比 jinfo)3.6 通过 jad 来反编译 …

2-1 动手学深度学习v2-Softmax回归-笔记

回归 VS 分类 回归估计一个连续值分类预测一个离散类别 从回归到多类分类 回归 单连续数值输出输出的区间:自然区间 R \mathbb{R} R损失:跟真实值的区别 分类 通常多个输出(这个输出的个数是等于类别的个数)输出的第 i i i…