1.项目下载
将tinyid的源码丛github
来下载下来
在github上下载:https://github.com/didi/tinyid
项目的目录结构如下图
2.配置数据源
在下载的tinyid-server源码包中,存在db.sql,将sql导入mysql中:
存在两张表:tiny_id_info与tiny_id_token
tiny_id_info:用于记录ID的生成记录;
tiny_id_token:用于记录请求的token以及biz_type(业务类型)
两个表数据是一对一的,如果是多服务共用一个server端,建议分模块或者服务单独建议业务类型和token
3.配置tinyid-server
1.修改mysql版本
在下载的源码中,使用的mysql为5.x,如果要用8.x,需要修改xml文件,下载对应版本:
2.修改配置文件
修改resources/offline或者online
下的application.properties
文件,配置tinyid
信息,及sql
信息,同时你也可以将application.properties
文件改为yaml文件,注意yaml文件格式
server.port=1111
server.context-path=/tinyid
batch.size.max=100000
datasource.tinyid.names=primary
#多数据源配置一
#datasource.tinyid.names=primary,secondary
datasource.tinyid.type=org.apache.tomcat.jdbc.pool.DataSource
datasource.tinyid.primary.driver-class-name=com.mysql.jdbc.Driver
datasource.tinyid.primary.url=jdbc:mysql://localhost:3306/tinyid?useUnicode=true&useSSL=false&zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=Asia/Shanghai
datasource.tinyid.primary.username=root
datasource.tinyid.primary.password=lhzlx
#多数据源配置二
#datasource.tinyid.primary.testOnBorrow=false
#datasource.tinyid.primary.maxActive=10
#datasource.tinyid.secondary.driver-class-name=com.mysql.jdbc.Driver
#datasource.tinyid.secondary.url=jdbc:mysql://localhost:3306/db2?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
#datasource.tinyid.secondary.username=root
#datasource.tinyid.secondary.password=123456
#datasource.tinyid.secondary.testOnBorrow=false
#datasource.tinyid.secondary.maxActive=10
4.测试tinyid-server
将tinyid-server直接打包成jar包,部署到服务器上或者用jenkins部署打包
返回数据: 1900001,1920001,2000001,1,0
表示服务端部署成功
5、tinyid-client打包
在IDEA中,将tinyid-client
insatll 到本地,生成jar包
6、Tinyid使用
首先启动 tintId-server
,在需要使用ID的项目中,引入tinyid-clent
,引入方式有两种:
步骤1.pom引入
方法一:
需要先通过mvn
命令,将jar打包到本地仓库或者私服,再通过maven坐标引入:
<dependency>
<groupId>com.xiaoju.uemc.tinyid</groupId>
<artifactId>tinyid-client</artifactId>
<version>0.1.0-SNAPSHOT</version>
</dependency>
方法二:
1.或者将tinyid-client
源码中package
得到jar
包手动拷贝到SpringBoot
的resources
下的lib
文件夹下,再通过maven坐标引入,这种方式可以避免其他人使用时进行tinyid-clent
的编译,如图
2.配置pom
<dependency>
<groupId>com.xiaoju.uemc.tinyid</groupId>
<artifactId>tinyid-client</artifactId>
<version>0.1.0-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/tinyid-client-0.1.0-SNAPSHOT.jar</systemPath>
</dependency>
步骤2.配置tinyid_client.properties或者tinyid_client.yaml:
在项目的resources
下创建文件tinyid_client.properties或者tinyid_client.yaml
#配置server端请求地址及token
tinyid.server=127.0.0.1:1111
tinyid.token=0f673adf80504e2eaa552f5d791b644c
yaml
#配置server端请求地址及token
tinyid:
server:127.0.0.1:1111
token:0f673adf80504e2eaa552f5d791b644c
步骤3.使用
执行下列代码,成功打印Id即搭建完成
public class IdTest {
public static void main(String[] args) {
tinyid();
}
private static Long tinyid() {
Long id = TinyId.nextId("test");
System.out.println(id);
return id;
}
}
7.自定义组件
1.先建一个空maven项目,项目目录如图:
2.tinyid-client包的源码全部复制到你自己的空maven项目中,项目目录结构如图:
3.引入pom
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-core</artifactId>
<version>3.5.3.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>2.7.10</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.7.10</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.7.10</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.6</version>
</dependency>
<!-- logback -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.7.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
<scope>test</scope>
</dependency>
</dependencies>
4.修改IdGeneratorFactoryClient类
源码的IdGeneratorFactoryClient
修改后的IdGeneratorFactoryClient