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

分布式ID性能评测:CosId VS 美团 Leaf

环境

  • MacBook Pro (M1)
  • JDK 17
  • JMH 1.36
  • 运行在本机 Docker 内的 mariadb:10.6.4

运行

CosId SegmentChainId 模式,基准测试代码:

    @Benchmarkpublic long generate() {return segmentChainId.generate();}

Leaf 基准测试代码:

    @Benchmarkpublic long generate() {Result result = idGen.get(bizTag);if (Status.SUCCESS.equals(result.getStatus())){return result.getId();}return generate();}

基准测试代码: https://github.com/Ahoo-Wang/CosId/tree/main/cosid-benchmark

git clone git@github.com:Ahoo-Wang/CosId.git
cd cosid-benchmark
./gradlew jmh

or

gradle jmhJar
java -jar build/libs/cosid-benchmark-2.2.6-jmh.jar -wi 1 -rf json -f 1

报告

# JMH version: 1.36
# VM version: JDK 17.0.7, OpenJDK 64-Bit Server VM, 17.0.7+7-LTS
# Warmup: 1 iterations, 10 s each
# Measurement: 1 iterations, 10 s each
# Timeout: 10 min per iteration
# Threads: 1 thread, will synchronize iterationsBenchmark                     (step)   Mode  Cnt          Score   Error  Units
AtomicLongBenchmark.generate     N/A  thrpt       142725210.565          ops/s
CosIdBenchmark.generate            1  thrpt       131920684.604          ops/s
CosIdBenchmark.generate          100  thrpt       132113994.232          ops/s
CosIdBenchmark.generate         1000  thrpt       130281016.155          ops/s
LeafBenchmark.generate             1  thrpt        25787669.815          ops/s
LeafBenchmark.generate           100  thrpt        23897328.183          ops/s
LeafBenchmark.generate          1000  thrpt        23550106.538          ops/s

CosId VS 美团 Leaf

GitHub Action 环境测试报告: Performance: CosId vs Leaf

因受到 GitHub Runner 资源限制,运行在 GitHub Runner 中的基准测试与真实环境基准测试对比有非常大的差距(近2倍),
但是对于运行在同一环境配置资源情况下(都运行在 GitHub Runner),进行 commit 前后的基准对比、以及第三方库的对比依然是有价值的。

结论

  1. CosId (SegmentChainId) 性能是 Leaf (segment) 的 5 倍。
  2. CosId 、Leaf 的性能与号段步长(Step) 无关。
  3. CosId TPS 基本接近 AtomicLong
http://www.lryc.cn/news/108243.html

相关文章:

  • MySQL数据库安装(二)
  • 通过MySQL删除Hive元数据信息
  • 在电脑如何翻译文件名称并同时保存原文件名和新文件名称
  • Modbus协议简介与常用测试指令说明
  • EXCEL里数值列如何显示序号?如何重新排序? 怎么取得排序后的序号?
  • kubernetes 集群利用 efk 收集容器日志
  • 安防视频监控汇聚平台EasyCVR在移动端火狐浏览器中云台显示的优化
  • selenium官文文档阅读总结(day 3)
  • 【pandas百炼成钢】数据预览与预处理
  • 怎么查到企业的供应商和客户?
  • 智能物流千人俱乐部---行业必备神器
  • uniapp uview文件上传的文件不是文件流,该如何处理?用了uni.chooseImage预览功能要如何做
  • pktgen-dpdk arm编译问题 “Platform must be built with RTE_FORCE_INTRINSICS“
  • 用html+javascript打造公文一键排版系统12:删除附件说明中“附件:”里的空格
  • 容器技术:Docker搭建(通俗易懂)
  • Day 16 C++ 友元(friend)
  • 步进电机1
  • PHP-简单项目引起的大麻烦--【白嫖项目】
  • Excel如何把两列互换
  • Java基础面试题2
  • Typescript 第八章 异步编程,并行和并发(JavaScript事件循环,异步流,多线程类型安全)
  • c++ 打印当前时间(精确到毫秒)
  • mapstruct 错误 java.lang.NoSuchMethodError: Ljava/lang/Double 错误
  • SpringBoot+AOP+Redission实战分布式锁
  • Linux系统---进程概念
  • ELK常用语法和线上问题排查
  • session-cookies 三个缓存 localStorage、sessionStorage、Cookies。
  • LA@行列式性质
  • 【java安全】原生反序列化利用链JDK7u21
  • [SQL智慧航行者] - SQL刷题规划