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

环境

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

运行

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

java 复制代码
    @Benchmark
    public long generate() {
        return segmentChainId.generate();
    }

Leaf 基准测试代码:

java 复制代码
    @Benchmark
    public 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

shell 复制代码
git clone git@github.com:Ahoo-Wang/CosId.git
cd cosid-benchmark
./gradlew jmh

or

shell 复制代码
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 iterations

Benchmark                     (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

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
相关推荐
马克学长10 分钟前
SSM学生出国境学习交流管理87153(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·学习·ssm 框架·学生出国境管理·在线申请
么么...14 分钟前
MySQL 存储引擎与索引深度解析:从原理到优化实践
数据库·经验分享·sql·mysql
さかた ぎんとき8829 分钟前
从SQL到磁盘的Mysql全链路解析
数据库·sql·mysql
それども35 分钟前
数据库读写分离和事务的关系
数据库
TGITCIC37 分钟前
2026数据分析Agent最新落地方向解析
数据库·数据分析·ai大模型·ai智能体·ai数据·ai问数·ai sql
wangqiaowq41 分钟前
SQL Server 对非聚簇索引的 INCLUDE 列数量和大小有限制
数据库
Coder_Boy_1 小时前
基于SpringAI的在线考试系统-核心业务流程图
java·数据库·spring boot·软件工程
松涛和鸣1 小时前
DAY49 DS18B20 Single-Wire Digital Temperature Acquisition
linux·服务器·网络·数据库·html
海边的Kurisu2 小时前
苍穹外卖日记 | Day3 公共字段填充、菜品模块
数据库
摆烂z2 小时前
mysql通过binlog恢复数据
数据库·mysql