我们正在开发一个直接与 Gemfire 对话的分层 Java 应用程序。
我们需要能够生成唯一的“长”序列号,保证在应用程序的所有节点上都是唯一的。 (并非所有节点都集群)
通常我会在 Oracle 中创建一个序列,但在这种情况下,即使我们的 Gemfire 配置具有与关系数据库的连接以实现后写持久性,我们的应用程序对数据库没有其他了解。
在不访问数据库的情况下生成这些有保证的唯一长值的最佳方法是什么?
要问自己的第一个问题是,您是否真的需要一个长序列号(单调递增的长整数),还是只需要一个全局唯一标识符(如 UUID)。
性能最佳的解决方案将是全局唯一的 ID,我建议使用 GUID。
如果您需要一个全局唯一的单调递增长值(长序列),那么您将必须使用一些分布式锁定并增加该区域中的值。此方法和性能取决于您所使用的区域类型。
查看 Region.replace(K, V, V)。它可以对特定区域定义下的值执行全局原子更新。如果您当前的区域类型未充分定义,您可能需要考虑仅包含您的序列的区域。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)