SDK获取nacos上注册的服务信息与实例

发布时间:2024年01月13日

SDK获取nacos上注册的服务信息与实例


前言

在微服务架构的背景下,服务的动态发现、配置的实时管理以及服务的治理变得尤为关键。Nacos应运而生,为解决这些问题提供了一套完整的解决方案。

Nacos支持多种语言和开发框架,使得开发者可以方便地在不同的环境中使用。其开放源代码的特性使得社区能够参与贡献和改进,从而不断完善和丰富功能。

随着云原生技术的快速发展,Nacos作为一个开源项目,得到了广泛的关注和应用。它逐渐成为云原生应用开发中不可或缺的基础设施组件之一,为企业构建更具弹性和可靠性的分布式系统提供了支持。


一、nacos是什么?

Nacos是一个开源的动态服务发现、配置管理和服务管理平台,用于帮助构建云原生应用。Nacos的名字由Naming和Configuration两个单词组合而成。

作为服务发现组件,Nacos提供了服务注册和发现的功能。它允许应用程序将自己注册到Nacos的服务注册中心,并能够查询和发现其他已注册的服务。这样,应用程序可以根据需要动态地发现和调用其他服务,实现弹性、高可用的分布式架构。

作为配置管理组件,Nacos提供了集中式的配置管理能力。应用程序可以使用Nacos来管理其配置文件,包括动态配置、动态刷新和版本管理。这使得配置的修改和更新可以实时生效,而不需要重新部署或重启应用程序。

此外,Nacos还提供了服务管理的功能,包括健康检查、流量管理、负载均衡等。它可以与负载均衡器和服务网格等技术集成,实现智能的流量转发和服务治理。

Nacos支持多种语言和开发框架,并提供了丰富的API和可视化的管理界面。它可以方便地与各种云平台和容器环境集成,如Kubernetes、Docker等。

总之,Nacos是一个全功能的服务发现、配置管理和服务管理平台,为云原生应用提供了一致性和可靠性的基础设施。它大大简化了微服务架构中的服务注册、配置管理和服务发现等任务,使得构建和管理分布式应用变得更加容易。

二、使用步骤

1.引入库

代码如下(示例):

        <!-- Nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

2.配置文件信息

代码如下(示例):

spring:
  application:
    name: @artifactId@
  cloud:
    nacos:
      username: @nacos.username@
      password: @nacos.password@
      groups: PROTOCOL_DRIVEN
      discovery:
        server-addr: ${NACOS_HOST:ip}:${NACOS_PORT:8848}
        namespace: @nacos.namespace@
      config:
        server-addr: ${NACOS_HOST:ip}:${NACOS_PORT:8848}
        namespace: @nacos.namespace@
        file-extension: yml
        prefix: @artifactId@

@nacos.namespace@俩个@中间引用的都是pom文件定义的


    <profiles>
       
        <profile>
            <id>test</id>
            <properties>
                <!-- 环境标识,需要与配置文件的名称相对应 -->
                <!--<profiles.active>test</profiles.active>-->
                <nacos.username>XXX</nacos.username>
                <nacos.password>XXX</nacos.password>
                <nacos.namespace>XXXX</nacos.namespace>
            </properties>
        </profile>
    </profiles>

namespace需要再nacos界面配置
在这里插入图片描述
配置完即可在对于的命名空间上注册

三 使用SDK获取Nacos上注册的服务


            Properties properties = new Properties();
            properties.put("serverAddr", IP+PORT);
            properties.put("namespace", "上面提到的namespace");
            properties.put("username", "用户名");
            properties.put("password", "密码");
            NamingService namingService4 = NamingFactory.createNamingService(properties);

获取服务信息基本都是基于NamingService 来进行操作
获取列表

//获取指定分页下指定组下的所有注册的服务名称
   List<String> data = namingService4 .getServicesOfServer(current, size, nacosConfig.getGroups()).getData();

再根据服务名称获取服务名称下注册的实例参数

   List<Instance> allInstances = service.namingService4 (datum,nacosConfig.getGroups());

在Nacos中,“Instance”(实例)是指注册到Nacos服务注册中心的一个具体服务实例。它代表了一个运行着的服务,可以是一个物理机、虚拟机、容器或其他类型的计算资源。

Nacos作为一个服务发现和治理平台,允许应用程序将自己的实例信息注册到Nacos的服务注册中心,并让其他应用程序能够发现和调用这些服务实例。

一个Nacos的Instance包含以下重要的属性:

服务名称(Service Name):表示服务实例所属的服务名称,是服务的唯一标识。

IP地址(IP Address):服务实例的IP地址,用于其他服务发现和调用。

端口(Port):服务实例的监听端口号。

健康状态(Health Status):表示服务实例的健康状态,通常用于健康检查和故障恢复。

元数据(Metadata):可选的键值对,用于存储和获取额外的关于服务实例的信息,比如版本、环境、权重等。

通过将服务实例注册到Nacos,其他应用程序可以通过Nacos的服务发现功能轻松地发现并调用这些服务实例。Nacos提供了丰富的API和工具,使开发者可以方便地管理和操作这些服务实例。例如,可以通过API注册、注销、查询和更新服务实例的信息。

通过Nacos的服务发现功能,应用程序可以实现动态负载均衡、故障恢复和服务治理等功能。它可以让服务实例的动态变化对调用方透明,使应用程序具备高可用、弹性和灵活的特性。

总结起来,Nacos中的Instance是指注册到Nacos服务注册中心的一个具体服务实例。它包括服务名称、IP地址、端口、健康状态和元数据等属性,用于服务发现、调用和治理。Nacos提供了丰富的功能和工具,帮助开发者管理和操作这些服务实例。


总结

以上就是我最近使用SDK查询nacos服务上的服务注册信息的方法,希望有所帮助对大家

文章来源:https://blog.csdn.net/qq_44871116/article/details/135545177
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。