GitHub - didi/tinyid: ID Generator id生成器 分布式id生成系统,简单易用、高性能、...
source link: https://github.com/didi/tinyid
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
Tinyid
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
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
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.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK