# idworker
**Repository Path**: zhaoziji/idworker
## Basic Information
- **Project Name**: idworker
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-11-24
- **Last Updated**: 2023-11-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## idworker - 基于zookeeper,snowflake的分布式统一ID生成工具
[](https://app.travis-ci.com/imadcn/idworker)
[](https://coveralls.io/github/imadcn/idworker?branch=master)
[](https://search.maven.org/artifact/com.imadcn.framework/idworker)
[](https://www.apache.org/licenses/LICENSE-2.0.html)
### 是什么
idworker 是一个基于zookeeper和snowflake算法的分布式统一ID生成工具,通过zookeeper自动注册机器(最多1024台),无需手动指定workerId和dataCenterId
### 怎么用
#### Maven
```xml
com.imadcn.framework
idworker
${latest.version}
```
#### XML
```xml
```
#### API
```java
@Autowired
public IdGenerator generator;
public void id() {
long id = generator.nextId(); // Long型ID(64进制UUID不支持),随着时间推移,ID长度为7-19位
long[] ids = generator.nextId(100_000); // 批量Long型ID(64进制UUID不支持),最多10w个
String strId = generator.nextStringId(); // 字符串格式ID
String fixedId = generator.nextFixedStringId(); // 固定19位长度字符串Id
}
```
### 配置参考
#### 注册中心配置,如zookeeper(64进制UUID策略可不配置注册中心)
|属性|类型|必填|缺省值|兼容版本|描述|
|:------|:------|:------|:------|:------|:------|
|id|String|是| |1.0.0+|Spring容器中的ID|
|server-lists|String|是| |1.0.0+|连接Zookeeper服务器的列表
包括IP地址和端口号
多个地址用逗号分隔
如: host1:2181,host2:2181|
|namespace|String|否|idworker|1.0.0+|Zookeeper的命名空间|
|base-sleep-time-milliseconds|int|否|1000|1.0.0+|等待重试的间隔时间的初始值
单位:毫秒|
|max-sleep-time-milliseconds|int|否|3000|1.0.0+|等待重试的间隔时间的最大值
单位:毫秒|
|max-retries|int|否|3|1.0.0+|最大重试次数|
|session-timeout-milliseconds|int|否|60000|1.0.0+|会话超时时间
单位:毫秒|
|connection-timeout-milliseconds|int|否|15000|1.0.0+|连接超时时间
单位:毫秒|
|digest|String|否| |1.0.0+|连接Zookeeper的权限令牌
缺省为不需要权限验证|
#### ID生成策略配置
|属性|类型|必填|缺省值|兼容版本|描述|
|:------|:------|:------|:------|:------|:------|
|id|String|是| |1.0.0+|Spring容器中的ID|
|strategy|String|是|snowflake|1.2.0+|ID生成[snowflake, compress_uuid],当策略为64进制uuid时,registry-center-ref可不用配置|
|registry-center-ref|String|否| |1.0.0+|注册中心SpringBeanRef,当生成策略为snowflake时,必填|
|group|String|否|default|1.0.0+|分组名,可以为不同业务分配分组,独立注册|
|registry-file|String|否|./tmp/idworker/GROUPNAME.cache|1.3.0+|注册信息缓存文件地址,默认在程序所在目录 ./tmp/idworker/GROUPNAME.cache|
|durable|boolean|否|false|1.4.0+|节点注册信息是否持久化存储(持久化存储会依赖于本地缓存文件,容器环境建议使用非持久化)|
|serialize|String|否|fastjson|1.6.0+|序列化方式,可选值:fastjson, jackson|
|cacheable|boolean|否|true|1.6.0+|是否使用本地缓存(如果不依赖本地缓存,那么每次都会申请一个新的workerId)。需要注意的是,如果不依赖本地缓存,且开启了节点持久化存储。会在一定次数以后耗尽可用节点信息。|
#### 生成策略 : snowflake模式
|属性|类型|必填|缺省值|兼容版本|描述|
|:------|:------|:------|:------|:------|:------|
|id|String|是| |1.2.0+|Spring容器中的ID|
|registry-center-ref|String|是| |1.2.0+|注册中心SpringBeanRef|
|group|String|否|default|1.2.0+|分组名,可以为不同业务分配分组,独立注册|
|registry-file|String|否|./tmp/idworker/GROUPNAME.cache|1.3.0+|注册信息缓存文件地址,默认在程序所在目录 ./tmp/idworker/GROUPNAME.cache|
|durable|String|否|false|1.4.0+|节点注册信息是否持久化存储(持久化存储会依赖于本地缓存文件,容器环境建议使用非持久化)|
|serialize|String|否|fastjson|1.6.0+|序列化方式,可选值:fastjson, jackson|
|cacheable|boolean|否|true|1.6.0+|是否使用本地缓存(如果不依赖本地缓存,那么每次都会申请一个新的workerId)。需要注意的是,如果不依赖本地缓存,且开启了节点持久化存储。会在一定次数以后耗尽可用节点信息。|
#### 生成策略 : 64进制UUID模式
|属性|类型|必填|缺省值|兼容版本|描述|
|:------|:------|:------|:------|:------|:------|
|id|String|是| |1.2.0+|Spring容器中的ID|