From a973892d6c7c8db4a0497a2255e679106edca60b Mon Sep 17 00:00:00 2001 From: "www.byteblogs.com" <598092184@qq.com> Date: Thu, 4 May 2023 22:30:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=201.2.0=201.=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=88=86=E5=B8=83=E5=BC=8Fid=E7=94=9F=E6=88=90=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/enums/IdGeneratorMode.java | 24 ++++++++++++++++ .../server/support/generator/IdGenerator.java | 28 +++++++++++++++++++ .../generator/id/SegmentIdGenerator.java | 26 +++++++++++++++++ .../generator/id/SnowflakeIdGenerator.java | 26 +++++++++++++++++ 4 files changed, 104 insertions(+) create mode 100644 easy-retry-common/easy-retry-common-core/src/main/java/com/aizuda/easy/retry/common/core/enums/IdGeneratorMode.java create mode 100644 easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/IdGenerator.java create mode 100644 easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/id/SegmentIdGenerator.java create mode 100644 easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/id/SnowflakeIdGenerator.java diff --git a/easy-retry-common/easy-retry-common-core/src/main/java/com/aizuda/easy/retry/common/core/enums/IdGeneratorMode.java b/easy-retry-common/easy-retry-common-core/src/main/java/com/aizuda/easy/retry/common/core/enums/IdGeneratorMode.java new file mode 100644 index 000000000..0df915f45 --- /dev/null +++ b/easy-retry-common/easy-retry-common-core/src/main/java/com/aizuda/easy/retry/common/core/enums/IdGeneratorMode.java @@ -0,0 +1,24 @@ +package com.aizuda.easy.retry.common.core.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * id生成模式 + * + * @author www.byteblogs.com + * @date 2023-05-04 + * @since 2.0 + */ +@AllArgsConstructor +@Getter +public enum IdGeneratorMode { + + SNOWFLAKE(1, "雪花算法模式"), + SEGMENT(2,"号段模式"); + + private final int mode; + + private final String desc; + +} diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/IdGenerator.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/IdGenerator.java new file mode 100644 index 000000000..8f63f04fa --- /dev/null +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/IdGenerator.java @@ -0,0 +1,28 @@ +package com.aizuda.easy.retry.server.support.generator; + +/** + * 分布式Id生成器 + * + * @author www.byteblogs.com + * @date 2023-05-04 + * @since 2.0 + */ +public interface IdGenerator { + + /** + * 获取匹配的模式 + * + * @param mode 1. 雪花算法(默认算法) 2.号段模式 + * @return + */ + boolean supports(int mode); + + /** + * 获取分布式id + * + * @param group 组 + * @return id + */ + String idGenerator(String group); + +} diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/id/SegmentIdGenerator.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/id/SegmentIdGenerator.java new file mode 100644 index 000000000..ab6f909cc --- /dev/null +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/id/SegmentIdGenerator.java @@ -0,0 +1,26 @@ +package com.aizuda.easy.retry.server.support.generator.id; + +import com.aizuda.easy.retry.common.core.enums.IdGeneratorMode; +import com.aizuda.easy.retry.server.support.generator.IdGenerator; +import org.springframework.stereotype.Component; + +/** + * 号段模式 + * + * @author www.byteblogs.com + * @date 2023-05-04 + * @since 2.0 + */ +@Component +public class SegmentIdGenerator implements IdGenerator { + + @Override + public boolean supports(int mode) { + return IdGeneratorMode.SEGMENT.getMode() == mode; + } + + @Override + public String idGenerator(String group) { + return null; + } +} diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/id/SnowflakeIdGenerator.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/id/SnowflakeIdGenerator.java new file mode 100644 index 000000000..32e498f78 --- /dev/null +++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/id/SnowflakeIdGenerator.java @@ -0,0 +1,26 @@ +package com.aizuda.easy.retry.server.support.generator.id; + +import com.aizuda.easy.retry.common.core.enums.IdGeneratorMode; +import com.aizuda.easy.retry.server.support.generator.IdGenerator; +import org.springframework.stereotype.Component; + +/** + * 雪花算法 + * + * @author www.byteblogs.com + * @date 2023-05-04 + * @since 2.0 + */ +@Component +public class SnowflakeIdGenerator implements IdGenerator { + + @Override + public boolean supports(int mode) { + return IdGeneratorMode.SNOWFLAKE.getMode() == mode; + } + + @Override + public String idGenerator(String group) { + return null; + } +}