目录
雪花算法,在分布式架构中很常见,但一般也不需要怎么去深入了解,一方面一般个人项目用不到分布式之类的大型架构,另一方面,就算要用到,市面上很多ID生成器也帮我们完成了这项工作。
一、分布式ID的特点
(1)全局唯一性:不能出现有重复的ID标识,这是基本要求。
(2)递增性:确保生成ID对于用户或业务是递增的。
(3)高可用性:确保任何时候都能生成正确的ID。
(4)高性能性:在高并发的环境下依然表现良好。
二、分布式ID的常见解决方案
UUID
Java自带的生成一串唯一随机36位字符串(32个字符串+4个“-”)的算法。它可以保证唯一性,且据说够用N亿年,但是其业务可读性差,无法有序递增。
递增能够让数据在插入时更方便建立主键索引,提高索引树的性能。
SnowFlake
今天的主角雪花算法,它是Twitter开源的由64位整数组成分布式ID,性能较高,并且在单机上递增。 具体参考:
UidGenerator
UidGenerator是百度开源的分布式ID生成器,其基于雪花算法实现。 具体参考: