雪花算法如何确保全局唯一,原理详解

本文详细解析了Twitter开源的雪花算法,该算法用于在分布式环境中生成有序、全局唯一的ID。雪花ID由64位二进制数构成,包括1位符号位、41位时间戳、10位机器ID和12位序列号,适用于订单、商品等主业务流程,以满足高并发场景的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念部分:

在这里插入图片描述

雪花算法,是 Twitter 开源的分布式 id 生成算法。

一般数据库的ID自增并不能满足分布式场景下全局唯一的情况。
雪花算法主要是为了在分布式的场景下,生成有序,且全局唯一的ID。
但是也不是所有地方/所有表都需要生成全局唯一ID,一般应用于比如订单,商品信息等系统主流程的情况下。也就是说一般像非主业务部分(系统配置,工作流配置等)
系统配置:比如配置某个开关,比方美团订单派单给配送员的公里数配置,这个公里数一定不是在系统中写固定值的,一定是某个可以配置的范围值。否则改一次配置需要发一次版也太麻烦了。再比方某些邮件通知内容或者模板的配置。邮件的模板内容肯定也不是在系统中写成固定的。
工作流的配置:工作流的配置也是如此,系统本身在业务上一般都有一些业务流程,这些业务流程涉及到审核审批的也一定是可灵活配置,非固定的。
so,这些和系统主业务流程相关性比较少且一般由系统工作人员去配置的不会用雪花ID。一般数据库的自增就已经够用了。因为这些通常不涉及高并发的场景。
刚才提到,雪花算法是满足分布式场景下ID全局唯一的情况,它是通过64bit的二进制数进行控制生成全局唯一ID的。
64位的二进制数中,
第一位表示正负,所以第一位都是0
共有41位二进制数用来存储时间戳
共有10位二进制数用来存储分布式场景下不同的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值