设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 软件追踪 查看内容

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

2018-7-2 22:54| 发布者: joejoe0332| 查看: 437| 评论: 0|原作者: oschina|来自: oschina

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

项目介绍

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

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

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

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

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

Maven支持

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

升级说明

v1.6
支持指定起始位置,例如需要60000起,那么就设置stepStart=60000,那么序列号就会从60000开始分配

简单使用

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

    //db方式获取
    protected Sequence getDbSequence() {
        //数据源
        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获取步长值,根据具体业务吞吐量来设置,越大性能越好,但是序列号断层的风险也就越大
         */
        return DbSeqBuilder.create().dataSource(dataSource).step(1000).stepStart(1000000).bizName("test3").build();
    }

GIT主页地址

https://gitee.com/xuan698400/xsequence


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部