基于HttpServlet请求生成全局(应用程序范围)唯一请求id的算法



我在基于HttpServlet请求生成全局唯一请求id时遇到问题。我需要确保生成的id在应用程序范围内是唯一的。Java UUID Or Random不能保证我想要什么,尽管重复的机会很低。

有人有什么想法吗?谢谢,

Random肯定不能保证唯一性,但UUID肯定能保证唯一性。所以你的担心毫无意义。即使你的硬件能够每秒处理十亿个HTTP请求,你也只有在100年后才能达到50%的复制几率。

如果您在这方面真的很难理解,只需检查同步块中应用程序范围是否已经包含这样的键,如果已经包含,则只生成另一个键。等等。这样你甚至可以使用Random

另请参阅:

  • UUID的唯一性如何

如果你必须绝对确保你不会重复,你可以使用自动递增的数据库id,但考虑到使用UUID重复的可能性非常低,我认为这不足以证明成本合理。