方案有很多,包括但不限于以下几种
UUID
Redis
利用 INCR 命令,INCR 命令是一个原子操作,Redis 又是单线程
MongoDB
利用 ObjectId,ObjectId 由 4 部分组成(时间戳,机器标识符,进程 ID,自增计数器)
只能说重复的概率可以忽略不计
ZooKeeper
可以利用 ZooKeeper 的顺序节点来完成,当创建顺序节点时,ZooKeeper 会根据创建的时间顺序,在节点名称后面添加 10 位的顺序编号
Snowflake
推特的雪花算法,趋势递增,一般不会重复,除非修改系统时间