Nacos系列——Java SDK(2.x版本)2-1

Nacos系列——Java SDK(2.x版本)2-1

资源地址

https://gitee.com/giteeforsyf/spring-cloud-formatter.git
在这里插入图片描述

README

  • maker:syf20020816
  • docName:Nacos-easy
  • createDate:20221218
  • updateDate:20221219
  • version:1.0.1
  • email:syf20020816@outlook.com

概述(intro)

本工程是Nacos的Java SDK 2.x版本的实现,并非官方文档而是本人经过学习后自己构建的工程,官方文档目前还未更新,仅供学习交流,请勿进行任何商业用途

This project is the implementation of the 2. x version of the Java SDK of Nacos. It is not an official document, but a project built by myself after learning. The official document has not been updated yet, and it is only for learning and communication. Please do not use it for any commercial purpose

Nacos Java SDK 官方文档(official doc address)

https://nacos.io/zh-cn/docs/sdk.html

工程说明(project intro )

工程目录(project dir)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-47Fz0OvJ-1671435417989)(.\README\imgs\image-20221219134226511.png)]

pom依赖(pom dependencies)

我们需要引入以下两个依赖

we need to use the following two dependencies

        <!--        引入依赖-->
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>2.1.0</version>
        </dependency>
        <!--       注册Nacos服务 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

yaml

这里有一个自定义的nacos配置参数nacos.conf该配置可以任意进行修改,对应的是NacosBasedProperties.java

Here is a user-defined nacos configuration parameter nacos. conf. The configuration can be modified at will, corresponding to NacosBasedProperties. java

server:
  port: 8889

nacos:
  conf:
    # 配置Nacos的地址
    serverAddr: 192.168.31.149:8848
    # 配置 ID,采用类似 package.class(如com.taobao.tc.refund.log.level)的命名规则保证全局唯一性,
    # class 部分建议是配置的业务含义。全部字符小写。只允许英文字符和 4 种特殊字符("."、":"、"-"、"_"),不超过 256 字节
    dataId: test02
    # 配置分组,建议填写产品名:模块名(Nacos:Test)保证唯一性,默认:DEFAULT_GROUP
    # 只允许英文字符和4种特殊字符("."、":"、"-"、"_"),不超过128字节。
    group: DEFAULT_GROUP
    # 读取配置超时时间,单位 ms,推荐值 3000。
    timeout: 3000

# 使用Nacos作为服务的注册与发现中心
spring:
  application:
    name: Fly-nacos-easy
  cloud:
    nacos:
      server-addr: 192.168.31.149:8848

NacosBasedProperties.java

@ConfigurationProperties("nacos.conf")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class NacosBasedProperties {

    private String serverAddr;
    private String dataId;
    private String group;
    private Long timeout;
}

Nacos Java SDK 2.x版本更新(update change)

最直观的应该是再注册实例的时候使用类

The most intuitive is to use classes when re registering instances

  • com.alibaba.nacos.api.naming.pojo.Instance Nacos实例类
  • com.alibaba.nacos.api.naming.pojo.Service Nacos服务类
  • com.alibaba.nacos.api.naming.pojo.ClusterNacos集群类
  • com.alibaba.nacos.api.naming.pojo.healthcheck.impl.HttpNacos健康监测类

具体的代码请关注NacosAPIServiceImpl.testRegisterInstance()中的注解,以下是代码详情:

