id长度 雪花算法_雪花还能做这个!

对于程序猿来说,大家肯定知道UUID,但它由于采用无意义字符串,没有排序,数据量大时查询效率比较低。于是就有了雪花,每一片雪花都拥有自己漂亮独特的形状、独一无二。雪花算法也表示生成的ID如雪花般独一无二。

3ace18cd98aeeb2e8750ea1ddcceff9d.png

雪花算法生成的ID是纯数字且具有时间顺序的,自增、有序、适合分布式场景

。其原始版本是scala版,后面出现了许多其他语言的版本如Java、C++等。

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

其特点是自增、有序、纯数字组成查询效率高且不依赖于数据库。适合在分布式的场景中应用,可根据需求调整具体实现。

时间位:可以根据时间进行排序,有助于提高查询速度。

机器id位:适用于分布式环境下对多节点的各个节点进行标识,可以具体根据节点数和部署情况设计划分机器位10位长度,如划分5位表示进程位等。

序列号位:是一系列的自增id,可以支持同一节点同一毫秒生成多个ID序号,12位的计数序列号支持每个节点每毫秒产生4096个ID序号,snowflake算法可以根据项目情况以及自身需要进行一定的修改。

c3624845edc14d95a392b7d7fcba6fd0.png

但万物都有缺点,雪花算法也一样,雪花算法在单机系统上ID是递增的,但是在分布式系统多节点的情况下,所有节点的时钟并不能保证不完全同步,所以有可能会出现不是全局递增的情况。

好了就到这里,回见了您!下张介绍具体实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值