不用刻意记录ObjectId是如何构成的, 但是要理解它是如何产生的.
ObjectId需要确保分布式环境下产生的ID是唯一的。
两点:
- 分布式
- 唯一
简单的讲, 分布式就是指不同的进程;唯一就是能够随机产生大量的key, 使得不重复。
所以objectId的生成规则是:
时间戳 + 机器编号 + 进程号 + 计数器
这样就保证在同一时刻,有很多可用的Id。
在分布式系统中往往需要唯一ID, 生成的方式一般有两种:
- 依赖一个第三方的ID生成服务, 比如使用 redis, 通过自增一个值 来实现
- 每一个分布式系统中的节点依据某一种生成规则生成一个ID, 这个ID就是分布式ID
参考: