Skip to content
ID Generator id生成器 分布式id生成系统,简单易用、高性能、高可用的id生成系统
Java Shell
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc add tinyid png Mar 10, 2019
tinyid-base rm unnecessary code ,add comment Feb 16, 2019
tinyid-client pom and contoller fix Oct 13, 2018
tinyid-server 修复多数据源导致的bug问题 Aug 22, 2019
.gitignore tinyid Sep 26, 2018
CONTRIBUTING.md haha Jan 25, 2019
LICENSE LICENSE Sep 26, 2018
README.md add wiki link Mar 9, 2019
pom.xml pom and contoller fix Oct 13, 2018

README.md

Tinyid

license PRs Welcome

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+

Getting started

中文wiki

Clone code

git clone https://github.com/didi/tinyid.git

Create table

cd tinyid/tinyid-server/ && create table with db.sql (mysql)

Config db

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

Start tinyid-server

cd tinyid-server/
sh build.sh offline
java -jar output/tinyid-server-xxx.jar

REST API

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

Java client (Recommended)

Maven dependency

<dependency>
    <groupId>com.xiaoju.uemc.tinyid</groupId>
    <artifactId>tinyid-client</artifactId>
    <version>${tinyid.version}</version>
</dependency>

Create tinyid_client.properties in your classpath

tinyid_client.properties:

tinyid.server=localhost:9999
tinyid.token=0f673adf80504e2eaa552f5d791b644c

#(tinyid.server=localhost:9999/gateway,ip2:port2/prefix,...)

Java Code

Long id = TinyId.nextId("test");
List<Long> ids = TinyId.nextId("test", 10);

Communication

Tinyid Community

Contributing

Welcome to contribute by creating issues or sending pull requests. See Contributing Guide for guidelines.

License

Tinyid is licensed under the Apache License 2.0. See the LICENSE file.

Note

This is not an official Didi product (experimental or otherwise), it is just code that happens to be owned by Didi.

You can’t perform that action at this time.