我们正在开发直接与 Gemfire 对话的分层 Java 应用程序。
我们需要能够生成唯一的“长”序列号,保证在应用程序的所有节点中都是唯一的。 (并非所有节点都集群)
通常我会在 Oracle 中创建一个序列,但在这种情况下,即使我们的 Gemfire 配置连接到关系数据库以实现持久性写入,我们的应用程序对数据库一无所知。
在不访问数据库的情况下生成那些保证唯一的 long 值的最佳方法是什么?
最佳答案
要问自己的第一个问题是您真的需要一个长序列号(单调递增的长整数)还是只需要一个全局唯一标识符(如 UUID)。
最高效的解决方案将是一个全局唯一的 ID,我只建议使用 GUID。
如果您需要一个全局唯一的单调递增的长值(长序列),那么您将不得不使用一些分布式锁定并在该区域中递增一个值。此方法和性能取决于您使用的区域类型。
查看 Region.replace(K, V, V)。它可以对特定区域定义下的值执行全局原子更新。如果您当前的区域类型定义不充分,您可能需要考虑一个只有您的序列的区域。
关于java - 我怎样才能从 Gemfire 获得独特的长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28198508/