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可以分为静…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
【iOS】 Block再学习
iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...
