面试题:在分布式系统,你能想出来几种生成唯一ID的方案?(19)
7. MongoDB的ObjectId
MongoDB的ObjectId和snowflake算法类似 。 它设计成轻量型的 , 不同的机器都能用全局唯一的同种方法方便地生成它 。 MongoDB 从一开始就设计用来作为分布式数据库 , 处理多个节点是一个核心要求 。 使其在分片环境中要容易生成得多 。
其格式如下:
前4 个字节是从标准纪元开始的时间戳 , 单位为秒 。 时间戳 , 与随后的5 个字节组合起来 , 提供了秒级别的唯一性 。 由于时间戳在前 , 这意味着ObjectId 大致会按照插入的顺序排列 。 这对于某些方面很有用 , 如将其作为索引提高效率 。 这4 个字节也隐含了文档创建的时间 。 绝大多数客户端类库都会公开一个方法从ObjectId 获取这个信息 。
接下来的3 字节是所在主机的唯一标识符 。 通常是机器主机名的散列值 。 这样就可以确保不同主机生成不同的ObjectId , 不产生冲突 。
推荐阅读
- 梦幻西游|梦幻西游:客户端检测可能存在木马要怎么办,需要重装系统吗?
- 梦幻西游|梦幻西游:系统就是这么设定的,为什么抢了财神的摇钱箱会被勾魂
- edg战队|梦幻西游:玩家从建号到100级一直踩雷,是系统针对还是巧合?
- 明日方舟|明日方舟是否有必要实装扫荡系统 博士:退一步实装连战系统也好
- 苏菲的炼金工房2|《苏菲的炼金工房2》新角色和游戏系统情报
- 和平精英|“吃鸡”迎颠覆级更新,光子上线“迷雾系统”,S1玩家拍手称快!
- 流氓公司第4赛epic包|第五人格:据说官方已制作人脸识别系统,漏网之鱼要夜不能寐了
- 王者荣耀|王者荣耀专精系统收获差评,答疑回应平衡问题
- 地下城与勇士|DNF:竞拍系统二次更新!神话转换券常驻,奥兹玛3牛团复兴
- 人脸识别|接入人脸识别认证,网易游戏再次优化防沉迷系统