snowflake id生成的方法有很多1、微软的uuiduuid使用机器网卡和时间戳数据过长不利于保存和操作。2、twitter 的snowflake。3、数据库自增id也可以保证唯一性但是并发太大扛不住。4、通数据库差不多的redis自增命令天然支持高并发。snowflake的格式为1位保留位置41位时间戳10位机器序列号12位序列号。1、问机器偶尔会有时间小于当前时间的情况此时需要回拨如果要保证id递增的情况该怎么设计比如调后了x s。曰1、禁用生成id的接口。不行这个要改代码。2、停服务。先停服务再调时间等待x s之后重启服务。这个代价太大。3、时间使用第三方如zk时间。这个可以不可能所有的机器都时间滞后。如果真有发生那就凉凉了。4、使用一个字段记录上一次的时间。如果新的时间小于上一次时间就不生成id。5、项目启动的时候查询一次数据库获得已有的最大id写入4的字段。防止机器重启缓存为null。2、布隆过滤器guava中就有现成的可以拿来用。不得不说guava是个好类库。