Twitter的Snowflake(雪花)算法 您所在的位置:网站首页 推特的趋势 Twitter的Snowflake(雪花)算法

Twitter的Snowflake(雪花)算法

2023-08-22 06:39| 来源: 网络整理| 查看: 265

前言:

雪花算法,比较常用,而且也很简单。

也有可能面试会问到。

简单知道原理就可以~主要是分布式系统产生唯一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 实验室设备网 版权所有