本项目为tinyid的注释版 代码比较简单,加上代码注释方便学习 原项目链接地址: https://github.com/didi/tinyid
- 增加注释
- 引入文档工具(knife4j),方便web测试
- 增加测试用例
Tinyid is a ID Generator Service. It provides a REST API and a java client for getting ids. Over 10 million QPS per single instance when using the java client. Support jdk version 1.7+
git clone https://github.com/didi/tinyid.git
cd tinyid/tinyid-server/ && create table with db.sql (mysql)
cd tinyid-server/src/main/resources/offline
vi application.properties
datasource.tinyid.names=primary
datasource.tinyid.primary.driver-class-name=com.mysql.jdbc.Driver
datasource.tinyid.primary.url=jdbc:mysql://ip:port/databaseName?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
datasource.tinyid.primary.username=root
datasource.tinyid.primary.password=123456
cd tinyid-server/
sh build.sh offline
java -jar output/tinyid-server-xxx.jar
nextId:
curl 'http://localhost:9999/tinyid/id/nextId?bizType=test&token=0f673adf80504e2eaa552f5d791b644c'
response:{"data":[2],"code":200,"message":""}
nextId Simple:
curl 'http://localhost:9999/tinyid/id/nextIdSimple?bizType=test&token=0f673adf80504e2eaa552f5d791b644c'
response: 3
with batchSize:
curl 'http://localhost:9999/tinyid/id/nextIdSimple?bizType=test&token=0f673adf80504e2eaa552f5d791b644c&batchSize=10'
response: 4,5,6,7,8,9,10,11,12,13
Get nextId like 1,3,5,7,9...
bizType=test_odd : delta is 2 and remainder is 1
curl 'http://localhost:9999/tinyid/id/nextIdSimple?bizType=test_odd&batchSize=10&token=0f673adf80504e2eaa552f5d791b644c'
response: 3,5,7,9,11,13,15,17,19,21
<dependency>
<groupId>com.xiaoju.uemc.tinyid</groupId>
<artifactId>tinyid-client</artifactId>
<version>${tinyid.version}</version>
</dependency>
tinyid_client.properties:
tinyid.server=localhost:9999
tinyid.token=0f673adf80504e2eaa552f5d791b644c
#(tinyid.server=localhost:9999/gateway,ip2:port2/prefix,...)
Long id = TinyId.nextId("test");
List<Long> ids = TinyId.nextId("test", 10);
Welcome to contribute by creating issues or sending pull requests. See Contributing Guide for guidelines.
Tinyid is licensed under the Apache License 2.0. See the LICENSE file.
This is not an official Didi product (experimental or otherwise), it is just code that happens to be owned by Didi.