nacos常见面试题(2024)
nacos永久实例与临时实例区别
nacos实例有2种,分别为临时实例(一般业务服务是临时的)和永久实例(如mysql、redis这种运维服务需要实时看到状态的设置为永久实例)。
临时实例只会缓存到服务注册列表中,下线一段时间后会被删除,永久实例不仅缓存到服务注册表中还会持久化到磁盘,下线后只是状态的改变不会被删除。
naclos1.x版本决定实例是临时还是永久是实例的本身,所以会出现一个服务有临时实例和永久实例,2.x版本后维度变成了服务,即服务要么是临时要么是永久,下面的实力只会有一种状态。
springcloud:nacos:discovery:#ephemeral单词是临时的意思,设置成false,就是永久实例了ephemeral: false
nacos服务注册原理
nacos1.x版本客户端通过发送http请求到服务端注册服务。

nacos2.x版本客户端启动的时候会跟nacos建立长连接,后续客户端注册及其它通讯都是基于这个长连接,目前假设长连接第一次建立的时候客户端会去做注册、订阅操作,假如服务端发现实例是临时实例会把一些信息缓存到客户端(如服务信息、订阅信息),这样做的目的是为了防止长连接因为某些原因端口重新连接上的时候做一个redo(本质就是个补偿机制,启动一个定时任务不停执行3s一次)操作,如重新注册服务、订阅。

nacos临时实例保活机制?
通过心跳机制来判断注册服务的状态。
nacos1.x实现逻辑是客户端会为临时实例开启一个心跳上报定时任务(5s),通过http请求定时上报心跳信息,nacos服务端接收到上报信息后更新服务实例最后上报时间,服务端也开启一个定时任务(3s)定时查询服务实例心跳信息,如果发现超过15s没有上报信息会标志为不健康,超过30s会直接删除实例。

nacos2.x由于通讯协议改成了grpc,客户端跟服务端保持长连接,nacos利用了grpc协议本身心跳机制实现服务实例是否存活检测,如果连接断开就任务客户端服务异常,从服务注册表剔除。nacos服务端启动一个定时任务,每3s去查询超过20s没有发送数据的连接,然后发送一个请求如果不通或者无响应就剔除服务。
nacos健康检查机制
永久实例无法通过心跳的机制来保活,所以nacos服务端启动一个健康检查定时任务向实例发送请求(2~7秒之间),检测实例是否存活,发送方式有TCP(默认)、HTTP、MYSQL。
naocs服务发现
nacos1.x版本服务发现大致分为3步
1、客户端启动的时候会去构建一个PushReceiver类,这个类会创建一个UDP Socket,端口是随机的,用来接收服务端推送订阅信息。
2、客户调用NamingService#subscribe发起订阅的时候,先去服务端查询所有订阅的服务信息,并缓存到客户端内部缓存中,并把UDP Socket作为参数传给服务端,后续服务端服务列表发生变化就会通过UDP Socket把信息推送给客户端,客户端更新缓存服务列表信息。
3、客户端会针对本次定义启动一个不定时任务(10~60秒),从服务端查询订阅的服务实例信息然后更新内部缓存(通过版本对比是否发送了变化)。

nacos2.x版本主要是抛弃了UDP推送方式,换成了更加稳定的gRPC长连接方式推送数据,定时对比机制不定时任务由默认开启改成默认不开启。

nacos数据一致性实现
nacos服务实例责任制-当nacos是与集群的方式部署时,为了平衡服务的压力,nacos会根据某些规则让每个服务只管理一部分服务实例(注册、保活机制、健康检查),服务注册列表是存了所有的。
nacos支持AP或者CP。
AP-阿里是通过自研的Distro保证集群服务的AP,每个服务端节点是平衡状态,当接收到服务实例注册请求的时候完成自身注册表更新后还会向其它所以服务发送请求,把服务实例数据同步到其它所以节点,失败了会重试直到成功。为了保证服务端之间数据最终一致性除了重试机制外还有定时对比机制,每个服务端都会启动一个定时任务,向各个服务端发送请求告诉其它服务自己负责实例的对应版本号,如果发现谁的不是最新的就会触发同步。

CP-1.x早期版本是自己手动实现Raft算法,2.x版本后改为蚂蚁开源JRaft框架,通过算法选举出一个Leader负责读写,写操作的时候同时同步从节点,只有超过一半的从节点同步成功后主节点才认为本次写操作成功。从节点只能读不能写。

