Twitter的Snowflake(雪花)算法 | 您所在的位置:网站首页 › 推特的趋势 › Twitter的Snowflake(雪花)算法 |
前言:
雪花算法,比较常用,而且也很简单。 也有可能面试会问到。 简单知道原理就可以~主要是分布式系统产生唯一ID或者主键 目录 1. 雪花算法的组成 2.雪花算法的优缺点 3. 一个GITHUB star较多的雪花算法 4.计算结果 1. 雪花算法的组成SnowFlake算法用来生成64位的ID,刚好可以用long整型存储,能够用于分布式系统中生产唯一的ID, 并且生成的ID有大致的顺序。 在这次实现中,生成的64位ID可以分成5个部分: 0 - 41位时间戳 - 5位数据中心标识 - 5位机器标识 - 12位序列号 整体按照这个来组合的话,整个分布式系统不会有重复的ID; 因为有datacenter和机器ID作为保证 2.雪花算法的优缺点 UUID(缺点:太长、没法排序、使数据库性能降低)Redis(缺点:必须依赖Redis)(相当于使用中间件来获得ID)Snowflake雪花算法,优点:生成有顺序的id,提高数据库的性能效率较高,经测试,snowflake每秒能够产生26万ID左右,完全满足需要。 3. 一个GITHUB star较多的雪花算法 /** * twitter的snowflake算法 -- java实现 * * @author beyond * @date 2016/11/26 */ public class SnowFlake { /** * 起始的时间戳 */ private final static long START_STMP = 1480166465631L; /** * 每一部分占用的位数 */ private final static long SEQUENCE_BIT = 12; //序列号占用的位数 private final static long MACHINE_BIT = 5; //机器标识占用的位数 private final static long DATACENTER_BIT = 5;//数据中心占用的位数 /** * 每一部分的最大值 */ private final static long MAX_DATACENTER_NUM = -1L ^ (-1L |
CopyRight 2018-2019 实验室设备网 版权所有 |