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可以分为静…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...
