内容简介:项目介绍 微服务时代,我们需要生产一个连续的友好的序列号,例如订单号等。变得比较麻烦。 这里我提供了两种业界常用的解决方案来实现这个分布式序列号生成组件。 使用集中式存储功能取步长进行分配。目前支持数...
项目介绍
微服务时代,我们需要生产一个连续的友好的序列号,例如订单号等。变得比较麻烦。
这里我提供了两种业界常用的解决方案来实现这个分布式序列号生成组件。
使用集中式存储功能取步长进行分配。目前支持数据库(Mysql)、Redis
使用雪花算法获取连续序列号,保证多服务器集群不重复
组件存在的目的就是屏蔽序列号底层实现,支持多样化的算法。让用户开箱即用。方便开发。
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
【声明】文章转载自:开源中国社区 [http://www.oschina.net]
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深入理解Nginx(第2版)
陶辉 / 机械工业出版社 / 2016-2 / 99.00元
本书致力于说明开发Nginx模块的必备知识,第1版发行以后,深受广大读者的喜爱.然而由于Ng,nx功能繁多且性能强大,以致必须了解的基本技能也很庞杂,而第1版成书匆忙,缺失了几个进阶的技巧描述,因此第2版在此基础上进行了完善。 书中首先通过介绍官方Nginx的基本用法和配置规则,帮助读者了解一般Nginx模块的用法,然后重点介绍了女口何开发HTTP模块(含HTTP过滤模块)来得到定制化的Ng......一起来看看 《深入理解Nginx(第2版)》 这本书的介绍吧!