这与"在云端"无关,而是一般的分布式计算问题.
您的问题中没有足够的信息来完全理解您的要求,但我收集的是您需要为请求部件号的服务的消费者分配唯一的号码.
首先想到的是GUID是一个数字(128位长).您是否只需在分配零件号时生成GUID?如果需要,你可以将GUID哈希到一个unsigned long(City Hash是我最喜欢的那种应用程序的64位哈希),除非你处理数十亿个部件号,否则哈希冲突风险非常小. .如果您觉得想要哈希到32位数字,请看看生日问题.散列冲突将比你想象的只有32位更频繁.
如果必须分配序号,则必须在处理中引入序列化点.您将需要一些服务(可以是数据库表上的标识列)来计算单个部件号请求并分配下一个更大的数字.
如果您通常需要较小的数字,但它们不一定必须是顺序的,您可以允许可能处理此类请求的每个服务器管理它自己的数字范围(例如,给定的服务器可以"检出"1000个部件号的块从中央服务中分配它们直到它们用完为止,然后"检出"一个新的数字块).这并不能保证当前分配的所有数字都是顺序的,因为多个服务器可以以不同的速率分配数字.此外,如果您没有正确管理应用程序崩溃,您可以"丢失"已签出但未完全分配的数字块的一部分.
归档时间: |
|
查看次数: |
1163 次 |
最近记录: |