本周日(5月27日)码云企业技术分享会【微服务】专场将与你相约上海。阿里、华为、ThoughtWorks的技术大咖齐聚,等你来撩!
Watch Star Fork

徐安(徐工) / 分布式序列号生成组件JavaApache-2.0

加入码云
与超过 200 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
微服务时代,我们需要生产一个连续的序列号,变得比较麻烦。这里使用了Mysql简单的实现了一个简单的分布式序列号生成组件。后续还可以支持redis等其他高效中间件。
xuan698400 最后提交于 bb
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README.md 2.43 KB

分布式序列号生成组件

项目介绍

微服务时代,我们需要生产一个连续的序列号,变得比较麻烦。 这里使用了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

项目点评 ( 10 )

你可以在登录后,发表评论

9_float_left_people 9_float_left_close