Nacos系列——Java SDK(2.x版本)2-1
- 资源地址
- README
- 概述(intro)
- Nacos Java SDK 官方文档(official doc address)
- 工程说明(project intro )
- 工程目录(project dir)
- pom依赖(pom dependencies)
- yaml
- NacosBasedProperties.java
- Nacos Java SDK 2.x版本更新(update change)
- 服务、集群、实例关系(the relationship among service ,cluster and instance)
- API请求说明(api request intro)
- Nacos-easy
- DELETE deleteListenerToConfig 删除Nacos配置上的监听
- 请求参数
- 返回结果
- 返回数据结构
- PUT signListenerToConfig 对Nacos配置设置监听
- 请求参数
- 返回结果
- 返回数据结构
- GET getHealthyInstanceInfoList 获取Nacos健康实例(服务下)
- 请求参数
- 返回结果
- 返回数据结构
- GET getNacosConfig 获取Nacos配置信息
- 请求参数
- 返回结果
- 返回数据结构
- PUT getNacosConfigAndSignListener 获取Nacos配置信息并对该配置设置监听
- 请求参数
- 返回结果
- 返回数据结构
- GET getHealthyInstanceInfoList 获取Nacos健康实例(服务的集群下)
- 请求参数
- 返回结果
- 返回数据结构
- POST publishConfig 发布Nacos配置
- 请求参数
- 返回结果
- 返回数据结构
- POST signListenerToService 监听Nacos服务下的某个集群(订阅)
- 请求参数
- 返回结果
- 返回数据结构
- DELETE deleteListenerToService 删除Nacos服务监听(消除订阅) Copy
- 请求参数
- 返回结果
- 返回数据结构
- GET getUnhealthyInstanceInfoList 获取Nacos上的某个服务的某个集群下全部实例 Copy
- 请求参数
- 返回结果
- 返回数据结构
- POST signListenerToService 监听Nacos服务(订阅)
- 请求参数
- 返回结果
- 返回数据结构
- DELETE deleteListenerToService 删除Nacos服务监听(消除订阅)
- 请求参数
- 返回结果
- 返回数据结构
- POST registerInstance Nacos注册实例
- 请求参数
- 返回结果
- 返回数据结构
- DELETE deleteInstance Nacos删除实例
- 请求参数
- 返回结果
- 返回数据结构
- DELETE deleteConfig 删除Nacos配置
- 请求参数
- 返回结果
- 返回数据结构
- GET getUnhealthyInstanceInfoList 获取Nacos非健康实例(服务下)
- 请求参数
- 返回结果
- 返回数据结构
- GET getInstanceInfoList 获取Nacos上的某个服务下全部实例
- 请求参数
- 返回结果
- 返回数据结构
- GET testRegisterInstanceNacos 注册实例示例代码(学习前请查看)
- 返回结果
- 返回数据结构
- GET getInstanceInfoList 获取Nacos上的某个服务的某个集群下全部实例
- 请求参数
- 返回结果
- 返回数据结构
资源地址
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.Cluster
Nacos集群类com.alibaba.nacos.api.naming.pojo.healthcheck.impl.Http
Nacos健康监测类
具体的代码请关注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}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
group | path | string | 是 | none |
dataId | path | string | 是 | none |
返回示例
成功
{
"code": 200,
"msg": "删除Nacos配置监听成功(delete listener to nacos configuration success)",
"data": true
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
PUT signListenerToConfig 对Nacos配置设置监听
PUT /:8889/nacos/config/listener/{group}/{dataId}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
group | path | string | 是 | none |
dataId | path | string | 是 | none |
返回示例
成功
{
"code": 200,
"msg": "设置Nacos配置监听成功(sign listener to nacos configuration success)",
"data": true
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
GET getHealthyInstanceInfoList 获取Nacos健康实例(服务下)
GET /:8889/nacos/instance/healthy/info/list/{serviceName}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
serviceName | path | string | 是 | none |
返回示例
成功
{
"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
}
]
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
GET getNacosConfig 获取Nacos配置信息
GET /:8889/nacos/config/info/{group}/{dataId}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
group | path | string | 是 | none |
dataId | path | string | 是 | none |
返回示例
成功
{
"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"
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
PUT getNacosConfigAndSignListener 获取Nacos配置信息并对该配置设置监听
PUT /:8889/nacos/config/info/{group}/{dataId}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
group | path | string | 是 | none |
dataId | path | string | 是 | none |
返回示例
成功
{
"code": 200,
"msg": "获取Nacos配置信息并设定监听成功(get configuration info from nacos and sign listener success)",
"data": "spring:\r\n port: 9898\r\n "
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
GET getHealthyInstanceInfoList 获取Nacos健康实例(服务的集群下)
GET /:8889/nacos/instance/healthy/info/list/{serviceName}/{clusterName}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
serviceName | path | string | 是 | none |
clusterName | path | string | 是 | none |
返回示例
成功
{
"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
}
]
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
POST publishConfig 发布Nacos配置
POST /:8889/nacos/config
Body 请求参数
{
"group": "DEFAULT_GROUP",
"dataId": "test01",
"type": "yaml",
"content": "server:\n\tport: 9898"
}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
body | body | object | 否 | none |
返回示例
成功
{
"code": 200,
"msg": "Nacos配置发布成功(publish nacos configuration success)",
"data": true
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
POST signListenerToService 监听Nacos服务下的某个集群(订阅)
POST /:8889/nacos/service/listener/{serviceName}/{clusterName}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
serviceName | path | string | 是 | none |
clusterName | path | string | 是 | none |
返回示例
成功
{
"code": 200,
"msg": "监听Nacos服务成功(sign listener to naocs service success)",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
DELETE deleteListenerToService 删除Nacos服务监听(消除订阅) Copy
DELETE /:8889/nacos/service/listener/{serviceName}/{clusterName}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
serviceName | path | string | 是 | none |
clusterName | path | string | 是 | none |
返回示例
成功
{
"code": 200,
"msg": "删除Nacos服务监听成功(delete listener from nacos service success)",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
GET getUnhealthyInstanceInfoList 获取Nacos上的某个服务的某个集群下全部实例 Copy
GET /:8889/nacos/instance/unhealthy/info/list/{serviceName}/{clusterName}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
serviceName | path | string | 是 | none |
clusterName | path | string | 是 | none |
返回示例
成功
{
"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
}
]
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
POST signListenerToService 监听Nacos服务(订阅)
POST /:8889/nacos/service/listener/{serviceName}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
serviceName | path | string | 是 | none |
返回示例
成功
{
"code": 200,
"msg": "监听Nacos服务成功(sign listener to naocs service success)",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
DELETE deleteListenerToService 删除Nacos服务监听(消除订阅)
DELETE /:8889/nacos/service/listener/{serviceName}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
serviceName | path | string | 是 | none |
返回示例
成功
{
"code": 200,
"msg": "删除Nacos服务监听成功(delete listener from nacos service success)",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
POST registerInstance Nacos注册实例
POST /:8889/nacos/instance
Body 请求参数
{
"serviceName": "testService",
"ip": "192.168.31.149",
"port": 8889,
"clusterName": "DEFAULT"
}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
body | body | object | 否 | none |
返回示例
成功
{
"code": 200,
"msg": "Nacos注册实例成功(Nacos register instance success)",
"data": null
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
DELETE deleteInstance Nacos删除实例
DELETE /:8889/nacos/instance
Body 请求参数
{
"serviceName": "testService",
"ip": "192.168.31.149",
"port": 8889,
"clusterName": "DEFAULT"
}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
body | body | object | 否 | none |
返回示例
成功
{
"code": 200,
"msg": "Nacos删除实例成功(deregister nacos instance success)",
"data": true
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
DELETE deleteConfig 删除Nacos配置
DELETE /:8889/nacos/config/{group}/{dataId}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
group | path | string | 是 | none |
dataId | path | string | 是 | none |
返回示例
成功
{
"code": 200,
"msg": "Nacos配置删除成功(delete nacos configuration success)",
"data": true
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
GET getUnhealthyInstanceInfoList 获取Nacos非健康实例(服务下)
GET /:8889/nacos/instance/unhealthy/info/list/{serviceName}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
serviceName | path | string | 是 | none |
返回示例
成功
{
"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
}
]
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
GET getInstanceInfoList 获取Nacos上的某个服务下全部实例
GET /:8889/nacos/instance/info/list/{serviceName}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
serviceName | path | string | 是 | none |
返回示例
成功
{
"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
}
]
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
GET testRegisterInstanceNacos 注册实例示例代码(学习前请查看)
GET /:8889/nacos/instance/test
返回示例
成功
{
"code": 200,
"msg": "测试实例注册成功(test instance register success)",
"data": true
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |
返回数据结构
GET getInstanceInfoList 获取Nacos上的某个服务的某个集群下全部实例
GET /:8889/nacos/instance/info/list/{serviceName}/{clusterName}
请求参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
serviceName | path | string | 是 | none |
clusterName | path | string | 是 | none |
返回示例
成功
{
"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
}
]
}
返回结果
状态码 | 状态码含义 | 说明 | 数据模型 |
---|---|---|---|
200 | OK | 成功 | Inline |