fengyanjie@sagacloud.cn d03456a14b 添加分表后自增id插件 3 سال پیش
..
doc d03456a14b 添加分表后自增id插件 3 سال پیش
tinyid-base d03456a14b 添加分表后自增id插件 3 سال پیش
tinyid-client d03456a14b 添加分表后自增id插件 3 سال پیش
tinyid-server d03456a14b 添加分表后自增id插件 3 سال پیش
.gitignore d03456a14b 添加分表后自增id插件 3 سال پیش
CONTRIBUTING.md d03456a14b 添加分表后自增id插件 3 سال پیش
LICENSE d03456a14b 添加分表后自增id插件 3 سال پیش
README.md d03456a14b 添加分表后自增id插件 3 سال پیش
pom.xml d03456a14b 添加分表后自增id插件 3 سال پیش

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.