1 Star 0 Fork 134

lyc984006207 / 分布式序列号生成组件

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 2.43 KB
一键复制 编辑 原始数据 按行查看 历史
xuan698400 提交于 2018-05-14 17:04 . bb

分布式序列号生成组件

项目介绍

微服务时代,我们需要生产一个连续的序列号,变得比较麻烦。 这里使用了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   
新加特性:支持DB方式生成序列号
使用文档:https://my.oschina.net/u/1271235/blog/1808103
更新时间:2018/05/07 ===================================================================================
v1.1   
新加特性:支持Redis方式生成序列号
使用文档:https://my.oschina.net/u/1271235/blog/1809437
更新时间:2018/05/09 ===================================================================================
v1.2   
新加特性:支持雪花算法方式生成序列号
使用文档:https://my.oschina.net/u/1271235/blog/1812305
更新时间:2018/05/14 ===================================================================================

联系方式

  1. 姓名:徐安
  2. 邮箱:javaandswing@163.com
  3. QQ:349309307
  4. 个人博客:xuanner.com
Java
1
https://gitee.com/www.lyc.com/xsequence.git
git@gitee.com:www.lyc.com/xsequence.git
www.lyc.com
xsequence
分布式序列号生成组件
master

搜索帮助