gpt4 book ai didi

java - 随机生成的 UUID 有重复项

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:00:29 28 4
gpt4 key购买 nike

我正在使用下面的函数生成 UUID

UUID.randomUUID().toString()

在生产环境中,我们有 50 多台服务器(应用服务器——每台服务器都是一个独立的 JVM),对于到达这些服务器的请求,作为第一步,我们生成一个 UUID,它本质上是唯一标识事务的。

我们观察到,在服务器 6 和服务器 11 中,生成的 UUID 每天至少匹配 10 到 15 条消息,这很奇怪,因为给定负载,即每天大约 100 万个事务,这些 UUID 在内部重复同一天很奇怪。

这是我们目前所做的

  1. 验证了应用程序日志 - 我们没有发现任何可疑的东西,所有日志都正常
  2. 尝试在具有类似生产负载和 50 多台服务器的测试环境中复制此问题 - 但这在测试环境中没有发生
  3. 检查了应用程序逻辑 - 这似乎不是问题,因为除了具有相同代码库副本的 6 和 11 之外,所有其他 48 台服务器都运行良好,并且它们为每个事务生成唯一的 UUID。<

到目前为止我们还无法追踪到问题,我的问题基本上是我们是否缺少 JVM 级别的某些内容,或者我们需要为此类问题设置 UUID 参数?

最佳答案

给定时间,我相信您会找到罪魁祸首。其间,有个评论我认为值得提升回答:

您正在多个位置生成伪随机 UUID。如果您没有发现其他错误,请考虑在一个位置生成所有伪随机 UUID,或者生成真正的随机 UUID

所以创建一个UUID服务器。它只是一个生成 UUID block 的过程。每个 block 可能包含 10,000 个(或任何合适的)UUID。在进程验证 block 不包含重复项后,进程将每个 block 写入磁盘。

创建另一个进程来分发 UUID block 。也许它只是一个 Web 服务,在收到请求时返回一个未使用的 block 。交易服务器发出一个 block 请求,然后在创建交易时使用这些 UUID。当服务器使用了大部分分配给它的 UUID 时,它会请求另一个 block 。

关于java - 随机生成的 UUID 有重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27971464/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com