1 、利用全局的一张表 但是并发很大就有瓶颈
2、利用uuid 不适合做主键 太长
3、利用 业务编号+时间戳 但是高并发也会重复
4、snowflake算法 twitter开源的 (64位的long型变量来保存)
第一段 1bit:不用,因为我们生成的都是正数 所以统一是0
第二段:41bit:标识的是时间戳 单位是毫秒 41bit可以标识的数字多达2的41次方-1 也就是69年的时间
第三段:10bit 记录机器id 标识服务最多可以部署在2的10次方台机器上 也就是1024台机器 但是有五位是机房id,
所以最多可以有2的5次方台机器和2的五次方个机房
第四段: 12bit 这个记录同一毫秒内不同的id 12bit 最大的整数是4096 也就是说可以用这个12bit来区分同一毫秒内的4096个不同的id
5、可以利用Redis中的incr命令来实现原子性的自增与返回