java - 我怎样才能从 Gemfire 获得独特的长?

标签 java gemfire

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

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

通常我会在 Oracle 中创建一个序列,但在这种情况下,即使我们的 Gemfire 配置连接到关系数据库以实现持久性写入,我们的应用程序对数据库一无所知。

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

最佳答案

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

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

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

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

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

相关文章:

java - Spark-ClassNotFoundException:org.eclipse.jetty.server.bio.SocketConnector

java - Spring Data Gemfire 配置没有连接到定位器?

java - GemFire 缓存客户端可以在服务器上创建区域吗?

Java/ImageIO 在读取整个文件之前验证格式?

java - Android Studio : App doesn't start with implemented Anonymous Java Class

java - Android 中的自定义最大 asyncTasks

java - 使用 Swing 将 Jpanels 正确添加到 BoxLayout 时遇到问题

java - 如何使用 Redis 适配器写入 Geode,然后使用 Geode 客户端读取/响应事件?

java - 为什么unix和Java运行时显示的统计数据存在差异