分散式ID效能評測:CosId VS 美團 Leaf

2023-07-29 06:03:16

分散式ID效能評測:CosId VS 美團 Leaf

基準測試環境

  • MacBook Pro (M1)
  • JDK 17
  • JMH 1.36
  • 執行在本機的Docker 的 mariadb:10.6.4

執行基準測試

基準測試程式碼: https://github.com/Ahoo-Wang/CosId/tree/main/cosid-benchmark

git clone [email protected]:Ahoo-Wang/CosId.git
cd cosid-benchmark
./gradlew jmh

基準測試報告

# 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

CosId VS 美團 Leaf

GitHub Action 環境測試報告: Performance: CosId vs Leaf

因受到 GitHub Runner 資源限制,執行在 GitHub Runner 中的基準測試與真實環境基準測試對比有非常大的差距(近2倍),
但是對於執行在同一環境設定資源情況下(都執行在 GitHub Runner),進行 commit 前後的基準對比、以及第三方庫的對比依然是有價值的。

基準測試結論

  1. CosId 效能優於 Leaf,CosId 效能是 Leaf 的 5 倍左右。
  2. CosId 、Leaf 的效能與號段步長(Step) 無關。
  3. CosId TPS 基本接近 AtomicLong ,參考 https://www.cnblogs.com/Ahoo-Wang/p/cosid-segment-chain.html。