Nacos 2.x 系列【14】临时实例、永久实例

news2025/2/27 7:34:08

文章目录

    • 1. 概述
    • 2. 注册实例
      • 2.1 SDK
      • 2.2 Open API
      • 2.3 Spring Cloud
    • 3. 临时实例
    • 4. 永久实例

1. 概述

Nacos 提供了两种服务类型供用户注册实例时选择:

  • 临时实例:只是临时存在于注册中心中,会在服务下线或不可用时被注册中心剔除,临时实例会与注册中心保持心跳,注册中心会在⼀段时间没有收到来自客户端的心跳后会将实例设置为不健康,然后在⼀段时间后进行剔除。
  • 永久实例:在被删除之前会永久的存在于注册中心,且有可能并不知道注册中心存在,不会主动向注册中心上报心跳,需要注册中心主动进行探活。

2. 注册实例

Nacos 的服务发现提供了多种注册实例的方式,注册时可以设置是否临时实例

2.1 SDK

直接使用 Nacos Client SDK 注册时,可以设置是否临时实例

        // 属性
        Properties properties = new Properties();
        properties.put("serverAddr", "127.0.0.1:8848");  // Nacos 服务器地址
        properties.put("namespace", "0faa0970-1179-4143-8aa2-cac3ee6b42ec");  // 命名空间,可选
        properties.put("username", "nacos");  // 用户名
        properties.put("password", "nacos");  // 密码

        // 创建 NamingService 实例
        NamingService naming = NacosFactory.createNamingService(properties);

        // 实例化要注册的实例对象
        Instance instance = new Instance();
        instance.setIp("127.0.0.1"); // 实例IP
        instance.setPort(8080); // 实例端口
        instance.setEphemeral(false); // 是否临时实例
        instance.setWeight(1.0); // 实例权重
        instance.setHealthy(true); // 实例健康状态
        instance.setEnabled(true); // 实例启用状态
        instance.setClusterName("DEFAULT"); // 集群名称
        instance.setServiceName("test-demo"); // 服务名称

        // 注册实例
        naming.registerInstance("test-demo", instance);

2.2 Open API

使用 Open API 注册实例时,可以通过参数 ephemeral 设置是否临时实例
在这里插入图片描述

2.3 Spring Cloud

使用 spring-cloud-starter-alibaba-nacos-discovery 注册时,在 application.yml 中可以设置是否临时实例

spring:
  application:
    name: order-demo
  cloud:
    nacos:
      # 服务端用户名密码
      username: nacos
      password: nacos
      # 服务发现
      discovery:
        # 命名空间
        namespace: 0faa0970-1179-4143-8aa2-cac3ee6b42ec
        # 服务端地址,默认:127.0.0.1:8848
        server-addr: 127.0.0.1:8848
        # 是否临时实例
        ephemeral: true

在服务发现配置属性类 NacosDiscoveryProperties 中,可以看到该配置默认为 true

    private boolean ephemeral = true;

3. 临时实例

启动 order-demo 注册到 Nacos ,在服务详情中的实例列表,可以看到临时实例true

在这里插入图片描述
当关闭服务后,临时实例在服务列表中会被剔除:
在这里插入图片描述

4. 永久实例

修改 order-demo 中的配置,设置 ephemeralfasle ,即注册为永久实例:

spring:
  cloud:
    nacos:
      # 服务端用户名密码
      username: nacos
      password: nacos
      # 服务发现
      discovery:
        # 命名空间
        namespace: 0faa0970-1179-4143-8aa2-cac3ee6b42ec
        # 服务端地址,默认:127.0.0.1:8848
        server-addr: 127.0.0.1:8848
        # 是否临时实例
        ephemeral: fasle

查看实例列表:
在这里插入图片描述
当关闭服务后,永久实例在服务列表中不会被剔除:
在这里插入图片描述
只会将健康状态设置为 fasle
在这里插入图片描述

当注册为永久实例后,该服务如果再注册为临时实例,会报错is persistent service, can't register ephemeral instance.

