在服务结构中创建一个唯一的长有状态服务

Create a unique long in a service fabric stateful service

我有一个有状态服务结构服务,需要调用第三方 API。当它调用 API 时,它必须提供一个 long 类型的唯一 ID。在有状态服务中是否有任何方法可以获取下一个可用的 Long,而无需服务的其他实例也创建相同的 ID?

  • 如果允许重复使用且第三方资源未被同一调用者同时使用,则可以使用服务实例的哈希码。

  • 您可以使用 RandomNumberGenerator to generate 8 random bytes, and convert them into a long using BitConverter 来获得相当不错的随机 long 值。 不能保证两个随机数永远不相同。 不过,使用 8 个字节时,机会非常好。

  • 您可以创建一个 Actor 或服务来跟踪当前正在使用(或曾经使用过 - 如果需要)的长值。让它按需分配新的 long 值。