Tinyid 分布式ID生成系统使用教程
1. 项目介绍
Tinyid 是滴滴开发的一款分布式ID生成系统,基于美团(Leaf)的 leaf-segment 算法升级而来。它不仅支持数据库多主节点模式,还提供了 tinyid-client,使得ID生成更加简单易用、高性能和高可用。Tinyid 提供了 REST API 和 Java 客户端两种方式接入,适用于各种分布式系统中的ID生成需求。
2. 项目快速启动
2.1 克隆代码
首先,克隆 Tinyid 的代码库到本地:
git clone https://github.com/didi/tinyid.git
2.2 创建数据库表
进入 tinyid-server
目录,并使用提供的 SQL 文件创建数据库表:
cd tinyid/tinyid-server/
mysql -u root -p < db.sql
2.3 配置数据库连接
编辑 tinyid-server/src/main/resources/offline/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
2.4 启动 Tinyid 服务
进入 tinyid-server
目录,执行启动脚本:
cd tinyid-server/
sh build.sh offline
java -jar output/tinyid-server-xxx.jar
2.5 使用 REST API 获取 ID
启动服务后,可以通过 REST API 获取 ID:
curl 'http://localhost:9999/tinyid/id/nextId?bizType=test&token=0f673adf80504e2eaa552f5d791b644c'
2.6 使用 Java 客户端获取 ID
在 Maven 项目中添加依赖:
<dependency>
<groupId>com.xiaoju.uemc.tinyid</groupId>
<artifactId>tinyid-client</artifactId>
<version>${tinyid.version}</version>
</dependency>
在 classpath 下创建 tinyid_client.properties
文件:
tinyid.server=localhost:9999
tinyid.token=0f673adf80504e2eaa552f5d791b644c
使用 Java 代码获取 ID:
Long id = TinyId.nextId("test");
List<Long> ids = TinyId.nextId("test", 10);
3. 应用案例和最佳实践
3.1 应用案例
Tinyid 广泛应用于分布式系统中,如订单系统、用户系统、日志系统等,用于生成全局唯一的ID。例如,在订单系统中,每个订单都需要一个唯一的ID,Tinyid 可以高效地生成这些ID。
3.2 最佳实践
- 多主节点模式:Tinyid 支持数据库多主节点模式,可以提高系统的可用性和性能。
- 本地缓存:通过 tinyid-client 在本地缓存号段,减少对服务端的依赖,提高性能。
- 批量获取:在需要大量ID的场景下,使用批量获取接口,减少网络开销。
4. 典型生态项目
Tinyid 作为一个分布式ID生成系统,可以与其他分布式系统结合使用,如:
- 分布式数据库:如 MySQL、PostgreSQL 等,用于存储生成的ID。
- 消息队列:如 Kafka、RabbitMQ 等,用于传递生成的ID。
- 分布式缓存:如 Redis、Memcached 等,用于缓存生成的ID,提高访问速度。
通过这些生态项目的结合,Tinyid 可以更好地服务于各种分布式系统,提供高效、可靠的ID生成服务。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考