Caused by: com.alibaba.nacos.api.exception.NacosException: errCode: 400, errMsg: Current service DEFAULT_GROUP@@order-demo is persistent service, can't register ephemeral instance. 
	at com.alibaba.nacos.common.remote.client.RpcClient.request(RpcClient.java:662) ~[nacos-client-2.2.1.jar:na]
	at com.alibaba.nacos.common.remote.client.RpcClient.request(RpcClient.java:623) ~[nacos-client-2.2.1.jar:na]
	at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.requestToServer(NamingGrpcClientProxy.java:357) ~[nacos-client-2.2.1.jar:na]
	at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.doRegisterService(NamingGrpcClientProxy.java:210) ~[nacos-client-2.2.1.jar:na]
	at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.registerService(NamingGrpcClientProxy.java:124) ~[nacos-client-2.2.1.jar:na]
	at com.alibaba.nacos.client.naming.remote.NamingClientProxyDelegate.registerService(NamingClientProxyDelegate.java:98) ~[nacos-client-2.2.1.jar:na]
	at com.alibaba.nacos.client.naming.NacosNamingService.registerInstance(NacosNamingService.java:143) ~[nacos-client-2.2.1.jar:na]
	at com.alibaba.cloud.nacos.registry.NacosServiceRegistry.register(NacosServiceRegistry.java:75) ~[spring-cloud-starter-alibaba-nacos-discovery-2022.0.0.0.jar:2022.0.0.0]
	... 25 common frames omitted

这是因为在 Nacos 2.x 中,同一服务名称下,不能注册不同类型的实例,即要么都是临时的,要么都是永久的。永久实例注册后,会持久化到磁盘文件中,不再被允许注册为临时实例。

可以主动删除实例,或者直接将\nacos\data目录下的文件删除,解决上述问题:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML基本标签使用【超链接标签、表格标签、表单标签、input标签】

目录 一、基本介绍1.1 概念1.2 HTML的核心特点 二、HTML基本标签三、超链接标签四、表格标签✌<table> 标签属性✍<tr> 标签属性✌ <td> 和 <th> 标签属性演示注意事项 五、表单标签综合应用 最后 一、基本介绍 1.1 概念 HTML&#xff0c;全称为超文…

AutoDL Python实现 自动续签 防止实例过期释放 小脚本 定时任务 apscheduler requests

背景介绍 平常对模型进行训练、微调的时候&#xff0c;我在 AutoDL 有一台主机。 但是有些主机环境我配置好了&#xff0c;又不想让它过期&#xff0c;可能过段时间还会再用。 我一不留神就会超过15天&#xff0c;导致我的机器给释放了很难受。 所以写了一个Python的小脚本&…

玩手游多开还停留在模拟器阶段?不如试试云手机

在手游的世界里&#xff0c;尤其是回合制和资源类游戏&#xff0c;采用多开账号以获取更多游戏资源或者体验不同的游戏策略&#xff0c;是许多玩家的需求。但其实&#xff0c;目前大多数玩家在实现手游多开时&#xff0c;还停留在使用模拟器的阶段。但实际上&#xff0c;有一种…

直播平台美颜技术分析:视频美颜SDK功能实现原理

本篇文章&#xff0c;笔者将深入分析视频美颜SDK的功能实现原理&#xff0c;探讨其在直播平台中的应用。 一、视频美颜技术概述 通过这些功能&#xff0c;用户可以在直播过程中呈现更加理想的自己&#xff0c;从而提高观众的观看体验和互动积极性。 二、视频美颜SDK的功能 1…

Java多线程基础知识-1

什么是程序&#xff1f; 可执行的文件。 什么是进程&#xff1f; 进程是程序一次动态执行的过程&#xff0c;它是资源分配与管理的基本单位。 什么线程&#xff1f; 线程是进程创建的&#xff0c;它是调度和执行的基本单位。线程不拥有系统资源&#xff0c;只拥有一点必不可…

YOLOv10训练自己的数据集(图像目标检测)

目录 1、下载代码 2、环境配置 3、准备数据集 4、yolov10训练 可能会出现报错&#xff1a; 1、下载代码 源码地址&#xff1a;https://github.com/THU-MIG/yolov10 2、环境配置 打开源代码&#xff0c;在Terminal中&#xff0c;使用conda 创建虚拟环境配置 命令如下&a…

Echarts各类图表常用配置项说明,附示例代码

前言&#xff1a; 哈喽&#xff0c;大家好&#xff0c;我是前端菜鸟的自我修养&#xff01;今天给大家分享【 Echarts各类图表常用配置项说明 】&#xff0c;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;原创不易&#xff0c;如果能帮助到带大家&#xff0…

剖析影响大米码垛机性能的关键因素

在现代化粮食加工产业链中&#xff0c;大米码垛机以其高效、精准的自动化操作&#xff0c;成为提升生产效率、降低劳动强度的得力助手。然而&#xff0c;要想充分发挥大米码垛机的性能优势&#xff0c;我们必须深入了解影响其性能的关键因素。星派将深入剖析这些关键因素&#…

Vue的学习(6.20)

一、Vue的特点 1.采用组件化模式&#xff08;xxx.vue包含htmlcssjs&#xff09; 2.声明式编码&#xff0c;编码人员无需直接操作DOM&#xff0c;提高开发效率 3.使用虚拟DOM优秀的DIFF算法&#xff08;DIFF是用于新旧虚拟DOM的比较&#xff09;&#xff0c;尽量复用DOM节点 …

数学建模理论学习:线性规划模型

三要素&#xff1a;目标函数、约束条件&#xff08;s.t.&#xff09;、决策变量&#xff08;x&#xff09; 目标函数&#xff1a;z ax1 bx2 cx3 ... 其中c为一个序列&#xff0c;从左到右依次从x1到xn的系数 解决下面的线性规划问题&#xff1a; % 目标函数系数&#xf…

人工智能指数报告

2024人工智能指数报告&#xff08;一&#xff09;&#xff1a;研发 前言 全面分析人工智能的发展现状。 从2017年开始&#xff0c;斯坦福大学人工智能研究所&#xff08;HAI&#xff09;每年都会发布一份人工智能的研究报告&#xff0c;人工智能指数报告&#xff08;AII&…

java收徒 java辅导 java试用期辅导 java零基础学习

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末报名辅导&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还有大家…

全面升级,票据识别新纪元:合合信息TextIn多票识别2.0

票据识别 - 自动化业务的守门员 发票、票据识别&#xff0c;是OCR技术和RPA、CMS系统结合的一个典型场景&#xff0c;从覆盖率、覆盖面的角度来说&#xff0c;应该也是结合得最成功的场景之一。 产品简介 国内通用票据识别V2.0&#xff08;简称“多票识别2.0”&#xff09;是…

顶级管理者的新视角:管理状态而非时间

在快节奏的商业环境中&#xff0c;时间管理常被看作是提升效率和效果的关键因素。然而&#xff0c;对于顶级管理者来说&#xff0c;仅仅管理时间可能并不足够。一个更深层、更全面的管理方式——管理状态&#xff0c;正在成为新的趋势。在这篇文章中&#xff0c;我们将探讨为什…

Flutter 项目设置 Flutter 版本

即便使用了 fvm 设置了版本&#xff0c;AdroidStudio Setting 中如果不修改路径&#xff0c;Editor 依然会编译错误。目前还没看懂如何通过命令、文件来记录AdroidStudio Setting中的设置。 fvm list 来查看 flutter 路径&#xff1a;

【每天学会一个渗透测试工具】AppScan安装及使用指南

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 https://www.hcl-software.com/appscan AppScan是一种综合型漏洞扫描工具&#xff0c;采用SaaS解决方案&#xff0c;它将所以…

神经网络学习3-卷积层

膨胀卷积&#xff0c;也被称为空洞卷积或扩张卷积&#xff0c;是一种特殊的卷积运算&#xff0c;它在标准卷积的基础上引入了一个额外的超参数&#xff0c;即膨胀率&#xff08;dilation rate&#xff09;。这个超参数决定了在卷积核的元素之间插入多少额外的空间。通过这种方式…

HTTP!!!

HTTP 一 : 请求报文1.2 : 首行1.3 :请求头(header)1.4 : 空行1.5 : 正文 body 二: 响应报文2.2 : 首行 三 : URL 一 : 请求报文 一个HTTP 请求报文, 分成四个部分 首行 GET https://cn.bing.com/?FORMZ9FD1 HTTP/1.1请求头(header)空行正文(body) 1.2 : 首行 首行又分为三个…

C#开发-集合使用和技巧(八)集合中的排序Sort、OrderBy、OrderByDescending

C#开发-集合使用和技巧&#xff08;八&#xff09;集合中的排序Sort、OrderBy、OrderByDescending List<T>.Sort()方法签名使用场景示例升序实现效果 降序实现效果 IEnumerable<T>.OrderBy()方法签名使用场景示例实现效果 Enumerable<T>.OrderByDescending()…

动态网页制作技术

动态网页制作技术是一种利用脚本语言、数据库和服务器端程序来生成动态内容的网页技术。以下是常用的动态网页制作技术&#xff1a; 1.PHP&#xff1a;PHP是一种广泛使用的服务器端脚本语言&#xff0c;可以嵌入到HTML中&#xff0c;用于生成动态网页内容。它可以与各种数据库进…