支持分库分表的分布式ID生成规则

在分布式环境中的系统,全局唯一ID生成的设计尤为重要。每个公司都会根据自身实际情况,设计出针对自身环境的唯一ID的系统。 一、MongoDB的ObjectID: 开源软件也不例外,MongoDB是一款支持分布式环境(Shard)的非关系型数据库,在分布式全局唯一ID生成的设计上有哪些值得学习的地方呢? 首先,我们看一下官方对BSON ObjectID的解释(Learn more from ObjectId):

ObjectID是一个用16进制字符表示的,总长度为12Bytes的字符串。 分别由4字节时间戳+5字节进程唯一ID+3字节的计数器,这样便保证了在分布式环境中且多个进程生成的ID是唯一的。 但是如果要以这样一个12Bytes的字符串来进行分库分表的操作,该怎样计算呢?我们完全可以按照ObjectID的设计思路,来设计...