分布式ID
约 371 字大约 1 分钟
如何设计分布式ID?生成方法?√
全局唯一
高性能:低延时,响应要快,否则反倒会成为业务瓶颈
高可用
好接入:使用方便
趋势递增(可选)
UUID
雪花算法:twitter开源:用64bit的long型数字作为全局唯一id
1个bit:符号位。0表示正数,1表示负数。
41个bit:时间戳。单位毫秒。最多表示2^41-1毫秒,约等于69年(1970开始)
5个bit:机房id,最多表示2^5个机房
5个bit:机器id。~
12个bit:序号
高性能,高可用,内存生成,不依赖数据库,容量大:一毫秒内最多生成4096(2^12-1)个id。自增,因为时间自增
系统时间被回调或者改变可能造成id重复。通过记录最后一个生成id的时间戳或生成id前比较当前服务器时钟是否被回拨,避免生成重复id
redis集群的incr方法:注意持久化避免宕机后ID重复
百度uid-generator
美团Leaf
前端
UUID(推荐):简单易用
时间戳 + 随机数:对全局唯一性要求不高的场景。
设备信息 + 时间戳:适合某些特定环境下生成唯一ID,但实现复杂
哈希算法:适合基于输入数据生成唯一ID,例如基于消息内容生成ID。