Please pay attention to the comments inNacosAPIServiceImpl. testRegisterInstance() for specific codes. The following are code details:

    @Override
    public ResultJSONData testRegisterInstance() throws NacosException {
        //构建命名空间
        final NamingService namingService = NamingFactory.createNamingService(properties.getServerAddr());
        //构建实例
        final Instance instance = new Instance();
        instance.setIp("192.168.31.149");
        instance.setPort(8979);
        //设置实例的健康状态,健康:true,非健康:false,未运行就是非健康
        instance.setHealthy(false);
        //设置实例的权重
        instance.setWeight(2.0);
        final HashMap<String, String> instanceMeta = new HashMap<>();
        instanceMeta.put("site","et2");
        //设置实例元数据,例如SpringCloud:preserved.register.source=SPRING_CLOUD
        instance.setMetadata(instanceMeta);

        //创建服务,并设置服务名
        final com.alibaba.nacos.api.naming.pojo.Service service = new com.alibaba.nacos.api.naming.pojo.Service();
        service.setName("nacos.test.4");
        //设置服务的应用程序名称,文档中写的是setApp但是现在已经改成AppName了
        service.setAppName("nacos-naming");
        service.setGroupName("CNCF");
        service.setProtectThreshold(0.8F);
        Map<String, String> serviceMeta = new HashMap<>();
        serviceMeta.put("symmetricCall", "true");
        //设置服务元数据
        service.setMetadata(serviceMeta);
        instance.setServiceName(service.getName());

        //创建集群
        final Cluster cluster = new Cluster();
        //设置集群名称,集群名称默认是DEFAULT
        cluster.setName("TEST5");
        //package com.alibaba.nacos.api.naming.pojo.healthcheck.impl;
        //HTTP健康检查程序的实现
        final Http healthChecker = new Http();
        //设置预期响应的状态码
        healthChecker.setExpectedResponseCode(400);
        //设置监测路径
        healthChecker.setPath("/**.html");
        healthChecker.setHeaders("User-Agent|Nacos");
        //设置健康监测方式
        cluster.setHealthChecker(healthChecker);
        final HashMap<String, String> clusterMeta = new HashMap<>();
        clusterMeta.put("cluster","test");
        cluster.setMetadata(clusterMeta);
        //实例挂载集群
        instance.setClusterName(cluster.getName());
        //服务注册实例
        namingService.registerInstance("nacos.test.4",instance);
        return ResultJSONData.success("测试实例注册成功(test instance register success)",true);
    }

服务、集群、实例关系(the relationship among service ,cluster and instance)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y2ViONFf-1671435417990)(.\README\imgs\image-20221219141010222.png)]

API请求说明(api request intro)

v1.0.1

Nacos-easy

DELETE deleteListenerToConfig 删除Nacos配置上的监听

DELETE /:8889/nacos/config/listener/{group}/{dataId}

请求参数

名称位置类型必选说明
grouppathstringnone
dataIdpathstringnone

返回示例

成功

