雪花算法 Snowflake 生成分布式自增 ID 详解

1、雪花算法概述

Snowflake 是 twitter 开发的全局唯一 ID 生成服务。

Twitter 的分布式雪花算法 Snowflake,经测试 Snowflake 每秒能够产生 26 万个自增可排序的ID

  1. twitter 的 Snowflake 生 成ID能够按照时间有序生成
  2. Snowflake 算法生成 id 的结果是一 个 64bit 大小的整数, 为一个 Long 型(转换成字符串后长度最多 19)。
  3. 分布式系统内不会产生 ID 碰撞(由 datacenter 和 workerld 作区分)并且效率较高。

分布式系统中,有一些需要使用全局唯一 ID 的场景, 生成ID的基本要求如下:

  1. 在分布式的环境下必须全局且唯一 。

  2. 一般都需要单调递增,因为一般唯一ID都 会存到数据库,而 innodb 的特性就是将内容存储在主键索引树上的叶子节点而且是从左往右,递增的,所以考虑到数据库性能,一般生成的 id 也最好是单调递增。为了防止 ID 冲突可以使用 36 位的 UUID,但是 UUID 有一些缺点, 首先他相对比较长,另外 UUID 一般是无序的。

  3. 可能还会需要无规则,因为如果使用唯一 ID 作为订单号这种,为了不让别人知道一天的订单量是多少,就需要这个规则。

2、雪花算法结构

在这里插入图片描述
上图的号段解析:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值