xsequence 1.4 发布,分布式序列号生成组件

栏目: 软件资讯 · 发布时间: 7年前

内容简介:项目介绍 微服务时代,我们需要生产一个连续的友好的序列号,例如订单号等。变得比较麻烦。 这里我提供了两种业界常用的解决方案来实现这个分布式序列号生成组件。 使用集中式存储功能取步长进行分配。目前支持数...

项目介绍

微服务时代,我们需要生产一个连续的友好的序列号,例如订单号等。变得比较麻烦。

这里我提供了两种业界常用的解决方案来实现这个分布式序列号生成组件。

  1. 使用集中式存储功能取步长进行分配。目前支持数据库(Mysql)、Redis

  2. 使用雪花算法获取连续序列号,保证多服务器集群不重复

组件存在的目的就是屏蔽序列号底层实现,支持多样化的算法。让用户开箱即用。方便开发。

Maven支持

<dependency>
    <groupId>com.xuanner</groupId>
    <artifactId>xsequence-core</artifactId>
    <version>1.4</version>
</dependency>

升级说明

v1.4

感谢一些网友给我留言,jar无法下载的问题,后来发现是我上传的有问题。目前1.4可以正常下载使用了。而且如果想自己修改一些源码编译,现在也可以下载源码install到本地仓库了。

再次感谢:

@开源中国首席技术官 

@郑勇

还有给我提Issues的@穹奇


简单使用

(1)使用DB获取区间方式

public class DbTest_Api extends BaseTest { private Sequence sequence; @Before public void setup() { //数据源 DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl("xxx");
        dataSource.setUsername("xxx");
        dataSource.setPassword("xxx");
        dataSource.setMaxActive(300);
        dataSource.setMinIdle(50);
        dataSource.setInitialSize(2);
        dataSource.setMaxWait(500); /**
         * 参数说明如下:
         * dataSource:数据库的数据源
         * bizName:具体某中业务的序列号
         * step:[可选] 默认1000,即每次取 redis 获取步长值,根据具体业务吞吐量来设置,越大性能越好,但是序列号断层的风险也就越大
         */ sequence = DbSeqBuilder.create().dataSource(dataSource).bizName("userId").build();
    } @Test public void test() {
        long start = System.currentTimeMillis(); for (int i = 0; i < 100; i++) { System.out.println("++++++++++id:" + sequence.nextValue());
        } System.out.println("interval time:" + (System.currentTimeMillis() - start));
    }
}

(2)使用Redis获取区间方式

/** * 参数说明如下: * ip:redis连接ip * port:redis连接port * auth:如果redis设置了密码权限需要设置,没有就可以不用设置 * bizName:具体某中业务的序列号 * step:[可选] 默认1000,即每次取redis获取步长值,根据具体业务吞吐量来设置,越大性能越好,但是序列号断层的风险也就越大 */
sequence = RedisSeqBuilder.create().ip("xxx").port(6379).auth("xxx").step(1000).bizName( "userId").build();

(3)使用雪花算法方式

 /** * 参数说明如下: * datacenterId: 一般可以设置机房标志,值只能设置[0-31]之间 * workerId: 一般设置主机编号,值只能设置[0-31]之间 * 只用这来那个值保证服务器唯一就可以 */
sequence = SnowflakeSeqBuilder.create().datacenterId(1).workerId(2).build();

GIT主页地址

https://gitee.com/xuan698400/xsequence


【声明】文章转载自:开源中国社区 [http://www.oschina.net]


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入理解计算机系统(英文版·第2版)

深入理解计算机系统(英文版·第2版)

[美] Randal E. Bryant、[美] David R. O'Hallaron / 机械工业出版社 / 2011-1 / 128.00元

本书是一本将计算机软件和硬件理论结合讲述的经典教程,内容覆盖计算机导论、体系结构和处理器设计等多门课程。本书的最大优点是为程序员描述计算机系统的实现细节,通过描述程序是如何映射到系统上,以及程序是如何执行的,使读者更好地理解程序的行为为什么是这样的,以及造成效率低下的原因。 相对于第1版,本版主要是反映了过去十年间硬件技术和编译器的变化,具体更新如下: 1. 对系统的介绍(特别是实际使......一起来看看 《深入理解计算机系统(英文版·第2版)》 这本书的介绍吧!

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具