snowflake 雪花算法
分布式ID生成器之雪花算法
分布式ID生成器
概念
分布式ID生成器,是一种在分布式系统中用于生成唯一标识符的工具。分布式系统中,多个节点可能同时需要生成唯一的标识,传统的单机 ID 生成方式(如自增 ID)往往无法满足需求。分布式 ID 生成器可以确保在不同的节点上生成的 ID 具有唯一性,避免冲突。
特点
- 全局唯一性:不能出现重复的ID标识
- 递增性:生成的ID对用户或者业务是递增的
- 高可用性:要确保任何时候都能生成正确的ID
- 高性能性:在高并发的环境下依然表现良好
常见生成算法
UUID(Universally Unique Identifier)
是一种通用唯一识别码,通过随机数生成,具有很高的唯一性。但 UUID 比较长,且无序,在数据库索引等场景下可能效率不高。
雪花算法(Snowflake)
通常由多个部分组成,如时间戳、机器标识、序列号等。通过合理的位分配,可以在不同的机器上生成不重复的有序 ID。
数据库自增 ID
利用数据库的自增特性来生成 ID,但需要考虑数据库的性能和单点故障问题。可以通过数据库集群或者分布式数据库中间件来解决。
典型应用场景
数据库id
短时间内产生大量的数据(如大量订单涌入系统、微博短时间大量转发和评论等业务场景),在数据插入到数据库之前,需要对数据分配唯一的id,然后插入保存到数据库中
分布式系统
任务调度的id
消息队列
消息的唯一标识符id