springcloud项目中服务都是集群部署的,怎样使用雪花算法生成的id才不会重复,给出代码示例
时间: 2024-03-09 11:45:01 浏览: 53
Js Snowflake(雪花算法)生成随机ID的实现方法
5星 · 资源好评率100%
使用雪花算法生成的 id 不会重复的前提是每个节点的 datacenterId 和 workerId 都是唯一的,下面是一个简单的代码示例:
1. 引入依赖
```xml
<dependency>
<groupId>com.github.wujun234</groupId>
<artifactId>snowflake-sequence-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
```
2. 配置参数
在 application.yml 中配置雪花算法的参数,例如:
```yaml
snowflake:
data-center-id: 1
worker-id: 1
```
3. 生成 ID
通过注入 SnowflakeSequenceGenerator 对象来生成 ID,例如:
```java
@RestController
public class IdController {
@Autowired
private SnowflakeSequenceGenerator sequenceGenerator;
@GetMapping("/id")
public Long getId() {
return sequenceGenerator.nextId();
}
}
```
在集群部署的情况下,要确保每个节点的 datacenterId 和 workerId 都是唯一的,可以通过配置文件、环境变量等方式来设置。例如,可以在启动脚本中设置不同的参数值:
```
java -jar app.jar --snowflake.data-center-id=1 --snowflake.worker-id=1
```
这样就可以确保不同节点生成的 ID 不会重复。
阅读全文