如何从Gemfire获得独特的长度?

我们正在开发一个直接与Gemfire对话的分层Java应用程序。

我们需要能够生成唯一的“长”序列号,保证在应用程序的所有节点上都是唯一的。 (并非所有节点都是群集的)

通常我会在Oracle中创建一个序列,但在这种情况下,即使我们的Gemfire配置与关系数据库有连接以进行写后面持久性,我们的应用程序也没有其他数据库知识。

在不进入数据库的情况下,生成那些保证唯一长值的最佳方法是什么?

问自己的第一个问题是你真的需要一个长序列号(单调增加长整数)或者你只需​​要一个全局唯一标识符(如UUID)。

性能最佳的解决方案将是一个全球唯一的ID,我建议使用GUID。

如果您需要一个全局唯一的单调增加长值(长序列),那么您将不得不使用一些分布式锁定并在该区域中增加一个值。 此方法和性能取决于您使用的区域类型。

查看Region.replace(K,V,V)。 它可以对特定区域定义下的值执行全局primefaces更新。 如果当前区域类型没有充分定义,您可能需要考虑一个只包含序列的区域。