代码拉取完成,页面将自动刷新
同步操作将从 power4j/sequence 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
使用场景
JDK 版本要求: JDK8+
支持的后端
9.6 +
)SeqPool
): 一种设施,可以提供有限或者无限的序号。SeqSynchronizer
): 负责与某种后端(如数据库)交互,更新序号的当前值。SeqHolder
): 负责缓存从后端批量取出的序号,然后交给本地的号池来管理。Partition
): 后端存储在保存序号信息时,序号的名称+分区表示一条唯一的记录,分区可以是静态的(一个字符串常量),也可以是动态分区(一个返回分区名称的函数)。分区并不是将序号的取值进行划分,主要是用于多租户等需要二次分类的场景以及避免号池耗尽。SeqFormatter
): 自定义格式输出的扩展接口.注意事项:
Long.MAX
个序号可用。引入依赖
<dependency>
<groupId>com.power4j.kit</groupId>
<artifactId>sequence-spring-boot-starter</artifactId>
<version>最新版本</version>
</dependency>
开启配置(JDBC)
power4j:
sequence:
# 数据同步使用的后端支持(如: mysql,oracle,redis),跟你实际使用的数据源类型对应
backend: mysql
也可以使用Redis,则配置方式为
power4j:
sequence:
backend: redis
lettuce-uri: "redis://127.0.0.1"
maven
依赖等详细配置请查看examples
目录下的演示项目
使用
@RestController
@SpringBootApplication
public class SequenceExampleApplication {
@Autowired
private Sequence<Long> sequence;
public static void main(String[] args) {
SpringApplication.run(SequenceExampleApplication.class, args);
}
@GetMapping("/seq")
public List<String> getSequence(@RequestParam(required = false) Integer size) {
size = (size == null || size <= 0) ? 10 : size;
List<String> list = new ArrayList<>(size);
for (int i = 0; i < size; ++i) {
list.add(sequence.nextStr());
}
return list;
}
}
例子: SeqConfig.java
测试环境用的Redis,MySQL等外部服务都是默认安装,没有调整参数。
如果需要自己测试,已经为你写好测试脚本,见run-bench.sh
1.0
)1.3
)1.5
MySQL兼容模式)1.1
)1.2
)1.0
)代码要求:
MySqlSynchronizer
的实现方式,实现某个特定数据库后端的支持MySqlSynchronizerTest
编写单元测试,完成自测。如果你的代码能跑通测试,基本上应该没有严重bug此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。