雪花算法-snowflake

分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。

有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。

而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移到Cassandra,因为Cassandra没有顺序ID生成机制,所以开发了这样一套全局唯一ID生成服务。

snowflake的结构如下(每部分用-分开):

0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000

第一位为未使用,接下来的41位为毫秒级时间(41位的长度可以使用69年),然后是5位datacenterId和5位workerId(10位的长度最多支持部署1024个节点) ,最后12位是毫秒内的计数(12位的计数顺序号支持每个节点每毫秒产生4096个ID序号)

一共加起来刚好64位,为一个Long型。(转换成字符串后长度最多19)

snowflake生成的ID整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由datacenter和workerId作区分),并且效率较高。经测试snowflake每秒能够产生26万个ID。

mysql snowflake_雪花算法-snowflake相关推荐

  1. Twitter的分布式雪花算法 SnowFlake 每秒自增生成26个万个可排序的ID (Java版)

    分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的. 有些时候我们希望能使用一种简单一 ...

  2. 雪花算法snowflake分布式id生成原理详解,以及对解决时钟回拨问题几种方案讨论

    文章目录 一.前言 二.雪花算法snowflake 1.基本定义 2.snowflake的优缺点 三.Java代码实现snowflake 1.组装生成id 2.计算最大值的几种方式 3.反解析ID 4 ...

  3. Twitter的分布式雪花算法 SnowFlake

    为什么80%的码农都做不了架构师?>>>    原理 Twitter的雪花算法SnowFlake,使用Java语言实现. SnowFlake算法产生的ID是一个64位的整型,结构如下 ...

  4. java 有穷自动机_Java实现雪花算法(snowflake)

    本文主要介绍了Java实现雪花算法(snowflake),分享给大家,具体如下: 简单描述 最高位是符号位,始终为0,不可用. 41位的时间序列,精确到毫秒级,41位的长度可以使用69年.时间位还有一 ...

  5. java雪花_Java实现雪花算法(snowflake)

    本文主要介绍了Java实现雪花算法(snowflake),分享给大家,具体如下: 简单描述 最高位是符号位,始终为0,不可用. 41位的时间序列,精确到毫秒级,41位的长度可以使用69年.时间位还有一 ...

  6. 发号器:雪花算法(Snowflake)

    雪花算法(Snowflake)是twitter公司内部分布式项目采用的ID生成算法,开源后广受国内大厂的好评,在该算法影响下各大公司相继开发出各具特色的分布式生成器. 第一个bit位(1bit):Ja ...

  7. 雪花算法-Snowflake Snowflake

    雪花算法-Snowflake Snowflake,雪花算法是由Twitter开源的分布式ID生成算法,以划分命名空间的方式将 64-bit位分割成多个部分,每个部分代表不同的含义.而 Java中64b ...

  8. 雪花算法(snowflake)容器化部署支持动态增加节点

    先简单的介绍一下雪花算法,雪花算法生成的Id由:1bit 不用 + 41bit时间戳+10bit工作机器id+12bit序列号,如下图: 不用:1bit,因为最高位是符号位,0表示正,1表示负,所以这 ...

  9. 分布式自增ID算法---雪花算法 (snowflake,Java版)---算法001

    一般情况,实现全局唯一ID,有三种方案,分别是通过中间件方式.UUID.雪花算法. 方案一,通过中间件方式,可以是把数据库或者redis缓存作为媒介,从中间件获取ID.这种呢,优点是可以体现全局的递增 ...

最新文章

  1. WINDOWS SERVER 2003 组策略应用
  2. 华为stfal00是什么手机_opporeno5pro和华为p40pro有什么区别 哪款手机更好
  3. python自动化办公脚本下载-基于python实现自动化办公学习笔记二
  4. 关于动态添加页面(iframe + mhtml)
  5. MCMC笔记:齐次马尔可夫链
  6. mysql8基本操作
  7. PHP spl_autoload_register()函数的一些见解
  8. 计算不确定度(C语言-大物实验)-复制即可使用
  9. RAID Introduction
  10. 酷派把用户手机当肉鸡,非一天两天
  11. 干货来啦!「敏捷开发畅想与实战」沙龙回顾
  12. 蓄水池问题c语言编程,蓄水池算法(Reservoir Sampling)
  13. uniapp通讯录等敏感权限检查、申请。获取通话记录等内容
  14. 超详细的APP数据指标体系分析
  15. php是什么症状脾虚什么症状怎么治,脾虚的症状及治疗方法是什么
  16. 我的大学(学习-上)
  17. 用android写的微信闲聊机器人
  18. directives(Directives UE 93 42 CEE)
  19. 毕业设计有哪些可借鉴的 GitHub 项目?
  20. android筛选功能代码,Android中 TeaScreenPopupWindow多类型筛选弹框功能的实例代码

热门文章

  1. 内核启动的C语言阶段——start_kernel函数
  2. 将区块链哈希转化为文字标题?IPSE哈希技术Hashlink解释
  3. Chrome 扩展 最近的历史 HistoryBar v1.1
  4. 解决Eclipse 项目报错:Unbound classpath container
  5. poj1284:欧拉函数+原根
  6. Ubuntu编写开机自启动脚本(转载)
  7. 突然发现被点名(理想恋人游戏)
  8. 在linux下编译boost库【搜集】
  9. 拆解前苏联产荧光数码管计算器,内部电路结构彪悍!
  10. 一个从华为离职的朋友