如何生成分布式系统全局唯一ID

方案有很多,包括但不限于以下几种

UUID

Redis

利用 INCR 命令,INCR 命令是一个原子操作,Redis 又是单线程

MongoDB

利用 ObjectId,ObjectId 由 4 部分组成(时间戳,机器标识符,进程 ID,自增计数器)

只能说重复的概率可以忽略不计

ZooKeeper

可以利用 ZooKeeper 的顺序节点来完成,当创建顺序节点时,ZooKeeper 会根据创建的时间顺序,在节点名称后面添加 10 位的顺序编号

Snowflake

推特的雪花算法,趋势递增,一般不会重复,除非修改系统时间