Eureka服务注册与发现中心

news/2024/7/20 18:22:30/文章来源:https://blog.csdn.net/qq_45950109/article/details/139087092

Eureka服务注册与发现中心

两个概念:server服务端和client客户端

我们在一个项目中通常会有各种各样的模块服务,比如说在一个电商项目中可能会有订单模块服务、付款模块服务、发货模块服务,实际项目中的每个模块服务在Eureka服务注册与发现中心都是对应client客户端;
而对于Eureka服务注册与发现中心的server服务端,可以理解成是一个独立于项目之外的一个管理中心,这个管理中心不属于我们的项目模块,但它可以用来管理我们实际的项目中的各个模块之间的微服务。

eureka里的client客户端
因此,对于我们项目中的每个模块的微服务,不管是服务提供者还是服务消费者,对于Eureka来说都只是一个微服务而已。我们都需要引入eureka-client客户端依赖,并且在启动类上使用Eureka客户端相关注解@EnableEurekaClient,如下图:
在这里插入图片描述

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>

在这里插入图片描述
我们上面的payment8001是一个服务提供者,提供者的意思就是说这个微服务不会调用其他的微服务,但其他的微服务会调用这个微服务,比如order80服务就是一个消费者,这个微服务会去调用payment8001服务。但是既便你是消费者服务,本质上来说你也就是一个服务而已,对于Eureka服务注册与发现中心来说没啥差别,因此消费者服务order80也需要在启动类上写上@EnableEurekaClient注解,并且也需要在pom.xml里面引入eureka-client的相关依赖。

eureka里的server服务端
对于eureka里的server服务端,它不是我们项目里面的模块服务,而是相当于一个管理项目里的各个模块微服务的管理中心。
一个eureka服务端需要在pom.xml文件中引入eureka-server依赖,并且还需要在启动类上配置@EnableEurekaServer注解,如下图:
在这里插入图片描述

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>

在这里插入图片描述

eureka相关的配置,每个配置的作用是什么?

eureka-client客户端相关配置
首先来看下在application.yml配置文件中,关于eureka-client客户端的常见的配置都有哪些,如下图:
在这里插入图片描述
eureka-client客户端的配置是使用的client关键字,如上图,接下来我们来一个一个配置说下他们的作用。

register-with-eureka
register-with-eureka表示的是是否把自己注测到eureka微服务管理中心中去,因为当前是eureka-client客户端,是项目里面的一个实实在在的微服务,因此肯定是要注册到管理中心去的,因此这里的值我们设置的是ture。而如果要是eureka-server服务端,则设置成false。

fetch-registry(其中fetch是得到的意思)
fetch-registry的作用主要是开启服务发现功能。对于项目里面的每个服务,也就是对于eureka管理中心的每个微服务来说,它都需要能够有发现其他微服务的本领,因为eureka管理中心的微服务之间是相互联系的,他们后期需要相互之间调用,因此对于注册到eureka管理中心的每个微服务来说,它们都是eureka-clinet客户端,我们都需要把fetch-registry的值设置成true;
但是对于eureka-server服务器来说,它不需要有发现别的微服务并调用的功能,因为它的主要职责不是去调用其他的微服务,而是去管理好这些微服务,因此对于eureka-server服务器来说需要把fetch-registry设置为false。

defaultZone
defaultZone的作用是设置eureka-client客户端与eureka-server服务器交互的地址,用于服务的注册和发现。

当一个微服务启动的时候,会通过defaultZone的地址把自己注册到eureak管理中心去,这样其他的微服务就能调用自己;当一个微服务想要去调用其他的微服务的时候,它首先需要得到defalutZone的地址,以获取eureka管理中心,这样它才能去eureka管理中心中去调用其他微服务;

因此如果你的defaultZone的地址设置的不正确,那么你的微服务启动之后它的服务注册就不能注册到eureka管理中心中,并且它调用其他微服务的时候也会因为找不到eureka管理中心进而找不到它想要调用的微服务。

