我有一个分布式应用程序,可以从 Internet 上的特定服务发送和接收数据。当一个节点接收到数据时,有时它需要验证该数据是否与它或另一个节点之前发送的数据相关。该值还需要足够独特,以便我几乎可以期望在 24 小时内永远不会生成相同的值。
在当前的实现中,我一直在使用包含值 uuid.uuid1() 的自定义 header 。通过将接收到的 uuid 与 uuid.getnode() 进行比较,我可以轻松地验证该值是否来自正在运行的单个节点,但此实现是在我们要求此应用程序应该是多节点之前编写的。
我仍然认为某些 uuid 版本是正确的答案,但我似乎无法弄清楚如何验证传入的 uuid 值。
>>> received = uuid.uuid5(uuid.NAMESPACE_URL, 'http://example.org')
>>> received
UUID('c57c6902-3774-5f11-80e5-cf09f92b03ac')
有什么方法可以验证 received 是用“http://example.org”生成的吗?
- uuid 是正确的方法吗?如果不是,那是什么?
- 如果是这样,我是否应该在这里使用 uuid5?
请您参考如下方法:
如果目标纯粹是在您的节点中创建一个唯一值,难道您不能只给每个节点一个唯一的名称并将其附加到您正在生成的 uuid 上吗?
我不清楚您是否出于安全原因尝试这样做,或者您只是想要跨节点的有保证的唯一值。