{
  "code": 200,
  "msg": "删除Nacos配置监听成功(delete listener to nacos configuration success)",
  "data": true
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

PUT signListenerToConfig 对Nacos配置设置监听

PUT /:8889/nacos/config/listener/{group}/{dataId}

请求参数

名称位置类型必选说明
grouppathstringnone
dataIdpathstringnone

返回示例

成功

{
  "code": 200,
  "msg": "设置Nacos配置监听成功(sign listener to nacos configuration success)",
  "data": true
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

GET getHealthyInstanceInfoList 获取Nacos健康实例(服务下)

GET /:8889/nacos/instance/healthy/info/list/{serviceName}

请求参数

名称位置类型必选说明
serviceNamepathstringnone

返回示例

成功

{
  "code": 200,
  "msg": "获取Nacos服务的集群下的所有实例成功(get all instance from cluster under nacos service success)",
  "data": [
    {
      "ip": "192.168.31.149",
      "port": 8889,
      "weight": 1,
      "healthy": true,
      "enabled": true,
      "ephemeral": true,
      "clusterName": "DEFAULT",
      "serviceName": "DEFAULT_GROUP@@Fly-nacos-easy",
      "metadata": {
        "preserved.register.source": "SPRING_CLOUD"
      },
      "ipDeleteTimeout": 30000,
      "instanceHeartBeatTimeOut": 15000,
      "instanceHeartBeatInterval": 5000
    }
  ]
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

GET getNacosConfig 获取Nacos配置信息

GET /:8889/nacos/config/info/{group}/{dataId}

请求参数

名称位置类型必选说明
grouppathstringnone
dataIdpathstringnone

返回示例

成功

{
  "code": 200,
  "msg": "获取Nacos配置信息成功(get configuration info from nacos success)",
  "data": "server:\r\n  port: 8889\r\n\r\nnacos:\r\n  conf:\r\n    # 配置Nacos的地址\r\n    serverAddr: 192.168.31.149:8848\r\n    # 配置 ID,采用类似 package.class(如com.taobao.tc.refund.log.level)的命名规则保证全局唯一性,\r\n    # class 部分建议是配置的业务含义。全部字符小写。只允许英文字符和 4 种特殊字符(\".\"、\":\"、\"-\"、\"_\"),不超过 256 字节\r\n    dataId: test01\r\n    # 配置分组,建议填写产品名:模块名(Nacos:Test)保证唯一性,默认:DEFAULT_GROUP\r\n    # 只允许英文字符和4种特殊字符(\".\"、\":\"、\"-\"、\"_\"),不超过128字节。\r\n    group: DEFAULT_GROUP\r\n    # 读取配置超时时间,单位 ms,推荐值 3000。\r\n    timeout: 3000\r\n\r\n"
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

PUT getNacosConfigAndSignListener 获取Nacos配置信息并对该配置设置监听

PUT /:8889/nacos/config/info/{group}/{dataId}

请求参数

名称位置类型必选说明
grouppathstringnone
dataIdpathstringnone

返回示例

成功

{
  "code": 200,
  "msg": "获取Nacos配置信息并设定监听成功(get configuration info from nacos and sign listener success)",
  "data": "spring:\r\n port: 9898\r\n "
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

GET getHealthyInstanceInfoList 获取Nacos健康实例(服务的集群下)

GET /:8889/nacos/instance/healthy/info/list/{serviceName}/{clusterName}

请求参数

名称位置类型必选说明
serviceNamepathstringnone
clusterNamepathstringnone

返回示例

成功

{
  "code": 200,
  "msg": "获取Nacos服务的集群下的所有实例成功(get all instance from cluster under nacos service success)",
  "data": [
    {
      "ip": "192.168.31.149",
      "port": 8889,
      "weight": 1,
      "healthy": true,
      "enabled": true,
      "ephemeral": true,
      "clusterName": "DEFAULT",
      "serviceName": "DEFAULT_GROUP@@Fly-nacos-easy",
      "metadata": {
        "preserved.register.source": "SPRING_CLOUD"
      },
      "ipDeleteTimeout": 30000,
      "instanceHeartBeatTimeOut": 15000,
      "instanceHeartBeatInterval": 5000
    }
  ]
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

POST publishConfig 发布Nacos配置

POST /:8889/nacos/config

Body 请求参数

{
  "group": "DEFAULT_GROUP",
  "dataId": "test01",
  "type": "yaml",
  "content": "server:\n\tport: 9898"
}

请求参数

名称位置类型必选说明
bodybodyobjectnone

返回示例

成功

{
  "code": 200,
  "msg": "Nacos配置发布成功(publish nacos configuration success)",
  "data": true
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

POST signListenerToService 监听Nacos服务下的某个集群(订阅)

POST /:8889/nacos/service/listener/{serviceName}/{clusterName}

请求参数

名称位置类型必选说明
serviceNamepathstringnone
clusterNamepathstringnone

返回示例

成功

{
  "code": 200,
  "msg": "监听Nacos服务成功(sign listener to naocs service success)",
  "data": null
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

DELETE deleteListenerToService 删除Nacos服务监听(消除订阅) Copy

DELETE /:8889/nacos/service/listener/{serviceName}/{clusterName}

请求参数

名称位置类型必选说明
serviceNamepathstringnone
clusterNamepathstringnone

返回示例

成功

{
  "code": 200,
  "msg": "删除Nacos服务监听成功(delete listener from nacos service success)",
  "data": null
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

GET getUnhealthyInstanceInfoList 获取Nacos上的某个服务的某个集群下全部实例 Copy

GET /:8889/nacos/instance/unhealthy/info/list/{serviceName}/{clusterName}

请求参数

名称位置类型必选说明
serviceNamepathstringnone
clusterNamepathstringnone

返回示例

成功

{
  "code": 200,
  "msg": "获取Nacos服务的集群下的所有实例成功(get all instance from cluster under nacos service success)",
  "data": [
    {
      "ip": "192.168.31.149",
      "port": 8889,
      "weight": 1,
      "healthy": true,
      "enabled": true,
      "ephemeral": true,
      "clusterName": "DEFAULT",
      "serviceName": "DEFAULT_GROUP@@Fly-nacos-easy",
      "metadata": {
        "preserved.register.source": "SPRING_CLOUD"
      },
      "ipDeleteTimeout": 30000,
      "instanceHeartBeatTimeOut": 15000,
      "instanceHeartBeatInterval": 5000
    }
  ]
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

POST signListenerToService 监听Nacos服务(订阅)

POST /:8889/nacos/service/listener/{serviceName}

请求参数

名称位置类型必选说明
serviceNamepathstringnone

返回示例

成功

{
  "code": 200,
  "msg": "监听Nacos服务成功(sign listener to naocs service success)",
  "data": null
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

DELETE deleteListenerToService 删除Nacos服务监听(消除订阅)

DELETE /:8889/nacos/service/listener/{serviceName}

请求参数

名称位置类型必选说明
serviceNamepathstringnone

返回示例

成功

{
  "code": 200,
  "msg": "删除Nacos服务监听成功(delete listener from nacos service success)",
  "data": null
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

POST registerInstance Nacos注册实例

POST /:8889/nacos/instance

Body 请求参数

{
  "serviceName": "testService",
  "ip": "192.168.31.149",
  "port": 8889,
  "clusterName": "DEFAULT"
}

请求参数

名称位置类型必选说明
bodybodyobjectnone

返回示例

成功

{
  "code": 200,
  "msg": "Nacos注册实例成功(Nacos register instance success)",
  "data": null
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

DELETE deleteInstance Nacos删除实例

DELETE /:8889/nacos/instance

Body 请求参数

{
  "serviceName": "testService",
  "ip": "192.168.31.149",
  "port": 8889,
  "clusterName": "DEFAULT"
}

请求参数

名称位置类型必选说明
bodybodyobjectnone

返回示例

成功

{
  "code": 200,
  "msg": "Nacos删除实例成功(deregister nacos instance success)",
  "data": true
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

DELETE deleteConfig 删除Nacos配置

DELETE /:8889/nacos/config/{group}/{dataId}

请求参数

名称位置类型必选说明
grouppathstringnone
dataIdpathstringnone

返回示例

成功

{
  "code": 200,
  "msg": "Nacos配置删除成功(delete nacos configuration success)",
  "data": true
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

GET getUnhealthyInstanceInfoList 获取Nacos非健康实例(服务下)

GET /:8889/nacos/instance/unhealthy/info/list/{serviceName}

请求参数

名称位置类型必选说明
serviceNamepathstringnone

返回示例

成功

{
  "code": 200,
  "msg": "获取Nacos服务的集群下的所有实例成功(get all instance from cluster under nacos service success)",
  "data": [
    {
      "ip": "192.168.31.149",
      "port": 8889,
      "weight": 1,
      "healthy": true,
      "enabled": true,
      "ephemeral": true,
      "clusterName": "DEFAULT",
      "serviceName": "DEFAULT_GROUP@@Fly-nacos-easy",
      "metadata": {
        "preserved.register.source": "SPRING_CLOUD"
      },
      "ipDeleteTimeout": 30000,
      "instanceHeartBeatTimeOut": 15000,
      "instanceHeartBeatInterval": 5000
    }
  ]
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

GET getInstanceInfoList 获取Nacos上的某个服务下全部实例

GET /:8889/nacos/instance/info/list/{serviceName}

请求参数

名称位置类型必选说明
serviceNamepathstringnone

返回示例

成功

{
  "code": 200,
  "msg": "获取Nacos服务下的所有实例成功(get all instance from nacos service success)",
  "data": [
    {
      "ip": "192.168.31.149",
      "port": 8889,
      "weight": 1,
      "healthy": true,
      "enabled": true,
      "ephemeral": true,
      "clusterName": "DEFAULT",
      "serviceName": "DEFAULT_GROUP@@Fly-nacos-easy",
      "metadata": {
        "preserved.register.source": "SPRING_CLOUD"
      },
      "instanceHeartBeatInterval": 5000,
      "instanceHeartBeatTimeOut": 15000,
      "ipDeleteTimeout": 30000
    }
  ]
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

GET testRegisterInstanceNacos 注册实例示例代码(学习前请查看)

GET /:8889/nacos/instance/test

返回示例

成功

{
  "code": 200,
  "msg": "测试实例注册成功(test instance register success)",
  "data": true
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

GET getInstanceInfoList 获取Nacos上的某个服务的某个集群下全部实例

GET /:8889/nacos/instance/info/list/{serviceName}/{clusterName}

请求参数

名称位置类型必选说明
serviceNamepathstringnone
clusterNamepathstringnone

返回示例

成功

{
  "code": 200,
  "msg": "获取Nacos服务的集群下的所有实例成功(get all instance from cluster under nacos service success)",
  "data": [
    {
      "ip": "192.168.31.149",
      "port": 8889,
      "weight": 1,
      "healthy": true,
      "enabled": true,
      "ephemeral": true,
      "clusterName": "DEFAULT",
      "serviceName": "DEFAULT_GROUP@@Fly-nacos-easy",
      "metadata": {
        "preserved.register.source": "SPRING_CLOUD"
      },
      "ipDeleteTimeout": 30000,
      "instanceHeartBeatTimeOut": 15000,
      "instanceHeartBeatInterval": 5000
    }
  ]
}

返回结果

状态码状态码含义说明数据模型
200OK成功Inline

返回数据结构

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值