instance-id
instance-id的作用是用来唯一标识eureka管理中心的一个微服务,它其实就相当于我们数据库表的一个主键id一样。如果没有设置这个id值,那么当前微服务注册到eureka管理中心之后会生成一个默认的主键id值,设置了就是我们设置的id,如下图:
在这里插入图片描述
prefer-ip-address
当鼠标放到instance-id主键id上之后,可以显示微服务的ip地址。假如prefer-ip-address的值设置的为false,那么当鼠标放到instance-id上的时候是显示不出来ip地址的,如下图:
在这里插入图片描述
但如果改成true就可以了,如下图:
在这里插入图片描述

lease-renewal-interval-in-seconds
lease-renewal-interval-in-seconds,租约更新时间,比如上面就是1s钟更新一次租约,通常会配合下面的lease-expiration-duration-in-seconds租约过期持续时间来使用(默认90s),比如我们上面的租约过期持续时间设置的是2s。那么这两个结合起来是什么意思呢?
就是如果1s内eureka-server服务器可以收到eureka-client客户端的心跳,那么会更新租约,租约是续约状态;但是如果1s内服务器没收到客户端的心跳,并且2s内也一直没有收到,那么服务器会把当前的eureka-client客户端微服务的状态设置为 已过期状态,这个时候我理解的是eureka-server服务器还没有在它的管理中心中清楚掉这个微服务,那什么时候清楚呢?

请看eureka-server中的配置。如下。

eureka-server服务端相关配置
注意eureka-server服务端相关的配置也可以写client关键字,具体相关配置如下图:
在这里插入图片描述
client的对应配置我们已经说过了,这里就不再重复叙述了,我们主要来说下server对应的相关配置。

eviction-interval-timer-in-ms(eviction是驱逐的意思)
单位ms。
如果在设置时间内,仍然没有收到管理中心中微服务的心跳,那么Eureka-Server管理中心会把服务注册表中相关的微服务给清楚掉。默认是6000ms一分钟。
如果在设置的时间内仍然没有收到微服务的心跳,并且此微服务的状态为已过期的状态,Eureka-Server管理中心就会把服务注册表中的相关的微服务给清除掉。

误区解释
刚开始的时候我看eureka-client客户端有个lease-expiration-duration-in-seconds配置,默认是90s,也就是90s内未续约的都会变成已过期状态,会被eureka-server清楚掉;
但是我们eureka-server服务端也有个类似的eviction-interval-timer-in-ms配置,默认是60000ms也就是60s,如果微服务60s内没有像eureka-server发送心跳,那么也会被清楚掉;
看到这两个我就有点懵了,因为既然它俩都可以控制eureka-server管理中心清楚微服务的时间,直接设置一个不就行了吗?为什么还要开发两个呢?那如果同时设置两个,是不是会按时间最小的来呢?比如说 都是默认值的话,那如果一个微服务60s都没有向eureka-server发送心跳,那它是不是就会被清楚掉呢?其实是不会的,因为60s之后只会清楚掉已经标记过期的微服务,这样解释设置两个配置才说得通。比如60s内一个微服务没有发送心跳,但是因为还没有达到90s,所以微服务的租约还未过期,而在60s的时候eureka管理中心只会清楚掉哪些租约过期的微服务;如果等到70s的时候,有了心跳,那么微服务相当于再次续约了,这样到下一个60s的时候eureka管理中心就不会清楚掉这个微服务了;但如果90s过后该微服务仍然没有续约,那它就会被标记为已过期状态了,等到下个60s的时候就会被eureka管理中心从服务注册表中清楚掉了。

enable-self-preservation
enable-self-preservation的作用是是否开启自我保护机制。
为什么需要自我保护机制呢?假如现在由于网络问题,微服务向eureka管理中心发送心跳时数据传输有问题,那么eureka管理中心可能会由于检测不到微服务的心跳,就把此微服务删除了。但此微服务还是可用状态,只不过是因为网络出问题了而已。所以这就会导致eureka管理中心误删微服务,那么为了解决这个问题,eureka设置了一种自我保护机制,就是既便eureka管理中心没有收到微服务的心跳,但是仍然不会删除它,所有微服务此时都不会删除,因为eureka的解释是目前网络出现了问题,并不是微服务出问题了。

