首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >唯一ID的缓存解决方案

唯一ID的缓存解决方案
EN

Stack Overflow用户
提问于 2020-03-26 21:02:01
回答 1查看 363关注 0票数 0

我们希望为应用程序中使用的唯一in构建一个分布式缓存,以标识每个事务。唯一ID是使用java代码中的一些自定义逻辑(比如日期+某个随机数)生成的。

应用程序在8个应用程序服务器上运行(负载平衡)。一旦应用程序使用了唯一ID,则需要使用之前使用的值更新缓存。因此,缓存对象更新应该在多线程环境中完成。

在每个应用程序服务器中保留本地缓存(特定于每个节点的唯一ID生成序列)是否更好?但这并不能保证应用程序中的事务ID序列。

我们一直在寻找hazlecast、geode、ignite等选项,以构建分布式缓存(点对点缓存).But,当多线程环境中存在缓存更新时,可以很好地工作。

哪种缓存解决方案/模型最适合这个问题。

EN

回答 1

Stack Overflow用户

发布于 2020-03-27 00:00:26

不需要缓存

您不需要为您的问题提供缓存解决方案。

您可以生成通用唯一的标识符,而无需在系统之间进行任何协调。

UUID

一个合适的解决方案已经被发明、标准化、实现并被广泛采用:UUID

版本1的UUID表示空间和时间上的一个点,将当前时刻与机器的MAC address一起获取,并添加一个任意数字,该数字在主机时钟重置时递增,当UUID生成器重新启动时递增。

所有这些数据都以128位的值表示,并指定哪些位表示哪些数据段。向人类显示文本的规范格式使用由连字符分隔的十六进制字符。

示例:

1154cf8a-6f7b-11ea-bc55-0242ac130003

您要求的是:

自定义逻辑(比方说日期+一些随机数)

如上所述,一些版本的UUID包含的就是这样,一个日期-时间加上一个任意数字加上其他信息。听起来你的团队正在不明智地重新发明轮子。

UUID在IT行业中被广泛使用。您将在您的电子邮件标题中找到它们,以标识每封邮件。您会发现它们是事务ID。您会发现它们是对象ID。

UUID生成器的实现几乎内置于所有操作系统(macOS、Linux、BSD、Windows等)中。库是公开可用的,比如OSSP uuid。更强大的数据库,如Postgres,支持UUID作为原生数据类型,以实现高效的存储和易用性。一些软件平台,如Java,包括用于UUID的数据类型和生成器实现。

UUID的目的是各种软件系统可以自己动态地生成UUID值,而不需要中央授权机构,不需要分布式缓存,也不需要与其他系统协调。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60867896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档