相关文章:
nacos常见面试题(2024)
nacos永久实例与临时实例区别 nacos实例有2种,分别为临时实例(一般业务服务是临时的)和永久实例(如mysql、redis这种运维服务需要实时看到状态的设置为永久实例)。 临时实例只会缓存到服务注册列表中,下线…...
68000汇编实战01-编程基础
文章目录 简介产生背景应用领域 语言学习EASy68K帮助文档IDE使用 编程语言commentslabels开始标签指令标签位置标签 opcode 操作码常用操作码数据传送算术运算逻辑运算控制流分支跳转地址跳转子程序跳转 位操作比较堆栈操作 IO操作码其他操作码 directives 指令DC指令EQU 指令S…...
你的网站真的安全吗?如何防止网站被攻击?
你的网站被黑客攻击过,很可能不止一次! 这可不是危言耸听。微软最近发布了《2024 年微软数字防御报告》,报告中写到:“Windows 用户每天面临超过 6 亿次网络犯罪和国家级别的攻击,涵盖了从勒索软件到网络钓鱼再到身份…...
UE5 材质编辑器CheapContrast 节点
在 Unreal Engine 材质编辑器中,CheapContrast 节点是一个非常实用的节点,主要用于对图像或纹理的 对比度 进行调整,且执行效率较高,适合在性能要求较高的场景中使用。 CheapContrast 节点的作用 CheapContrast 节点通过调整输入…...
健身房小程序服务渠道开展
健身不单单是锻炼身体、保持身材,也是一种社交方式,城市里门店不少,每家都有一定流量和老客,但仅靠传统线下拉客/自然流量前往和线上朋友圈、短视频发硬广等方式还不够。 商家需要找到更多潜在目标客户,而消费者也对门…...
Java基础面试题08:Java中Exception和Error有什么区别?
在Java中,Exception 和 Error 是异常处理体系的两大核心概念。要理解它们的区别和应用,咱们可以逐步剖析。 Exception和Error的基础区别 共同点: 两者都继承自 Throwable 类,只有 Throwable 类型的实例才能被 throw 或 catch。 区…...
什么是axios?怎么使用axios封装Ajax?
学习目标 什么是axios怎么使用axios封装Ajax该如何使用Axios 封装 XHR 请求 什么是axios Axios 是一个基于 Promise 的 HTTP 客户端,它可以在浏览器和 Node.js 环境中使用。Axios 提供了简单易用的 API,用于执行各种 HTTP 请求操作,如 GET、P…...
Web前端学习_CSS盒子模型
content padding border margin <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>CSS盒子模型</title><style></style> </head> <body> <div class"demo&quo…...
JAVA项目-------医院挂号系统
1,项目目的 1、科室管理:新增科室,删除科室(如果有医生在,则不能删除该科室),修改科室。 2、医生管理:录入医生信息,以及科室信息。修改医生信息(主要是修改…...
[工具分享] 根据Excel数据根据Word文档模板,批量创建生成Word文档并重命名,方便快速查找打印
前几天交楼的小姐姐要多份Word文档合同打印给客户,那么100份就需要修改100次 上面好多都是模板的制式文件,里面的部分数据都是要根据实际值来变动的, 那么有没有快速的方法来操作呢,还是只能一个个手动的改,又容易出…...
Redis的管道操作
在现代应用程序中,Redis作为一种高性能的内存数据库,被广泛用于缓存、消息队列、实时分析等场景。为了进一步提高Redis的性能,Redis提供了管道(Pipeline)操作,允许客户端将多个命令一次性发送到服务器&…...
IT监控 | Oracle云监控全解析
Oracle云(Oracle Cloud)是Oracle公司提供的云服务平台,涵盖了IaaS、PaaS、SaaS和DaaS,支持企业在云中构建、部署、集成和扩展应用,为企业提供了管理服务器、应用程序、存储、网络和数据中心的全面控制能力。 跟踪Oracle云基础设施的关键组件将…...
前端面试题-1(详解事件循环)
1.了解浏览器的进程模型 1.什么是进程? 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 2.什么是线程?…...
Redis(5):哨兵
一、作用和架构 1. 作用 在介绍哨兵之前,首先从宏观角度回顾一下Redis实现高可用相关的技术。它们包括:持久化、复制、哨兵和集群,其主要作用和解决的问题是: 1)持久化:持久化是最简单的高可用方法(有时甚…...
【人工智能】Transformers之Pipeline(二十五):图片特征抽取(image-feature-extraction)
目录 一、引言 二、图片特征抽取(image-feature-extraction) 2.1 概述 2.2 google/ViT 2.3 pipeline参数 2.3.1 pipeline对象实例化参数 2.3.2 pipeline对象使用参数 2.4 pipeline实战 2.5 模型排名 三、总结 一、引言 pi…...
podman 源码 5.3.1编译
1. 构建环境 在麒麟V10服务器操作系统上构建:Kylin-Server-V10-GFB-Release-2204-Build03-ARM64.iso。由于只是编译 podman 源码,没必要特地在物理机或服务上安装一个这样的操作系统,故采用在虚拟机里验证。 2. 安装依赖 参考资料…...
矩阵重新排列——rot90函数
通过 r o t 90 rot90 rot90函数可以将矩阵进行旋转 用法: r o t 90 ( a , k ) rot90(a,k) rot90(a,k)将矩阵 a a a按逆时针方向旋转 k 9 0 ∘ k\times90^\circ k90∘...
Leetcode 51 N Queens Leetcode N Queens II
题意 给定一个数字 n n n,形成n*n的棋盘,棋盘上放n个皇后,确保皇后之间不会相互吃(皇后可以直线吃,斜线吃) 链接 https://leetcode.com/problems/n-queens/description/ 思考 这道题只能暴力枚举所有的…...
0.查找命令
目录 🍉 find - 查找文件 🍇 grep 🍓 which 🍈locate 总结: 🍉 find - 查找文件 # 语法 # find [搜索范围] [选项] # 选项 # -name<查询方式> 按照指定的文件名查找模式查找文件 # …...
HarmonyOS-初级(一)
文章目录 初级核心技术理念函数的声明和使用类的声明和使用接口声明和使用声明式UI的特征 🏡作者主页:点击! 🤖HarmonyOS专栏:点击! ⏰️创作时间:2024年11月28日12点50分 初级 HAP可以分为静…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
