dee*_*esh 10 java random uuid production jvm
我正在使用以下函数来生成UUID
UUID.randomUUID().toString()
Run Code Online (Sandbox Code Playgroud)
在Prod中,我们基本上有50多个服务器(应用程序服务器 - 每个服务器本身都是一个JVM),并且对于这些服务器中的请求,作为第一步,我们生成一个基本上唯一标识事务的UUID.
我们观察到的是,在服务器6和服务器11中,生成的UUID至少匹配每天10到15条消息,这很奇怪,因为考虑到负载,即每天约100万txns,这个UUID在同一天内重复是很奇怪.
这就是我们到目前为止所做的1)验证了应用程序日志 - 没有找到任何可疑的东西,所有日志都正常2)尝试在生产中使用类似的负载和50多台服务器在测试环境中复制此问题 - 但这没有发生在测试环境中3)检查应用程序逻辑 - 这似乎不是问题,因为除了6和11之外的所有其他48个服务器都具有相同代码库的副本,它们工作得非常好,并且它们每个txn生成唯一的UUID.
到目前为止,我们还没有能够追踪这个问题,我的问题基本上是在JVM级别有什么东西我们缺少或者我们需要为这一个问题设置的UUID参数?
请指教.
谢谢,Deepesh
给定时间,我相信你会找到罪魁祸首。与此同时,有一条评论我认为值得提升回答:
您正在多个位置生成伪随机 UUID。如果您没有发现其他错误,请考虑在一个位置生成所有伪随机 UUID,或者生成真正的随机 UUID
所以创建一个UUID服务器。这只是一个生成 UUID 块的过程。每个块可能包含 10,000 个(或任何合适的)UUID。在进程验证块不包含重复项后,进程将每个块写入磁盘。
创建另一个进程来分发 UUID 块。也许它只是一个 Web 服务,它在收到请求时返回一个未使用的块。交易服务器发出一个区块请求,然后在创建交易时使用这些 UUID。当服务器使用了大部分分配的 UUID 时,它会请求另一个块。
| 归档时间: |
|
| 查看次数: |
2835 次 |
| 最近记录: |