当前位置: 首页 > news >正文

分布式ID(2):雪花算法生成ID

1 雪花算法简介

这种方案大致来说是一种以划分命名空间(UUID也算,由于比较常见,所以单独分析)来生成ID的一种算法,这种方案把64-bit分别划分成多段,分开来标示机器、时间等,比如在snowflake中的64-bit分别表示如下图(图片来自网络)所示:

41-bit的时间可以表示(1L<<41)/(1000L*3600*24*365)=69年的时间,10-bit机器可以分别表示1024台机器。如果我们对IDC划分有需求,还可以将10-bit分5-bit给IDC,分5-bit给工作机器。这样就可以表示32个IDC,每个IDC下可以有32台机器,可以根据自身需求定义。12个自增序列号可以表示2^12个ID,理论上snowflake方案的QPS约为409.6w/s,这种分配方式可以保证在任何一个IDC的任何一台机器在任意毫秒内生成的ID都是不同的。

雪花算法ID优点:

  • 毫秒数在高位,自增序列在低位,整个ID都是趋势递增的。

相关文章:

  • GL Logger和CANFDLog-OTL-128两款记录仪都是如何实现高效的报文录制的?
  • 跟着cherno手搓游戏引擎【6】ImGui和ImGui事件
  • MyBatis 使用报错:org.xml.sax.SAXParseException 元素内容必须由格式正确的字符数据或标记组成
  • OpenHarmony 应用开发入门 (一、环境搭建及第一个Hello World)
  • 数据结构之二叉搜索树
  • 尚硅谷Nginx高级配置笔记
  • 集成开发环境(IDE)介绍
  • 【Vue3】3-2 : 组件的概念及组件的基本使用方式
  • 机器人持续学习基准LIBERO系列6——获取并显示实际深度图
  • 用Python优雅地写出数学表达式的LaTeX代码
  • c# 自定义 滑块TrackBar
  • 树莓派4B +Ubuntu20.04+ROS1的使用(2)
  • 4、python列表Lists
  • Python实现自动化办公(使用第三方库操作Excel)
  • openlayers [六] 地图交互 interaction 详解
  • 《Java编程思想》读书笔记-对象导论
  • Cookie 在前端中的实践
  • CSS中外联样式表代表的含义
  • C语言笔记(第一章:C语言编程)
  • ECMAScript入门(七)--Module语法
  • HomeBrew常规使用教程
  • HTTP那些事
  • Java 多线程编程之:notify 和 wait 用法
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Mybatis初体验
  • Mysql优化
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • ubuntu 下nginx安装 并支持https协议
  • 工程优化暨babel升级小记
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 那些年我们用过的显示性能指标
  • 前端自动化解决方案
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 怎么把视频里的音乐提取出来
  • 自制字幕遮挡器
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 带你开发类似Pokemon Go的AR游戏
  • 我们雇佣了一只大猴子...
  • #DBA杂记1
  • #if #elif #endif
  • #if和#ifdef区别
  • ${factoryList }后面有空格不影响
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (14)Hive调优——合并小文件
  • (6)设计一个TimeMap
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (转)关于pipe()的详细解析
  • **CI中自动类加载的用法总结
  • .bashrc在哪里,alias妙用