有一个令人困惑的需求。
基本上,我需要按照以下标准创建唯一的ID:
- 9位数字,每天唯一(意味着如果该数字在第二天再次出现,则可以接受)
- 实时生成;仅使用Java(意味着不从数据库生成序列号——实际上根本不访问数据库)
- 生成该编号以填充请求ID,并且每天将生成约1,000,000个ID。
- 不能使用UUID或UID(超过9位数字)
这是我的考虑:
- 使用序列号听起来不错,但如果JVM重新启动,则可能会重新生成请求ID。
- 使用时间HHmmssSSS(小时分钟秒毫秒)有两个问题:
a.系统小时可能会被服务器管理员更改。
b.如果在同一毫秒内发出2个请求,则可能会出现问题。
有什么想法吗?