【发布时间】:2015-02-23 11:24:08
【问题描述】:
我需要帮助了解如何解决为批量生产的产品生成唯一序列号或 UID 的问题。
我将批量生产产品,截至目前,我认为我将生产 >50000 件产品。当这些单元制造完成并准备就绪后,我必须在发货前对其进行测试,届时我还想为每个单元分配一个唯一 ID。
我正在考虑编写一个应用程序来生成一个128 位唯一数字生成器应用程序,并要求测试人员在他们的夹具上运行它,生成一个 ID,分配 ID,然后进行测试。
但我的问题是,请看下面的插图,如果我的同一个应用程序运行在 3 个(或更多)不同的夹具上同时并行,我如何确保这些系统生成的数字永远不会彼此相等?
我如何以编程方式确保 Unique Serial #1 != Unique Serial #2 != Unique Serial #3?
如果他们有任何机会平等,一旦他们出去,我将很难追踪他们。
有一些硬件方法,例如使用 Atmel 或 Maxim 的 UID 芯片/EEPROM,但它们会增加成本。我希望在软件层面解决这个问题,并将硬件方法作为最后的手段。
我发现测试夹具能够运行 C# 或 Python 应用程序。
请帮忙!
【问题讨论】:
-
想法 A:让每台机器上的程序将 UID 插入全局 UID 数据库,并在生成新 UID 时检查该数据库?
-
无论您使用什么公式,请确保在每批中为三个夹具允许足够的唯一 ID,如果您开始进一步生产,请再次执行相同操作
-
想法 B:在每个生成的 UID 前面/附加生成器机器自己的唯一序列号?
-
twitter 已经为他们的目的解决了这个问题:github.com/twitter/snowflake
-
围绕这些序列号是否还有其他特定要求。例如,必须具有维护生成和分配它们的顺序等属性。下面的答案中已经建议的 GUID 是否符合您的需求?
标签: c# python uniqueidentifier unique-key