Spring Cloud Alibaba - Nacos理论面试总结-未完结

news/2025/1/15 3:18:58/

临时实例和永久实例

临时实例和永久实例在 Nacos 中是一个非常非常重要的概念

之所以说它重要,主要是因为我在读源码的时候发现,临时实例和永久实例在底层的许多实现机制是完全不同的

临时实例

临时实例在注册到注册中心之后仅仅只保存在服务端内部一个缓存中,不会持久化到磁盘

这个服务端内部的缓存在注册中心届一般被称为服务注册表

当服务实例出现异常或者下线之后,就会把这个服务实例从服务注册表中剔除

永久实例

永久服务实例不仅仅会存在服务注册表中,同时也会被持久化到磁盘文件中

当服务实例出现异常或者下线,Nacos 只会将服务实例的健康状态设置为不健康,并不会对将其从服务注册表中剔除

所以这个服务实例的信息你还是可以从注册中心看到,只不过处于不健康状态

为什么 Nacos 要将服务实例分为临时实例和永久实例?

临时实例就比较适合于业务服务,服务下线之后可以不需要在注册中心中查看到
永久实例就比较适合需要运维的服务,这种服务几乎是永久存在的,比如说 MySQL、Redis 等等

当然如果你想改成永久实例,可以通过下面这个配置项来完成

spring  cloud:   nacos:    discovery:      #ephemeral单词是临时的意思,设置成false,就是永久实例了   ephemeral: false

在 1.x 版本中,一个服务中可以既有临时实例也有永久实例,服务实例是永久还是临时是由服务实例本身决定的

但是 2.x 版本中,一个服务中的所有实例要么都是临时的要么都是永久的,是由服务决定的,而不是具体的服务实例

所以在 2.x 可以说是临时服务和永久服务
在这里插入图片描述

为什么 2.x 把临时还是永久的属性由实例本身决定改成了由服务决定?

其实很简单,你想想,假设对一个 MySQL 服务来说,它的每个服务实例肯定都是永久的,不会出现一些是永久的,一些是临时的情况吧

所以临时还是永久的属性由服务本身决定其实就更加合理了

服务注册

1.x 版本的实现
在 Nacos 在 1.x 版本的时候,服务注册是通过 Http 接口实现的

在这里插入图片描述
2.x 版本的实现
Nacos 客户端在启动的时候,会通过 gRPC 跟服务端建立长连接

在这里插入图片描述

这个连接会一直存在,之后客户端与服务端所有的通信都是基于这个长连接来的

当客户端发起注册的时候,就会通过这个长连接,将服务实例的信息发送给服务端

服务端拿到服务实例,跟 1.x 一样,也会存到服务注册表

除了注册之外,当注册的是临时实例时,2.x 还会将服务实例信息存储到客户端中的一个缓存中,供 Redo 操作

所谓的 Redo 操作,其实就是一个补偿机制,本质是个定时任务,默认每 3s 执行一次

这个定时任务作用是,当客户端与服务端重新建立连接时(因为一些异常原因导致连接断开)

那么之前注册的服务实例肯定还要继续注册服务端(断开连接服务实例就会被剔除服务注册表)

所以这个 Redo 操作一个很重要的作用就是重连之后的重新注册的作用


http://www.ppmy.cn/news/1563207.html

相关文章

【数学】概率论与数理统计(五)

文章目录 [toc] 二维随机向量及其分布随机向量离散型随机向量的概率分布律性质示例问题解答 连续型随机向量的概率密度函数随机向量的分布函数性质连续型随机向量均匀分布 边缘分布边缘概率分布律边缘概率密度函数二维正态分布示例问题解答 边缘分布函数 二维随机向量及其分布 …

IDEA中创建maven项目

1. IDEA中创建maven项目 在IDEA中创建Maven项目,前提是已经安装配置好Maven环境。如还未配置安装Maven的,请先下载安装。如何下载安装,可参考我另外篇文章:maven的下载与安装教程本篇教程是以创建基于servlet的JavaWeb项目为例子&…

JS点击对应复选框,对应内容区域隐藏

如果页面上的内容是正常显示的&#xff0c;则复选框默认勾选 点击复选框之后对应的区域就会隐藏 <div class"setting"><img src"./img/setting.png" alt""><div class"setBox"><label for"idBox" styl…

Pytest安装Allure生成自动化测试报告

Date: 2025.01.09 16:33:01 author: lijianzhan Allure 是一个强大的测试报告框架&#xff0c;能够生成美观且详细的测试报告。它与 pytest 结合使用&#xff0c;可以帮助你更好地展示测试结果、分析测试数据&#xff0c;并提高测试的可读性和可维护性。以下是关于如何在 Pytho…

HTTP/HTTPS ④-对称加密 || 非对称加密

这里是Themberfue ✨HTTP协议的大体内容我们已经讲完了 ❤️本章我们将聊聊HTTPS中的 S 那些事儿 HTTPS简介 ✨在前三篇文章中&#xff0c;我们主要讲解了HTTP协议的简单介绍以及其报文的键值对含义等。比较于HTTP&#xff0c;HTTPS有什么不同呢&#xff1f;它们两者又有什么…

网络原理(三)—— 传输层 之 UDP 和 TCP协议

传输层 在传输层两大关键的协议就是UDP和TCP协议了&#xff0c;除此之外&#xff0c;还有别的传输层协议&#xff0c;本文章将介绍UDP和TCP协议&#xff0c;重点介绍TCP协议。 首先回顾TCP和UDP 的特点&#xff1a; UDP&#xff1a;不可靠传输&#xff0c;面向数据包&#xf…

Vue2+OpenLayers调用WMTS服务初始化天地图示例(提供Gitee源码)

目录 一、案例截图 二、安装OpenLayers库 三、WMTS服务详解 四、完整代码 五、Gitee源码 一、案例截图 二、安装OpenLayers库 npm install ol 三、WMTS服务详解 WMTS&#xff08;Web Map Tile Service&#xff09;是一种标准的网络地图服务协议&#xff0c;用于提供基于…

在Linux中,系统的开机启动顺序是什么?

在Linux中&#xff0c;系统的开机启动顺序是一个复杂但有序的过程&#xff0c;它涉及从硬件自检到用户登录的多个阶段。以下是Linux系统开机启动顺序的详细说明&#xff1a; 一、BIOS自检与启动设备选择 加载BIOS&#xff1a; BIOS&#xff08;基本输入输出系统&#xff09;是…