雪花算法的唯一性,在单个节点中是可以保证的,对应kubernetes中的应用,如果是横向扩展后,进行多副本的情况下,可能出现重复的ID,这需要我们按着pod_name进行一个workId的生成,我还是建议通过不引入第三方组件和网络请求的前提下解决这个问题,所以我修改了kubernetes的yaml文件。

  • k8s的yaml配置
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-image:latest
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name # 获取当前 Pod 的名称
  • 字符串(0~1024)数字方法,通过掩码的方式
public static int stringToNumber(String input) {
// 使用CRC32计算字符串的哈希值
CRC32 crc = new CRC32();
byte[] bytes = input.getBytes(StandardCharsets.UTF_8);
crc.update(bytes); // 获取哈希值并限制在0到1023之间
long hashValue = crc.getValue();
return (int) (hashValue % 1024);
}
  • ID生成器的改进
@Slf4j
public class IdUtils { static SnowFlakeGenerator snowFlakeGenerator; public static String generateId() {
if (snowFlakeGenerator == null) {
long podNameCode = stringToNumber(Optional.ofNullable(System.getenv("POD_NAME")).orElse("1"));
log.debug("podNameCode:{}", podNameCode);
snowFlakeGenerator = new SnowFlakeGenerator(podNameCode); }
return snowFlakeGenerator.hexNextId();
}

springboot~多节点应用里的雪花算法唯一性的更多相关文章

  1. 分布式系统-主键唯一id,订单编号生成-雪花算法-SnowFlake

    分布式系统下 我们每台设备(分布式系统-独立的应用空间-或者docker环境) * SnowFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作 ...

  2. 雪花算法(snowflake)delphi版

    雪花算法简单描述: + 最高位是符号位,始终为0,不可用. + 41位的时间序列,精确到毫秒级,41位的长度可以使用69年.时间位还有一个很重要的作用是可以根据时间进行排序. + 10位的机器标识,1 ...

  3. 第2-2-4章 常见组件与中台化-常用组件服务介绍-分布式ID-附Snowflake雪花算法的代码实现

    目录 2.3 分布式ID 2.3.1 功能概述 2.3.2 应用场景 2.3.3 使用说明 2.3.4 项目截图 2.3.5 Snowflake雪花算法的代码实现 2.3 分布式ID 2.3.1 功能 ...

  4. 图的生成树(森林)(克鲁斯卡尔Kruskal算法和普里姆Prim算法)、以及并查集的使用

    图的连通性问题:无向图的连通分量和生成树,所有顶点均由边连接在一起,但不存在回路的图. 设图 G=(V, E) 是个连通图,当从图任一顶点出发遍历图G 时,将边集 E(G) 分成两个集合 T(G) 和 ...

  5. ID 生成器 雪花算法

    https://blog.csdn.net/wangming520liwei/article/details/80843248 ID 生成器 雪花算法 2018年06月28日 14:58:43 wan ...

  6. 分布式Snowflake雪花算法

    前言 项目中主键ID生成方式比较多,但是哪种方式更能提高的我们的工作效率.项目质量.代码实用性以及健壮性呢,下面作了一下比较,目前雪花算法的优点还是很明显的. 优缺点比较 UUID(缺点:太长.没法排 ...

  7. 一个类似 Twitter 雪花算法 的 连续序号 ID 产生器 SeqIDGenerator

    项目地址 :     https://github.com/kelin-xycs/SeqIDGenerator 今天 QQ 群 里有网友问起产生唯一 ID 的方法 有哪些,  讨论了各种方法 . 有网 ...

  8. Twitter雪花算法 SnowFlake算法 的java实现

    概述 SnowFlake算法是Twitter设计的一个可以在分布式系统中生成唯一的ID的算法,它可以满足Twitter每秒上万条消息ID分配的请求,这些消息ID是唯一的且有大致的递增顺序. 原理 Sn ...

  9. .Net Core ORM选择之路,哪个才适合你 通用查询类封装之Mongodb篇 Snowflake(雪花算法)的JavaScript实现 【开发记录】如何在B/S项目中使用中国天气的实时天气功能 【开发记录】微信小游戏开发入门——俄罗斯方块

    .Net Core ORM选择之路,哪个才适合你   因为老板的一句话公司项目需要迁移到.Net Core ,但是以前同事用的ORM不支持.Net Core 开发过程也遇到了各种坑,插入条数多了也特别 ...

  10. 雪花算法-snowflake

    雪花算法-snowflake 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的. 有 ...

随机推荐

  1. Runtime类的简单应用

    1.描述 Runtime:描述运行时状态. 在整个JVM中,Runtime类是唯一一个与JVM运行状态有关的类,且默认提供一个该类的实例化对象. 由于在每一个JVM进程中只允许提供一个Runtime类 ...

  2. 适用于 .NET 稳定的官方OpenAI库

    前言 今天给大家分享一个由 OpenAI 官方提供,旨在为 .NET 开发者提供方便的接口来访问 OpenAI 的 REST API.这个项目通过 NuGet 包的形式发布,使得 .NET 应用程序能 ...

  3. Windows安全中心在手动删除威胁文件后无法处理,一直显示有威胁

    从网络上找到了一个简单靠谱的解决方案,与众位分享: 找到C:\ProgramData\Microsoft\Windows Defender\Scans\History\Service\Detectio ...

  4. Machine Learning Week_6 Adjust the Model.

    目录 0 Advice for Applying Machine Learning 1 Evaluating a Learning Algorithm 1.1 Deciding What to Try ...

  5. npoi2.3+泛型+反射 根据配置统一解析excel数据到实体的基础方法

    解析方法: /// <summary> /// excel数据解析到实体 /// </summary> /// <typeparam name="T" ...

  6. 一文彻底弄懂JUC工具包的CountDownLatch的设计理念与底层原理

    CountDownLatch 是 Java 并发包(java.util.concurrent)中的一个同步辅助类,它允许一个或多个线程等待一组操作完成. 一.设计理念 CountDownLatch 是 ...

  7. byte,关于127+1等于多少

    public class Main { public static void main(String[] args) { Integer i1 = 100; Integer i2 = 100; Int ...

  8. vue-amap接入高德地图示例

    通过 CDN 的方式我们可以很容易地使用 vue-amap 写出一个 Hello world 页面. 什么是CDN? 定义是这样的:CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通 ...

  9. Solon(Spring 的替代方案)最近半年下载量突破 1200万!

    不断突破 2023年04月,单月破100万(Maven 中央仓库单月下载量) 2023年06月,单月破200万 2023年11月,单月破250万 2024年11月,最近半年下载量突破 1200万 So ...

  10. 曾经做的一个JS小游戏——《Battle City》

    今天改网盘密码时,找到了个很久前的东西:JavaScript版的坦克大战.07年的夏天制作花了好多个夜晚制作,那段着迷JS游戏的疯狂时光.但因为后来众多浏览器的出现,导致了游戏兼容性大大的下降,最终放 ...