Skip to content

Commit 2154ad8

Browse files
authored
Develop astro nacos 3.0 beta (#888)
* Add document for dlock. * Add 3.0.0-beta release blog.
1 parent 6ba3b26 commit 2154ad8

File tree

10 files changed

+456
-8
lines changed

10 files changed

+456
-8
lines changed
Loading
Loading

public/img/blog/3_0_0-release/nacos_controller_config_gray.svg

+16
Loading

public/img/blog/3_0_0-release/nacos_controller_cross_k8s_situ.svg

+16
Loading

public/img/blog/3_0_0-release/nacos_controller_non_k8s_situ.svg

+16
Loading

src/content/blog/release-300-beta.md

+170
Large diffs are not rendered by default.

src/content/docs/v3.0/en/manual/user/java-sdk/properties.md

+1-2
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,7 @@ String value = properties2.getProperty("global-key1");
183183

184184
### 2.4. 连接相关
185185

186-
Nacos Java SDK 连接Nacos Server时,可以设置一系列的参数,来提升针对网络抖动时的容错能力,这部分配置暂时**只能通过JVM参数(
187-
-D)**进行设置,社区正在进行改造,支持其能够通过`NacosClientProperties`(即初始化Java SDK时传入的Properties)进行配置,尽请期待。
186+
Nacos Java SDK 连接Nacos Server时,可以设置一系列的参数,来提升针对网络抖动时的容错能力
188187

189188
| 参数名 | 含义 | 可选值 | 默认值 |
190189
|-----------------------------------------------------------------|------------------------------------------------------------------------------------|---------|---------------|

src/content/docs/v3.0/en/manual/user/java-sdk/usage.md

+118-2
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ ConfigService configService = NacosFactory.createConfigService(serverAddr);
6969

7070
# 初始化配置中心的Nacos Java SDK
7171
NamingService namingService = NacosFactory.createNamingService(serverAddr);
72+
73+
# 分布式锁的Nacos Java SDK不支持仅传入serverAddr进行初始化,请使用Properties进行。
7274
```
7375

7476
如果初始化SDK时,还需要配置一些参数,可以使用 `Properties` 类进行配置:
@@ -86,6 +88,9 @@ ConfigService configService = NacosFactory.createConfigService(properties);
8688

8789
# 初始化配置中心的Nacos Java SDK
8890
NamingService namingService = NacosFactory.createNamingService(properties);
91+
92+
# 初始化分布式锁的Nacos Java SDK
93+
LockService lockService = NacosLockFactory.createLockService(properties);
8994
```
9095

9196
更多初始化时所涉及的参数配置,请参考[Java SDK 配置参数](./properties.md)
@@ -1403,8 +1408,119 @@ public void onServiceReachUpLimit() {
14031408
}
14041409
```
14051410

1406-
## 5. Java SDK的生命周期
1411+
## 5. 分布式锁API
1412+
1413+
:::note
1414+
分布式锁功能于3.0版本中添加,目前功能还处于实验性阶段,功能生态还未完善,可能存在一定的问题,请谨慎使用。
1415+
:::
1416+
1417+
> 分布式锁功能目前版本还缺少对应的运维API和监听对应锁的API,将在后续版本中添加支持。
1418+
1419+
### 5.1. 获取分布式锁
1420+
1421+
#### 描述
1422+
1423+
通过此接口可以尝试获取分布式锁,如果获取失败,则返回false,如果获取成功,则返回true。
1424+
1425+
```java
1426+
Boolean lock(LockInstance instance) throws NacosException;
1427+
```
1428+
1429+
#### 请求参数
1430+
1431+
| 名称 | 类型 | 描述 | 默认值 |
1432+
|:---------|:-------------|------------|------|
1433+
| instance | LockInstance | 分布式锁的锁对象实例 | 无,必填 |
1434+
1435+
LockInstance对象中包含如下参数:
1436+
1437+
| 名称 | 类型 | 描述 | 默认值 |
1438+
|:------------|:-------------------|--------------------------------------------------|------|
1439+
| key | String | 分布式锁的唯一key,同一类型的锁若key相同时,则认为期望获取同一把锁 | 无,必填 |
1440+
| expiredTime | long | 分布式锁的过期时间,单位为毫秒,0表示取到锁后立刻释放,若设置的值小于0,将使用默认值30000 | 0 |
1441+
| params | Map<String,String> | 自定义参数,用于扩展锁的自定义属性 ||
1442+
| lockType | String | 分布式锁类型,目前仅支持"NACOS_LOCK" ||
1443+
1444+
> Nacos 目前提供一个默认实现的锁类型,即"NACOS_LOCK",可通过`new NLock()`进行快速创建,后续会支持更多类型的锁。
1445+
1446+
#### 返回参数
1447+
1448+
获取锁的结果`Boolean`,如果获取锁成功,则返回`true`,否则返回`false`
1449+
1450+
#### 请求示例
1451+
1452+
```java
1453+
Properties properties = new Properties();
1454+
properties.setProperty(PropertyKeyConst.SERVER_ADDR, "{serverAddr}");
1455+
LockService lockService = NacosLockFactory.createLockService(properties);
1456+
NLock nLock = new NLock("testLock", 5000L);
1457+
try {
1458+
if (lockService.lock(nLock)) {
1459+
System.out.printf("try to lock `testLock` successfully.");
1460+
} else {
1461+
System.out.printf("try to lock `testLock` failed, please retry later.");
1462+
}
1463+
} catch (NacosException e) {
1464+
e.printStackTrace();
1465+
} finally {
1466+
System.out.printf("try to unlock `testLock`, result: " + lockService.unLock(nLock));
1467+
}
1468+
```
1469+
1470+
### 5.2. 释放分布式锁
1471+
1472+
#### 描述
1473+
1474+
通过此接口可以释放获取到的分布式锁,如果释放成功,则返回true,否则返回false。
1475+
1476+
```java
1477+
Boolean unLock(LockInstance instance) throws NacosException;
1478+
```
1479+
1480+
#### 请求参数
1481+
1482+
| 名称 | 类型 | 描述 | 默认值 |
1483+
|:---------|:-------------|------------|------|
1484+
| instance | LockInstance | 分布式锁的锁对象实例 | 无,必填 |
1485+
1486+
LockInstance对象中包含如下参数:
1487+
1488+
| 名称 | 类型 | 描述 | 默认值 |
1489+
|:------------|:-------------------|--------------------------------------------------|------|
1490+
| key | String | 分布式锁的唯一key,同一类型的锁若key相同时,则认为期望获取同一把锁 | 无,必填 |
1491+
| expiredTime | long | 分布式锁的过期时间,单位为毫秒,0表示取到锁后立刻释放,若设置的值小于0,将使用默认值30000 | 0 |
1492+
| params | Map<String,String> | 自定义参数,用于扩展锁的自定义属性 ||
1493+
| lockType | String | 分布式锁类型,目前仅支持"NACOS_LOCK" ||
1494+
1495+
> Nacos 目前提供一个默认实现的锁类型,即"NACOS_LOCK",可通过`new NLock()`进行快速创建,后续会支持更多类型的锁。
1496+
1497+
#### 返回参数
1498+
1499+
释放锁的结果`Boolean`,如果获取锁成功,则返回`true`,否则返回`false`
1500+
1501+
#### 请求示例
1502+
1503+
```java
1504+
Properties properties = new Properties();
1505+
properties.setProperty(PropertyKeyConst.SERVER_ADDR, "{serverAddr}");
1506+
LockService lockService = NacosLockFactory.createLockService(properties);
1507+
NLock nLock = new NLock("testLock", 5000L);
1508+
try {
1509+
if (lockService.lock(nLock)) {
1510+
System.out.printf("try to lock `testLock` successfully.");
1511+
} else {
1512+
System.out.printf("try to lock `testLock` failed, please retry later.");
1513+
}
1514+
} catch (NacosException e) {
1515+
e.printStackTrace();
1516+
} finally {
1517+
System.out.printf("try to unlock `testLock`, result: " + lockService.unLock(nLock));
1518+
}
1519+
```
1520+
1521+
## 6. Java SDK的生命周期
14071522

14081523
Nacos的Java SDK 生命周期从创建时开始,到调用`shutdown()`方法时结束,期间对应创建的线程池、连接等均会始终保留,及时连接断开,也会不断重试重新建立连接。
14091524

1410-
因此在使用时需要注意应用中创建的Nacos Java SDK的实例个数,避免造成线程池和连接的泄漏,在更换Nacos Java SDK实例时,切记调用`shutdown()`方法,同时在应用中应尽量复用同一个Nacos Java SDK实例,避免频繁的初始化实例。
1525+
因此在使用时需要注意应用中创建的Nacos Java SDK的实例个数,避免造成线程池和连接的泄漏,在更换Nacos Java
1526+
SDK实例时,切记调用`shutdown()`方法,同时在应用中应尽量复用同一个Nacos Java SDK实例,避免频繁的初始化实例。

src/content/docs/v3.0/zh-cn/manual/user/java-sdk/properties.md

+1-2
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,7 @@ String value = properties2.getProperty("global-key1");
183183

184184
### 2.4. 连接相关
185185

186-
Nacos Java SDK 连接Nacos Server时,可以设置一系列的参数,来提升针对网络抖动时的容错能力,这部分配置暂时**只能通过JVM参数(
187-
-D)**进行设置,社区正在进行改造,支持其能够通过`NacosClientProperties`(即初始化Java SDK时传入的Properties)进行配置,尽请期待。
186+
Nacos Java SDK 连接Nacos Server时,可以设置一系列的参数,来提升针对网络抖动时的容错能力
188187

189188
| 参数名 | 含义 | 可选值 | 默认值 |
190189
|-----------------------------------------------------------------|------------------------------------------------------------------------------------|---------|---------------|

src/content/docs/v3.0/zh-cn/manual/user/java-sdk/usage.md

+118-2
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ ConfigService configService = NacosFactory.createConfigService(serverAddr);
6969

7070
# 初始化配置中心的Nacos Java SDK
7171
NamingService namingService = NacosFactory.createNamingService(serverAddr);
72+
73+
# 分布式锁的Nacos Java SDK不支持仅传入serverAddr进行初始化,请使用Properties进行。
7274
```
7375

7476
如果初始化SDK时,还需要配置一些参数,可以使用 `Properties` 类进行配置:
@@ -86,6 +88,9 @@ ConfigService configService = NacosFactory.createConfigService(properties);
8688

8789
# 初始化配置中心的Nacos Java SDK
8890
NamingService namingService = NacosFactory.createNamingService(properties);
91+
92+
# 初始化分布式锁的Nacos Java SDK
93+
LockService lockService = NacosLockFactory.createLockService(properties);
8994
```
9095

9196
更多初始化时所涉及的参数配置,请参考[Java SDK 配置参数](./properties.md)
@@ -1403,8 +1408,119 @@ public void onServiceReachUpLimit() {
14031408
}
14041409
```
14051410

1406-
## 5. Java SDK的生命周期
1411+
## 5. 分布式锁API
1412+
1413+
:::note
1414+
分布式锁功能于3.0版本中添加,目前功能还处于实验性阶段,功能生态还未完善,可能存在一定的问题,请谨慎使用。
1415+
:::
1416+
1417+
> 分布式锁功能目前版本还缺少对应的运维API和监听对应锁的API,将在后续版本中添加支持。
1418+
1419+
### 5.1. 获取分布式锁
1420+
1421+
#### 描述
1422+
1423+
通过此接口可以尝试获取分布式锁,如果获取失败,则返回false,如果获取成功,则返回true。
1424+
1425+
```java
1426+
Boolean lock(LockInstance instance) throws NacosException;
1427+
```
1428+
1429+
#### 请求参数
1430+
1431+
| 名称 | 类型 | 描述 | 默认值 |
1432+
|:---------|:-------------|------------|------|
1433+
| instance | LockInstance | 分布式锁的锁对象实例 | 无,必填 |
1434+
1435+
LockInstance对象中包含如下参数:
1436+
1437+
| 名称 | 类型 | 描述 | 默认值 |
1438+
|:------------|:-------------------|--------------------------------------------------|------|
1439+
| key | String | 分布式锁的唯一key,同一类型的锁若key相同时,则认为期望获取同一把锁 | 无,必填 |
1440+
| expiredTime | long | 分布式锁的过期时间,单位为毫秒,0表示取到锁后立刻释放,若设置的值小于0,将使用默认值30000 | 0 |
1441+
| params | Map<String,String> | 自定义参数,用于扩展锁的自定义属性 ||
1442+
| lockType | String | 分布式锁类型,目前仅支持"NACOS_LOCK" ||
1443+
1444+
> Nacos 目前提供一个默认实现的锁类型,即"NACOS_LOCK",可通过`new NLock()`进行快速创建,后续会支持更多类型的锁。
1445+
1446+
#### 返回参数
1447+
1448+
获取锁的结果`Boolean`,如果获取锁成功,则返回`true`,否则返回`false`
1449+
1450+
#### 请求示例
1451+
1452+
```java
1453+
Properties properties = new Properties();
1454+
properties.setProperty(PropertyKeyConst.SERVER_ADDR, "{serverAddr}");
1455+
LockService lockService = NacosLockFactory.createLockService(properties);
1456+
NLock nLock = new NLock("testLock", 5000L);
1457+
try {
1458+
if (lockService.lock(nLock)) {
1459+
System.out.printf("try to lock `testLock` successfully.");
1460+
} else {
1461+
System.out.printf("try to lock `testLock` failed, please retry later.");
1462+
}
1463+
} catch (NacosException e) {
1464+
e.printStackTrace();
1465+
} finally {
1466+
System.out.printf("try to unlock `testLock`, result: " + lockService.unLock(nLock));
1467+
}
1468+
```
1469+
1470+
### 5.2. 释放分布式锁
1471+
1472+
#### 描述
1473+
1474+
通过此接口可以释放获取到的分布式锁,如果释放成功,则返回true,否则返回false。
1475+
1476+
```java
1477+
Boolean unLock(LockInstance instance) throws NacosException;
1478+
```
1479+
1480+
#### 请求参数
1481+
1482+
| 名称 | 类型 | 描述 | 默认值 |
1483+
|:---------|:-------------|------------|------|
1484+
| instance | LockInstance | 分布式锁的锁对象实例 | 无,必填 |
1485+
1486+
LockInstance对象中包含如下参数:
1487+
1488+
| 名称 | 类型 | 描述 | 默认值 |
1489+
|:------------|:-------------------|--------------------------------------------------|------|
1490+
| key | String | 分布式锁的唯一key,同一类型的锁若key相同时,则认为期望获取同一把锁 | 无,必填 |
1491+
| expiredTime | long | 分布式锁的过期时间,单位为毫秒,0表示取到锁后立刻释放,若设置的值小于0,将使用默认值30000 | 0 |
1492+
| params | Map<String,String> | 自定义参数,用于扩展锁的自定义属性 ||
1493+
| lockType | String | 分布式锁类型,目前仅支持"NACOS_LOCK" ||
1494+
1495+
> Nacos 目前提供一个默认实现的锁类型,即"NACOS_LOCK",可通过`new NLock()`进行快速创建,后续会支持更多类型的锁。
1496+
1497+
#### 返回参数
1498+
1499+
释放锁的结果`Boolean`,如果获取锁成功,则返回`true`,否则返回`false`
1500+
1501+
#### 请求示例
1502+
1503+
```java
1504+
Properties properties = new Properties();
1505+
properties.setProperty(PropertyKeyConst.SERVER_ADDR, "{serverAddr}");
1506+
LockService lockService = NacosLockFactory.createLockService(properties);
1507+
NLock nLock = new NLock("testLock", 5000L);
1508+
try {
1509+
if (lockService.lock(nLock)) {
1510+
System.out.printf("try to lock `testLock` successfully.");
1511+
} else {
1512+
System.out.printf("try to lock `testLock` failed, please retry later.");
1513+
}
1514+
} catch (NacosException e) {
1515+
e.printStackTrace();
1516+
} finally {
1517+
System.out.printf("try to unlock `testLock`, result: " + lockService.unLock(nLock));
1518+
}
1519+
```
1520+
1521+
## 6. Java SDK的生命周期
14071522

14081523
Nacos的Java SDK 生命周期从创建时开始,到调用`shutdown()`方法时结束,期间对应创建的线程池、连接等均会始终保留,及时连接断开,也会不断重试重新建立连接。
14091524

1410-
因此在使用时需要注意应用中创建的Nacos Java SDK的实例个数,避免造成线程池和连接的泄漏,在更换Nacos Java SDK实例时,切记调用`shutdown()`方法,同时在应用中应尽量复用同一个Nacos Java SDK实例,避免频繁的初始化实例。
1525+
因此在使用时需要注意应用中创建的Nacos Java SDK的实例个数,避免造成线程池和连接的泄漏,在更换Nacos Java
1526+
SDK实例时,切记调用`shutdown()`方法,同时在应用中应尽量复用同一个Nacos Java SDK实例,避免频繁的初始化实例。

0 commit comments

Comments
 (0)