com.wjk.kylin
kylin-id-spring-boot-starter
1.0.0
kylin:
id:
server: localhost:9988
read-timeout: 60
write-timeout: 60
connect-timeout: 60
kid:
enable: true
token: 110
load-id-threshold: 0.7
uid:
enable: true
biz-type: kylin_id_example
epoch-str: 2022-09-10
time-bits: 31
worker-bits: 22
seq-bits: 10
cached-uid-generator:
boost-power: 3
padding-factor: 50
CREATE TABLE `kylin_id_info` (
`id` bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`biz_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '业务类型,唯一',
`max_id` bigint(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '当前最大id',
`step` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '步长,值越大,服务端缓存就会越多',
`delta` int(0) UNSIGNED NOT NULL DEFAULT 1 COMMENT '每次id增量,增长量',
`version` bigint(0) UNSIGNED NOT NULL DEFAULT 1 COMMENT '版本号',
`create_time` datetime(0) NOT NULL DEFAULT '2022-01-01 00:00:00' COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uniq_biz_type`(`biz_type`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'id信息表' ROW_FORMAT = Dynamic;
CREATE TABLE `kylin_id_token` (
`id` bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增id',
`token` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT 'token,用于安全校验用,建议用不同的token来验证区分',
`biz_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '此token可访问的业务类型标识',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '备注',
`create_time` datetime(0) NOT NULL DEFAULT '2022-01-01 00:00:00' COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uniq_token_biz_type`(`token`, `biz_type`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'token信息表' ROW_FORMAT = Dynamic;
uid表结构根据选择模式创建表就可以
CREATE TABLE `worker_node` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'auto increment id',
`host_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'host name',
`port` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'port',
`type` int NOT NULL COMMENT 'node type: ACTUAL or CONTAINER',
`launch_date` date NOT NULL COMMENT 'launch date',
`modified` datetime NOT NULL COMMENT 'modified time',
`created` datetime NOT NULL COMMENT 'created time',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='DB WorkerID Assigner for UID Generator';
CREATE TABLE `kylin_uid_info` (
`id` bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`biz_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '业务类型,唯一',
`worker_id` bigint(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '工作id',
`version` bigint(0) UNSIGNED NOT NULL DEFAULT 1 COMMENT '版本号',
`create_time` datetime(0) NOT NULL DEFAULT '2022-01-01 00:00:00' COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uniq_biz_type`(`biz_type`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'id信息表' ROW_FORMAT = Dynamic;
@GetMapping("/nextId")
public Long getId(@RequestParam("bizType") String bizType) {
return IdUtil.nextId(bizType);
}
@GetMapping("/nextIdBatchSize")
public Long getIdBatchSize(@RequestParam("bizType") String bizType, @RequestParam("batchSize") Integer batchSize) {
List idList = IdUtil.nextId(bizType, batchSize);
for (Long id : idList) {
log.info("{}", id);
}
return 0L;
}
@Autowired
@Qualifier("cachedUidGenerator")
private UidGenerator uidGenerator;
@GetMapping("/uid")
public Long getUId(@RequestParam("batchSize") Integer batchSize) {
for (int i = 0; i < batchSize; i++) {
log.info("{}", uidGenerator.getUID());
}
return 0L;
}
页面更新:2024-03-13
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号