开发者社区> 问答> 正文

snowflake的工作原理是什么?

snowflake的工作原理是什么?

展开
收起
kun坤 2020-04-24 11:27:56 505 0
1 条回答
写回答
取消 提交回答
  • 8.jpg

    1位不用。二进制中最高位为1的都是负数,但是我们生成的id一般都使用整数,所以这个最高位固定是0。

    41位,用来记录毫秒的时间戳。41位可以表示的数值范围是:0 至 2^{41}-1,减1是因为可表示的数值范围是从0开始算的,而不是1,转化为年则是 2^{41}-1)/(1000606024365)=69年。

    10位,用来记录工作机器id。最多可以部署在2^{10} = 1024个节点,我们可以根据具体的业务来定制具体分配的机器数量和每台机器1毫秒产生的id序号number数。例如可以把10bit分5bit给IDC,分5bit给工作机器。这样就可以表示32个IDC,每个IDC下可以有32台机器,可以将内容配置在配置文件中,服务去获取。

    12位。用来表示单台机器每毫秒生成的id序号,12位bit可以表示的最大正整数为2^12 - 1 = 4096,若超过4096,则重新从0开始。即,每台机器1毫秒内最多产生4096个ID,足够用了。

    最后将上述4段bit通过位运算拼接起来组成64位bit.

    2020-04-24 11:28:17
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Phoenix 全局索引原理与实践 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载