我们在会员模块插入用户信息的时候用户的id采用的是时间戳格式,但是这样比较low,尤其是在分布式系统当中很有可能会产生ID的冲突,所以我们可以考虑其他的方式 UUID的方式也是可以的,但是UUID会影响索引效率,因为UUID是无序的,用一堆无需的ID来构建一个有序的索引目录,性能上肯定有问题,尤其是在高并发场景下 ID自增不适合分布式的项目,因为分布式项目很可能会涉及分库分表 ### 雪花算法的优点 1. **高性能**: 雪花算法通过简单的位运算即可生成 ID,性能非常高。每秒可以生成数百万个唯一 ID。 2. **分布式特性**: 通过机器 ID,雪花算法可以在多个节点上独立生成唯一 ID,而不需要中心化的协调器。 3. **有序性**: 雪花算法生成的 ID 基本上是按时间递增的,有利于数据库索引和查询优化。 4. **灵活性**: 雪花算法可以根据具体需求调整时间戳、机器 ID 和序列号的位数,适应不同的使用场景。 ### 雪花算法的缺点 1. **依赖时钟**: 雪花算法依赖系统时间,如果系统时钟发生回拨,**可能会导致 ID 冲突或重复**。 2. **实现复杂**: 需要确保每个节点的机器 ID 唯一,并且在高并发情况下正确生成序列号。 ### 雪花算法是一种高效的分布式唯一 ID 生成算法,通过时间戳、机器 ID 和序列号的组合,确保在分布式环境中生成的 ID 是唯一且有序的。尽管实现复杂并依赖系统时钟,但它在高并发分布式系统中的应用非常广泛。 ### **我们可以采用hutool依赖当中的工具来生成雪花算法的ID** hutool官网地址:https://doc.hutool.cn/pages/index/ ### ![](https://img.kancloud.cn/72/a3/72a3874c47718c583f583ed8253b7ef5_1351x586.png) ### 在分布式环境当中我们可以单独为每台设备设置不同的机器标识和数据中心的值这样生成的雪花算法ID就永远不同!!! ### 在service当中我们就可以改成雪花算法来生成用户ID ![](https://img.kancloud.cn/c8/c3/c8c3a6381cdfea6c9834dc637d929968_1109x968.png) ### 效果如下图所示 ### ![](https://img.kancloud.cn/f4/04/f40403401b18c4c2316f211b552ae8e5_1166x676.png) ![](https://img.kancloud.cn/c8/6d/c86d70b489bed2b4caaa34a32e6011ce_694x425.png)