项目介绍微服务时代,我们需要生产一个连续的友好的序列号,例如订单号等。变得比较麻烦。 这里我提供了两种业界常用的解决方案来实现这个分布式序列号生成组件。
组件存在的目的就是屏蔽序列号底层实现,支持多样化的算法。让用户开箱即用。方便开发。 Maven支持<dependency> <groupId>com.xuanner</groupId> <artifactId>xsequence-core</artifactId> <version>1.6</version> </dependency> 升级说明v1.6 简单使用//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主页地址 |