伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

分布式ID生成之雪花算法详解

来源:本站原创 浏览:113次 时间:2022-10-10
分布式ID生成之雪花算法分布式ID生成方案

唯一ID可以标识数据的唯一性,在分布式系统中生成唯一ID的方案有很多,常见的方式大概有以下几种方式:

  • UUID 随机数
  • 数据库特性
  • Redis 生成 ID
  • snowflake 雪花算法(本文将要讨论)
优缺点生成算法优点缺点长度UUID实现简单,不占用带宽ID 是无序的,查询慢,不适合建立索引32字节数据库自增代码简单,数据递增DB 单点故障等,需 DBA 专业维护递增snowflake低位趋势递增,不占带宽,性能高依赖于服务器时间18字节Redis自增 incr无单点故障,性能高,递增占用带宽,redis 集群维护自定义关于雪花算法

有这样一种说法,自然界中并不存在两片完全一样的雪花(世界上没有两片相同的树叶),每一片雪花都拥有自己漂亮独特的形状且是独一无二。

雪花算法也表示生成的 ID 如雪花般独一无二,SnowFlake 算法,是 Twitter 开源的分布式 ID 生成算法。

雪花算法概述

雪花算法生成的 ID 是纯数字且具有时间顺序的。其原始版本是 scala 版,后面出现了许多其他语言的版本如Java、C++等。

组成结构

雪花算法-组成结构

大致是由:首位无效符、时间戳差值,机器(进程)编码,序列号四部分组成。

  • 1 bit:首位无效,为啥呢?

因为二进制里第一个 bit 为如果是 1,那么都是负数,但是我们生成的 id 都是正数,所以第一个 bit 统一都是 0。

  • 41 bit:表示的是时间戳,单位是毫秒

41 bit 可以表示的数字多达 2^41 - 1,也就是可以标识 2 ^ 41 - 1 个毫秒值,换算成年就是表示 69 年的时间。

  • 10 bit:记录工作机器 id,代表的是这个服务最多可以部署在 2^10 台机器上,也就是 1024 台机器

10 bit 里 5 个 bit 代表机房 id,5 个 bit 代表机器 id。意思就是最多代表 2 ^ 5 个机房(32 个机房),每个机房里可以代表 2 ^ 5 个机器(32 台机器),也可以根据自己公司的实际情况确定。

  • 12 bit:这个是用来记录同一个毫秒内产生的不同 id

12 bit 可以代表的最大正整数是 2 ^ 12 - 1 = 4096,也就是说可以用这个 12 bit 代表的数字来区分同一个毫秒内的 4096 个不同的 id。

雪花算法优点

自增、有序、适合分布式场景,生成时不依赖于数据库,完全在内存中生成,每秒能生成数百万的自增 ID,存入数据库中,索引效率高。

  • 时间位:可以根据时间进行排序,有助于提高查询速度。
  • 机器 ID 位:适用于分布式环境下对多节点的各个节点进行标识,可以具体根据节点数和部署情况设计划分机器位 10 位长度,如划分5位表示进程位等。
  • 序列号位:是一系列的自增id,可以支持同一节点同一毫秒生成多个 ID 序号,12 位的计数序列号支持每个节点每毫秒产生 4096 个 ID 序号

snowflake 算法可以根据项目情况以及自身需要进行一定的修改。

基于 Snowflake 算法的其他开源方案 百度 uid-generator 、滴滴 Tinyid 、美团leaf

雪花算法的缺点

雪花算法在单机系统上 ID 是递增的,但强依赖与系统时间的一致性,如果系统时间被回拨或者改变,可能会造成 ID 冲突或者重复。在分布式系统多节点的情况下,所有节点的时钟并不能保证不完全同步,所以有可能会出现不是全局递增的情况。

总结

分布式唯一 ID 的方案有很多,本文主要讨论了雪花算法,组成结构大致分为了无效位、时间位、机器位和序列号位。其特点是自增、有序、纯数字组成查询效率高且不依赖于数据库。适合在分布式的场景中应用,可根据需求调整具体实现细节。


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net