默认是等到是三个心跳周期lease-expiration-duration-in-seconds后,也就是默认是3个90s之后,如果还没收到微服务的心跳,此时才会删除。

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

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

相关文章

自己手写一个单向链表【C风格】

//单链表 #include <iostream> #define MAX_SIZE 20 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0typedef int ElemType;//元素的类型 typedef int Status;//返回状态typedef struct Node {ElemType data;//链表中保存的数据struct Node* next;//指向下…

ArcGIS提取含有计曲线的等高线

喜欢就关注我们吧&#xff01; 今天我么来看看&#xff0c;如何利用DEM提取含有计曲线的等高线&#xff01; 常规的话我们利用DEM提取的等高线都是不带计曲线的&#xff0c;无法把计曲线标注出来&#xff0c;今天我们就来看下&#xff0c;如何处理一下哦&#xff01;提取带有计…

人工智能在肺癌领域的最新进展|【医学AI·顶刊速递·05-28】

小罗碎碎念 2024-05-28&#xff5c;文献速递 今天推荐的6篇文章&#xff0c;质量都非常的高&#xff0c;都是与肺癌相关的最新进展。 看我推文的&#xff0c;很多来自不同的专业&#xff0c;研究不同的癌种。小罗友情提醒&#xff0c;不要只盯着自己领域的癌种&#xff0c;要兼…

第七节:带你全面理解vue3: 其他响应式进阶API

前言: 针对vue3官网中, 响应式:进阶API 中, 我们在上一章中给大家讲解了shallowRef, shallowReactive, shallowReadonly几个API的使用. 本章主要对剩下的API 进行讲解, 我们先看一下官网中进阶API 都有那些 对于剩下这些API, 你需要了解他们创建目的, 是为了解决之前的API存在…

Android 生成正式版密钥库 KeyStore

步骤1&#xff1a;打开生成正式版密钥库设置 点击 Build 菜单&#xff0c;选择 Generate Signed App Bundle or APK&#xff1a; 这是打开后的样子&#xff1a; 步骤2&#xff1a;选择 APK Android App Bundle 是用于上架 Google Play 商店的。 正常情况下选择 APK。 选择…

总是不能盈利?试着用这两个观点去学习现货白银的技巧

一进入现货白银市场&#xff0c;投资者都想着如何去找到现货白银交易的机会&#xff0c;学习现货白银投资的方法。其实这些都是手段&#xff0c;而最终的目的还是为我们的盈利服务。而对于盈利来说&#xff0c;其实胜率和风险报酬比才是影响盈利的重要因素&#xff0c;我们带着…

设计软件有哪些?建模和造型工具篇(4),渲染100邀请码1a12

建模使用到的工具有很多&#xff0c;这次我们接着介绍。 1、PolyBoost PolyBoost是由Digimation公司开发的3ds Max插件&#xff0c;旨在增强软件的多边形建模功能。该插件提供了一系列强大的建模工具&#xff0c;如边缘控制、顶点编辑、面片调整等&#xff0c;使用户能够更加…

短视频脚本创作的五个方法 沈阳短视频剪辑培训

说起脚本&#xff0c;我们大概都听过影视剧脚本、剧本&#xff0c;偶尔可能在某些综艺节目里听过台本。其中剧本是影视剧拍摄的大纲&#xff0c;用来指导影视剧剧情的走向和发展&#xff0c;而台本则是综艺节目流程走向的指导大纲。 那么&#xff0c;短视频脚本是什么&#xf…

每日一题《leetcode--59.螺旋矩阵 》

https://leetcode.cn/problems/spiral-matrix-ii/ 这道题跟我昨天发布的那道题一模一样&#xff0c;只需要注意这个矩阵是n*n。 文章代码如下&#xff1a; int** generateMatrix(int n, int* returnSize, int** returnColumnSizes) {int** array (int**)malloc(sizeof(int*) *…

加密资产私钥安全完整手册(一) ,bitget钱包为例

比特币和以太坊等加密货币的兴起开创了数字金融的新时代&#xff0c;但也带来了独特的安全挑战。这些代表现实世界价值的数字资产已成为黑客和窃贼的主要目标。为了安全地应对这种情况&#xff0c;了解私钥的基本概念至关重要。 私钥是加密货币所有权和安全性的基石。它们相当于…

