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

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

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

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

最佳答案

要问自己的第一个问题是,您真的需要一个长序列号(单调递增的长整数),还是只需要一个全局唯一的标识符(如UUID)。

性能最高的解决方案将是全局唯一ID,我只建议使用GUID。

如果需要全局唯一的单调递增长值(长序列),则必须使用一些分布式锁定并在区域中递增值。此方法和性能取决于您使用的区域类型。

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

关于java - 我如何从Gemfire获得独特的长线?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28198508/

10-09 04:09