至少分布式 ID 写入数据库时,很难保证严格有序,只能保证趋势有序。比如服务 A 拿到了 ID=1,B 拿到了 ID=2,按理说 A 先于 B 拿到 ID,那么应该是 A 写入后才轮到 B。但可能网络波动了,B 的 ID=2 先写入了,再轮到 A 的 ID=1 写入。虽然 ID 获取上是严格有序,但无法保证写入数据库时的严格有序,这中间是有时间差的 不过可以让雪花 ID 更“有序”一点:时间戳 + redis.incrAndGet(key) + 机器 ID,这样可以保证拿到的 ID 时严格递增的,不过还是会出现上面的问题——无法保证获取 ID 和写入 ID 时的严格有序。同时引入新组件 Redis,还要维护高可用,以及考虑热 key 问题
4 1

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务