MongoDB ObjectId

573 阅读1分钟

不用刻意记录ObjectId是如何构成的, 但是要理解它是如何产生的.

ObjectId需要确保分布式环境下产生的ID是唯一的。

两点:

  1. 分布式
  2. 唯一

简单的讲, 分布式就是指不同的进程;唯一就是能够随机产生大量的key, 使得不重复。

所以objectId的生成规则是:

时间戳 + 机器编号 + 进程号 + 计数器

这样就保证在同一时刻,有很多可用的Id。

在分布式系统中往往需要唯一ID, 生成的方式一般有两种:

  1. 依赖一个第三方的ID生成服务, 比如使用 redis, 通过自增一个值 来实现
  2. 每一个分布式系统中的节点依据某一种生成规则生成一个ID, 这个ID就是分布式ID

参考:

github.com/qianjiahao/…