通用分布式ID生成方案
Snowflake(雪花算法):
适用场景:小型微服务架构
特点:Snowflake算法由Twitter开发,能够生成64位的唯一ID,由时间戳、数据中心ID、机器ID和序列号组成。它不依赖于外部系统,可以在本地生成ID,因此适用于小型或中等规模的微服务架构,特别是在对ID生成性能要求不是极端高的情况下。
缺点:如果有服务器发生时钟回拨,可能会产生重复的ID。(1.每次生成 ID 时,比较当前时间戳与上次使用的时间戳,小于时阻塞或回调,相等时递增序列号 。 2. 通过NTP(网络时间协议)等方式来保证。)
Redis Cluster:
适用场景:中型微服务架构,中等并发、多服务
特点:Redis Cluster可以通过其原子操作生成唯一的ID,例如使用INCR命令。Redis是内存数据库,读写速度快,可以支持较高的并发ID生成需求。它也易于水平扩展,适合中型微服务架构,尤其是在需要高并发和一定量级的ID生成时。
若并发量进一步提升,可以预分配一批 ID,比如一次性从 Redis INCRBY 取 1000 个 ID,本地进程缓存这批 ID,消耗完后再去 Redis 获取新的 ID 段
缺点:对Redis Cluster的服务器时间同步,以避免主节点故障后,新主节点的时钟不一致。
第三方分布式ID生成系统(比如Leaf):
适用场景:大型微服务架构,高并发、海量数据
特点:Leaf是美团点评开源的分布式ID生成系统,它提供了双Buffer机制和高可用策略,能够应对更高的并发和更复杂的业务场景。Leaf支持自定义ID生成策略,并且可以通过Leaf Server来集中管理ID生成,适合大型微服务架构。
缺点:依赖外部服务,需要部署和维护额外的服务。

浙公网安备 33010602011771号