完成商品SPU管理页面

文章目录 1.引入前端界面1.将前端界面放到commodity下2.创建菜单3.进入前端项目&#xff0c;使用npm添加依赖1.根目录下输入2.报错 chromedriver2.27.2的问题3.点击链接下载压缩包&#xff0c;然后使用下面的命令安装4.再次安装 pubsub-js 成功5.在main.js中引入这个组件 4.修改…

真实故障分享,H3C ER3208G3-X路由器-双绞线一闪一停

六类非屏蔽双绞线 网线钳 如上图所示&#xff0c;2号线接到h3c路由器出现网线一闪一停&#xff0c;用对线器测试一到8芯能一一对应&#xff0c;无法上网。2号线接到h3c交换机能正常上网&#xff0c;难道是网线对568A 568B有要求&#xff1f; 解决方式&#xff1a;通过两端568…

本地开发正常 线上CI/CD构建项目过程报错文件未能正确引用

问题快照 原因分析&#xff1a; 一般遇到这样的错误就是 文件路径或者文件名称未能正确匹配 或者文件不存在 会报这样的错误 以为很好解决 但这次 都排查 了 就是 没发现原因 不管怎么说还是要感谢 GPT的能力(分析问题的能力) 先上图 当我看到 第四步的时候 我立马 去仓库里查…

大模型预训练结果到底是什么?

近日参加一个线下 AI 交流会议&#xff0c;会上有个非本行业的老师提问&#xff1a;“大家说的训练好的大模型到底是什么&#xff1f;是像 Word 软件一样可以直接使用的程序吗&#xff1f;” 这个问题看似简单&#xff0c;却一下把我问住了。的确&#xff0c;我们这些身处 AI 领…

POLARDB:新零售用户MySQL上云最佳选择

什么是云数据库POLARDB&#xff1f; POLARDB是阿里云自主研发的最新一代RDS关系型数据库&#xff0c;是特别针对互联网场景设计的Cloud-Native 云原生数据库。POLARDB for MySQL版本&#xff0c;在提供100%兼容MySQL5.6/8.0的关系型事务处理ACID特性之上&#xff0c;能够提供完…

算法之背包问题

可分的背包问题是可以用贪心法来解决&#xff0c;而0-1背包问题通常使用动态规划方法来解决。 可分背包问题&#xff1a; 在可分背包问题中&#xff0c;物品可以被分割&#xff0c;您可以取走物品的一部分以适应背包的容量。这里的关键是物品的价值密度&#xff0c;即单…

间接平差——以水准网平差为例 (python详细过程版)

目录 一、原理概述二、案例分析三、代码实现四、结果展示本文由CSDN点云侠原创,间接平差——以水准网平差为例 (python详细过程版),爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 一、原理概述 间接平差的函数模型和随机模型…

py黑帽子学习笔记_scapy

简介 代码简洁&#xff1a;相比于前两个博客总结&#xff0c;很多socket操作&#xff0c;如果使用scapy仅需几行代码即可实现 获取邮箱身份凭证 编写基础嗅探器&#xff0c;脚本可显示任何收到的一个包的详细情况 直接运行 尝试监听邮件收发&#xff0c;监听指定端口&#x…

解密网络流量监控:优化IT运维的利器

引言&#xff1a; 在当今数字化时代&#xff0c;网络流量监控是维护网络稳定与业务连续性的关键。作为一名资深网络工程师&#xff0c;我将分享一些关于网络流量监控的重要知识&#xff0c;并探讨如何在IT运维中运用这一工具优化网络性能&#xff0c;确保业务的顺畅进行。 1. 网…

Biological Psychiatry:内源性功能连接的特定模式与强迫症的伤害回避有关

摘要 强迫症(OCD)患者通常在没有实际威胁的情况下表现出持续的回避行为。强迫症对生活质量的影响和患者之间的异质性使得寻找新的大脑-行为干预目标十分有必要。基于啮齿类动物和非人灵长类动物持续回避行为的机制和解剖学研究&#xff0c;本研究的目标是测试持续回避行为相关…