百度ID生成器可以达到百万TPS,为什么如此高性能?

1、消费未来时间

百度ID生成器也是基于雪花算法,雪花算法中最后12位用于自增序列,这决定了雪花算法只支持每秒生成最多4096个id,这在一些批量生产数据的场景会不够用,百度ID生成器可以每秒几百万甚至更多,是因为百度ID生成器可以消费未来时间。消费未来时间是什么意思呢?正常雪花算法是取当前时间,百度的ID生成器可以利用未来时间生成好id缓存起来。并发大时可以使用到未来时间。

2、本地生成并缓存

和常规雪花算法实现一样,百度id生成器也是本地生成,不是那种集中式中心架构。本地生成无需消耗网络io,另外百度id生成器可缓存,提前消费未来时间生成足够多的id缓存起来。缓存的实现采用了RingBuffer环形数组。

3、缓存行补齐

RingBuffer的实现Tail和Cursor变量可能存在伪共享的问题,导致性能损耗,对Tail和Cursor变量进行缓存行补齐可以消除伪共享,Disruptor 也是用了缓存行补齐。

百度ID生成器高性能原因相关推荐

  1. 百度开源的一款分布式高性能的唯一ID生成器,非常强大!

    来源:https://lilinchao.com/archives/1226.html 一.UidGenerator是什么 UidGenerator是百度开源的一款分布式高性能的唯一ID生成器,是基于 ...

  2. 百度开源的分布式 ID 生成器,太强大了!

    来源:https://lilinchao.com/archives/1226.html 一.UidGenerator是什么 UidGenerator是百度开源的一款分布式高性能的唯一ID生成器,是基于 ...

  3. im即时通讯源码_IM消息ID技术专题(六):深度解密滴滴的高性能ID生成器(Tinyid)

    1.引言 在中大型IM系统中,聊天消息的唯一ID生成策略是个很重要的技术点.不夸张的说,聊天消息ID贯穿了整个聊天生命周期的几乎每一个算法.逻辑和过程,ID生成策略的好坏有可能直接决定系统在某些技术点 ...

  4. 百度开源的分布式唯一ID生成器UidGenerator,解决了时钟回拨问题

    转载自   百度开源的分布式唯一ID生成器UidGenerator,解决了时钟回拨问题 UidGenerator是百度开源的Java语言实现,基于Snowflake算法的唯一ID生成器.而且,它非常适 ...

  5. 基于百度的UidGenerator改造的全局唯一id生成器

    其实百度的UidGenerator生成器也是基于snowflake算法的,在原生的项目中使用的基于数据库的,我改造成了基于zookpeer的,用zookpeer的序列号实现分布式seq的生成(代替了算 ...

  6. 分布式全局唯一 ID生成器(百度UidGenerator)

    文章目录 为什么要使用全局ID生成器? 使用UUID作为主键? 使用数据库主键自增? UidGenerator简介 雪花算法snowflake SpringBoot整合百度UidGenerator 为 ...

  7. Spring Boot 集成百度 Uidgenerator分布式ID生成器

    UidGenerator是Java实现的, 基于Snowflake算法的唯一ID生成器.UidGenerator以组件形式工作在应用项目中, 支持自定义workerId位数和初始化策略, 从而适用于d ...

  8. SpringBoot2.0集成百度uid-generator唯一ID生成器,支持zk、redis、数据库进行WORKER ID分配

    UidGenerator是百度开源的基于Snowflake算法的唯一ID生成器,使用java语言实现,可在分布式环境下生成单调递增的ID.详情参见: uid-generator 从官网说明或者网上的使 ...

  9. 基于号段模式、百度UID实现的分布式ID生成器kylin-id

    1.简介 1.1.开源项目 kylin-id:麒麟分布式id生成器,支持号段模式.雪花算法 并未发布jar到中央仓库,需要自己本地构建 1.2.介绍 参考滴滴[tinyid] 整合百度[UID] 麒麟 ...

最新文章

  1. 完美解决opencv-python中文路径解析问题
  2. oracle元数据存储在表空间,[Oracle] dbms_metadata.get_ddl 的使用方法总结
  3. 6月 Python 开源项目 Top10,还不收藏~
  4. 编程方法学24:管理大型数据中的良好软件工程原理
  5. malloc 背后的系统知识(虚拟内存地址)
  6. 运行cmd状态下MySQL导入导出.sql文件
  7. ppt流程图字体太小_简单三步,用WPS轻松完成一个又大气又好看的流程图!
  8. wxpython显示图片_wxpython下图片局部显示的方法
  9. 计算机英语 考研 翻译,研究生英语翻译笔记
  10. jQ判断一个元素是否为空
  11. PHP全栈学习笔记3
  12. busybox inetd tftpd
  13. vyos -vyatta-config-commit save
  14. w ndows模拟器,DS4Windows模拟器
  15. android 图片大小控制,Android实现通过手势控制图片大小缩放的方法
  16. window.onload的作用
  17. 使用模板匹配方法检测苹果缺陷
  18. 论文笔记 -- Fast-LIO -- ESIKF溯源
  19. 同样是大逃杀类影片,《鱿鱼游戏》凭什么能火遍全球?
  20. DM36x IPNC远程升级

热门文章

  1. 【Word 2019 默认保存后压缩变模糊的问题,解决方案】
  2. java计算机毕业设计面向餐饮行业的会员营销系统源码+系统+数据库+lw文档+mybatis+运行部署
  3. dmg和tar.gz的区别
  4. 张一锋:法定数字货币是必然,但未必采用区块链技术,柬埔寨或发行加密货币 | 区块链日报
  5. HTML简单计算器实现
  6. 无线上把锁:WEP、WPA无线加密方式对比
  7. Python文件的读写、正则表达式的运用、多线程与多进程、网络编程
  8. 工信部公布汽车油耗数
  9. <2021SC@SDUSC>【Overload游戏引擎】OvCore源码模块分析(六)——SceneSystem
  10. 如何做到图片无损压缩?speedpdf在线转换操作步骤