# 分布式序列号生成组件 **Repository Path**: bootstrap2table/xsequence ## Basic Information - **Project Name**: 分布式序列号生成组件 - **Description**: 微服务时代,我们需要生产一个连续的序列号,变得比较麻烦。这里使用了Mysql简单的实现了一个简单的分布式序列号生成组件。后续还可以支持redis等其他高效中间件。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 136 - **Created**: 2018-05-30 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 分布式序列号生成组件 #### 项目介绍 微服务时代,我们需要生产一个连续的序列号,变得比较麻烦。 这里使用了Mysql实现了一个简单的分布式序列号生成组件。后续还可以支持redis等其他高效中间件。 当然还有一种叫雪花算法的序列号生成器,这种算法有个缺点就是长度太长,不是真正意义的从1开始累加序列。 当然秉着包容万象的心态,后续可以实现进去,让用户自己根据特定场景选择算法。 #### 软件架构 DB模块实现原理很简单,在mysql数据专门创建一张表,例如:
CREATE TABLE IF NOT EXISTS `sequence`(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键id',
`value` bigint(20) NOT NULL COMMENT 'sequence当前值',
`name` varchar(32) NOT NULL COMMENT 'sequence对应的名称,通常是表名',
`gmt_create` DATETIME NOT NULL COMMENT '创建时间',
`gmt_modified` DATETIME NOT NULL COMMENT '修改时间',
PRIMARY KEY (`ID`) ,UNIQUE uk_name (`name`)
);
每钟业务类型创建一条记录,value表示当时取的区间值,例如当前value值是100。
当我们设置step长为100时,来取一次,就会update到value。然后程序节点就可以把这个100分配出去。
#### 代码结构
1. xsequence-core:核心代码
2. xsequence-test:测试代码
#### Maven支持
<dependency>
<groupId>com.xuanner</groupId>
<artifactId>xsequence-core</artifactId>
<version>1.2</version>
</dependency>
#### 历史版本说明
v1.0