写点什么

Pulsar 和 Kafka 基准测试报告(下)

  • 2021-01-28
  • 本文字数:5619 字

    阅读完需:约 18 分钟

Pulsar 和 Kafka 基准测试报告(下)

为了更全面地了解 Pulsar 和 Kafka,我们“复现”了 Confluent 对 Pulsar 和 Kafka 基准测试。重复这一基准测试的原因有两个,一是 Confluent 的测试方法存在一些问题;二是 Confluent 的测试范围和测试场景不够全面。为了更准确地对比 Pulsar 和 Kafka,我们在测试中不仅修复了 Confluent 测试中的问题,还扩大了测试范围,纳入更多性能衡量标准,模拟更多实际场景。


和 Confluent 的测试相比,我们的测试主要有三项改进:


  1. 包含 Pulsar 和 Kafka 支持的所有持久性级别。在同等持久性级别下,对比二者的吞吐量和延迟。

  2. 引入影响性能的其他因素和测试条件,如分区数量、订阅数量、客户端数量等。

  3. 测试的混合负载同时包含写入、追赶读和追尾读,模拟实际使用场景。


我们进行了最大吞吐量测试、发布和端到端延迟测试、追赶读测试和混合工作负载测试(详见上篇)。由于篇幅有限,本篇主要介绍发布和端到端延迟测试详情。

发布和端到端延迟测试

测试目标:观测在处理发布和追尾读工作负载时 Pulsar 和 Kafka 可实现的最低延迟。


测试设置:通过调整订阅数量和分区数量,观测订阅数量和分区数量对发布延迟和端到端延迟的影响。


测试策略:


  • 将所有消息都复制三次,确保容错;

  • 改变 ack 数量,测试在不同持久性保证下,Pulsar 和 Kafka 吞吐量的差异;

  • 改变订阅数量(从 1 到 10),分别测试延迟;

  • 改变分区数量(从 100 到 10000),分别测试延迟;

  • 消息大小为 1KB;

  • 生产者以 200000/s(约 200MB/s)的固定速度发送消息,追尾读消费者在生产者持续发送消息时处理消息。


各项测试结果如下。


#1 100 个分区, 1 个订阅


我们从 100 个分区、1 个订阅开始,在所有不同持久性保证下,对 Pulsar 和 Kafka 能实现的最低延迟进行了基准测试。


测试证明,在所有持久性级别上,Pulsar 的发布延迟和端到端延迟都比 Kafka 低,是 Kafka 的 1/5 到 1/2。


发布延迟 - 同步本地持久性


使用两种复制持久性设置(分别为 ack-1 和 ack-2)和同步本地持久性时,Pulsar 和 Kafka 发布延迟的差异如图 10。表 2 为每种情况下的精确延迟数值。在异步复制持久性(ack-1)下,Pulsar P99 延迟是 Kafka 的 1/3; 在同步复制持久性(ack-2)下是 Kafka 的 1/5。



图 10 Pulsar 和 Kafka 的发布延迟(数据同步)


表 2 Pulsar 和 Kafka 的实际发布延迟测试结果(数据同步)


平均值P50P90P99P999
pulsar-ack-13.233.214.234.735.89
pulsar-ack-23.643.424.4710.3732.74
kafka-ack-12.541.993.7811.3718.71
kafka-ack-all9.845.7119.758.83164.20


为了更深入地了解延迟如何随时间变化,我们绘制了 Pulsar 和 Kafka 采取不同复制持久性设置时的 P99 延迟图。如图 11 所示,Pulsar 的延迟比较稳定(约 5 毫秒),但 Kafka 的延迟波动较大。对于关键任务服务(mission-critical services)来说,稳定、持续的低延迟至关重要。



图 11 Pulsar 和 Kafka 的 P99 延迟


端到端延迟--同步本地持久性


使用两种复制持久性设置(分别为 ack-1 和 ack-2)和同步本地持久性时,Pulsar 和 Kafka 端到端延迟的差异如图 12。表 3 为每种情况下的精确延迟数值。在异步复制持久性(ack-1)下,Pulsar P99 端到端延迟是 Kafka 的 1/3,在同步复制持久性(ack-2)下是 Kafka 的 1/5。



图 12 1 个订阅时,Pulsar 和 Kafka 的端到端延迟(数据同步)


表 3 1 个订阅时,Pulsar 和 Kafka 的实际端到端延迟测试结果(数据同步)


平均值P50P90P99P999
pulsar-ack-14.324.415.355.867.65
pulsar-ack-24.724.655.6011.6433.90
kafka-ack-16.234.919.0818.7591.74
kafka-ack-all12.897.5323.0764.62169.83


发布延迟 - 异步本地持久性


使用两种复制持久性设置(分别为 ack-1 和 ack-2)和异步本地持久性时,Pulsar 和 Kafka 发布延迟的差异如图 13。表 4 为每种情况下的精确延迟数值。在异步复制持久性(ack-1)下,Kafka 性能更优,但 Pulsar P99 发布延迟更稳定(低于 5 毫秒),增加复制持久性保证(从 ack-1 到 ack-2)并未影响延迟。在同步复制持久性(ack-2)下,Kafka P99 发布延迟是 Pulsar 的 2 倍



图 13 Pulsar 和 Kafka 的发布延迟(无数据同步)


表 4 Pulsar 和 Kafka 的实际发布延迟测试结果(无数据同步)


平均值P50P90P99P999
pulsar-ack-12.812.793.84.215.45
pulsar-ack-22.992.973.964.476.19
kafka-ack-11.741.622.603.069.91
kafka-ack-all3.012.773.978.4715.57


为了更深入地了解发布延迟如何随时间变化,我们绘制了 Pulsar 和 Kafka 在不同复制持久性设置下的 P99 发布延迟图。如图 14 所示,Pulsar 的延迟始终保持在较低的水平(低于 5 毫秒),而 Kafka 的延迟始终是 Pulsar 的 2 倍



图 14 不同复制持久性设置下,Pulsar 和 Kafka 的 P99 发布延迟


端到端延迟--异步本地持久性


使用两种复制持久性设置(分别为 ack-1 和 ack-2)和异步本地持久性时,Pulsar 和 Kafka 端到端延迟的差异如图 15。表 5 为每种情况下的精确延迟数值。在所有情况下,Pulsar 的性能都优于 Kafka。Pulsar P99 端到端延迟保持稳定(约 5 毫秒),改变复制持久性设置对其并无影响。对于 ack-1,Kafka 的 P99 端到端延迟比 Pulsar 高;对于 ack-2,Kafka 的 P99 端到端延迟是 Pulsar 的 2 倍



图 15 1 个订阅时,Pulsar 和 Kafka 的端到端延迟(无数据同步)


表 5 1 个订阅时,Pulsar 和 Kafka 的实际端到端延迟测试结果(无数据同步)


平均值P50P90P99P999
pulsar-ack-13.963.994.905.337.93
pulsar-ack-24.064.175.085.558.52
kafka-ack-14.264.105.396.9417.24
kafka-ack-all4.223.965.1910.4318.95


#2 100 个分区, 10 个订阅


了解 Pulsar 和 Kafka 只有一个订阅时的性能后,我们想知道更改订阅数量会如何影响发布延迟和端到端延迟。于是我们把订阅数量从 1 增加到 10,并为每个订阅分配了 2 个消费者。


从表 6 的数据中可以看出,我们的测试结果表明:


  • Pulsar P99 发布延迟和端到端延迟保持在 5 到 10 毫秒之间。

  • 增加订阅数量会对 Kafka 的 P99 发布和端到端延迟产生巨大影响,导致延迟增加到几秒。


表 6 10 个订阅时,发布和端到端延迟的测试结果


发布延迟端到端延迟
同步本地持久性测试结果测试结果
异步本地持久性测试结果测试结果


发布延迟 - 同步本地持久性


使用两种复制持久性设置(分别为 ack-1 和 ack-2)和同步本地持久性时,Pulsar 和 Kafka 发布延迟的差异如图 16。表 7 为每种情况下的精确延迟数值。在异步复制持久性(ack-1)下,Pulsar P99 发布延迟仍然是 Kafka 的 1/3。但在同步复制持久性(ack-2)下,Pulsar 的发布延迟是 Kafka 的 1/160(1 个订阅时,Pulsar 的发布延迟是 Kafka 的 1/5)。



图 16 10 个订阅时,Pulsar 和 Kafka 的发布延迟(数据同步)


表 7 10 个订阅时,Pulsar 和 Kafka 的实际发布延迟测试结果(数据同步)


平均值P50P90P99P999
pulsar-ack-13.243.204.264.8910.31
pulsar-ack-23.673.474.569.9431.31
pafka-ack-13.142.394.3915.0761.29
kafka-ack-all290.51176.82724.261593.462686.41


端到端延迟--同步本地持久性


使用两种复制持久性设置(分别为 ack-1 和 ack-2)和同步本地持久性时,Pulsar 和 Kafka 端到端延迟的差异如图 17。表 8 为每种情况下的精确延迟数值。在异步复制持久性(ack-1)下,Pulsar P99 延迟是 Kafka 的 1/20,在同步复制持久性(ack-2)下是 Kafka 的 1/110 。



图 17 10 个订阅时,Pulsar 和 Kafka 的端到端延迟(数据同步)


表 8 10 个订阅时,Pulsar 和 Kafka 的实际端到端延迟测试结果(数据同步)


平均值P50P90P99P999
pulsar-ack-14.794.836.037.1215.36
pulsar-ack-25.345.126.4314.6539.90
kafka-ack-111.366.6517.12145.10914.19
kafka-ack-all296.45171.32731.671599.792696.63


发布延迟 - 异步本地持久性


使用两种复制持久性设置(分别为 ack-1 和 ack-2)和异步本地持久性时,Pulsar 和 Kafka 发布延迟的差异如图 18。表 9 为每种情况下的精确延迟数值。Pulsar 的性能显著优于 Kafka。Pulsar 的平均发布延迟约为 3 毫秒,P99 延迟在 5 毫秒以内。Kafka 在异步复制持久性(ack-1)下性能令人满意,但在同步复制持久性(ack-2)下性能差了很多。在同步复制持久性下,Kafka 的 P99 发布延迟是 Pulsar 的 270 倍。



图 18 10 个订阅时,Pulsar 和 Kafka 的发布延迟(无数据同步)


表 9 10 个订阅时,Pulsar 和 Kafka 的实际发布延迟测试结果(无数据同步)


平均值P50P90P99P999
pulsar-ack-12.862.823.864.4611.18
pulsar-ack-23.053.004.034.7310.39
kafka-ack-12.111.893.026.3514.74
kafka-ack-all158.0417.63526.911281.251956.71


端到端延迟--异步本地持久性


使用两种复制持久性设置(分别为 ack-1 和 ack-2)和异步本地持久性时,Pulsar 和 Kafka 端到端延迟的差异如图 19。表 10 为不同情况下的精确延迟数值。在所有情况下,Pulsar 的性能始终优于 Kafka。Pulsar 的端到端延迟始终保持在 4~7 毫秒之间,改变复制持久性设置对其并无影响。对于 ack-1,Kafka 的 P99 端到端延迟是 Pulsar 的 13 倍;对于 ack-2,则是 187 倍。



图 19 10 个订阅时,Pulsar 和 Kafka 的端到端延迟(无数据同步)


表 10 10 个订阅时,实际端到端延迟测试结果(无数据同步)


平均值P50P90P99P999
pulsar-ack-14.514.475.606.8415.77
pulsar-ack-24.614.615.766.9414.21
kafka-ack-18.015.909.3889.80532.68
kafka-ack-all212.7787.72537.851295.781971.03


#3 100, 5000, 8000, 10000 个分区


了解更改订阅数量会如何影响 Pulsar 和 Kafka 的发布延迟后,我们想更改分区数量,看看会产生什么效果。于是,我们把分区数量从 100 个累加到 10000 个,观察发生了什么变化。


测试数据见表 11,测试结果表明:


  • 分区数量增加时,Pulsar P99 发布延迟稳定在 5 毫秒内。

  • Kafka 的 P99 发布延迟受分区数量累加影响很大,延迟上升到几秒。

  • 分区数量超过 5000 后,Kafka 的消费者就跟不上发布吞吐量了。


表 11 不同 ack 和不同持久性下的实际发布延迟测试结果


Ack = 1Ack = 2
同步本地持久性测试结果测试结果
异步本地持久性测试结果测试结果


Ack = 1,同步本地持久性


使用同步本地持久性和异步复制持久性 (ack = 1) 更改分区数量时,Pulsar 和 Kafka 发布和端到端延迟的差异分别如图 20 和图 21。



图 20 分区数量不同,ACK=1 时的发布延迟(数据同步)



图 21 分区数量不同,ACK=1 时的端到端延迟(数据同步)


表 12 显示了分区数量不同,ACK=1 时的实际发布延迟测试结果。表 13 显示了分区数量不同,ACK=1 时的实际端到端延迟测试结果。


表 12 分区数量不同,ACK=1 时的实际发布延迟测试结果(数据同步)


平均值P50P90P99P999
kafka-1002.541.993.7811.3718.71
kafka-50003.504.419.2129.2644.39
kafka-80008.375.1120.1840.7069.72
kafka-1000011.146.5726.8152.2482.07
pulsar-1003.233.214.234.735.89
pulsar-50003.353.304.345.0313.96
pulsar-80003.673.674.895.6116.07
pulsar-100003.423.374.485.3619.20


表 13 分区数量不同,ACK=1 时的实际端到端延迟测试结果(数据同步)


平均值P50P90P99P999
kafka-1006.234.919.0818.7591.74
pulsar-1004.324.415.355.867.65
pulsar-50004.524.535.556.2617.78
pulsar-80004.894.996.116.8623.83
pulsar-100004.494.625.706.6727.25


图 22 给出了分区数量不同,ACK=1 时 Pulsar 端到端的延迟。图 23 给出了分区数量不同,ACK=1 时 Kafka 端到端的延迟。



图 22 分区数量不同,ACK=1 时 Pulsar 的端到端延迟(数据同步)



图 23 分区数量不同,ACK=1 时 Kafka 的端到端延迟(数据同步)


从以上图表可以看出:


  • Pulsar P99 发布延迟稳定在 5 毫秒左右,更改分区数量对其并无影响。

  • Pulsar P99 端到端延迟稳定在 6 毫秒左右,更改分区数量对其并无影响。

  • Kafka 的 P99 发布延迟随着分区数量增加而逐渐拉长,在 10000 个分区时,其延迟增加了 5 倍(与 100 个分区时相比),比 Pulsar 的延迟高出 10 倍。

  • Kafka 的 P99 端到端延迟随着分区数量增加而逐渐拉长,在 10000 个分区时,其延迟高出 10000 倍(与 100 个分区时相比),增加到 180 秒,是 Pulsar 的 280000 倍。


Ack = 2,同步本地持久性


使用同步本地持久性和同步复制持久性(ack = 2)更改分区数量时,Pulsar 和 Kafka 发布延迟的差异如图 24。表 14 为每种情况下的精切延迟数值。



图 24 分区数量不同,ack=2/all 时的发布延迟(数据同步)


表 14 分区数量不同, ack=2/all 时的实际发布延迟测试结果(数据同步)


平均值P50P90P99P999
kafka-1009.845.7119.758.83164.20
kafka-5000154.5036.86468.751259.822017.15
kafka-8000283.50124.82784.691742.272729.79
kafka-10000259.5096.15731.851718.092684.28
pulsar-1003.643.424.4710.3732.74
pulsar-50003.843.574.6912.8142.83
pulsar-80004.153.975.2311.9042.19


图 25 和图 26 分别显示了更改分区数量如何影响 Pulsar 和 Kafka 端到端的延迟。



图 25 分区数量不同,ack=2 时 Pulsar 的端到端延迟(数据同步)



图 26 分区数量不同,ack=2 时 Kafka 的端到端延迟(数据同步)


从以上图表可以看出:


  • Pulsar P99 发布延迟稳定在约 10 毫秒,增加分区数量对其并无影响。

  • 随着分区数量增加,Kafka 的 P99 发布延迟逐渐拉长;有 10000 个分区时,其延迟是 100 个分区的 30 倍,增加到 1.7 秒,是 Pulsar 的 126 倍。

  • Pulsar P99 端到端延迟稳定在约 10 毫秒,增加分区数量仅对 Pulsar P99 端到端延迟产生轻微影响。但即使有 10000 个分区,延迟仍相对较低,约为 50 毫秒。

  • 随着分区数量增加,Kafka 的 P99 端到端延迟逐渐拉长。有 10000 个分区时,Kafka P99 端到端延迟增加到 200 秒,是 Pulsar 的 14771 倍。


Ack = 1, Async 本地持久性


使用异步本地持久性和异步复制持久性(ack = 1)更改分区数量时,Pulsar 和 Kafka 发布延迟的差异如图 27。表 15 为不同情况下的精切延迟数值。



图 27 分区数量不同,ack=1 时的发布延迟(无数据同步)


表 15 分区数量不同,ack=1 时的实际发布延迟测试结果(无数据同步)


平均值P50P90P99P999
kafka-1001.741.622.603.069.91
kafka-50004.133.055.2025.3233.86
kafka-80006.844.3216.5134.1946.34
kafka-100008.955.3222.7541.8359.32
pulsar-1002.862.793.84.215.45
pulsar-50002.982.953.894.517.85
pulsar-80003.263.274.505.1415.21
pulsar-100003.062.974.155.2319.47


图 28 和图 29 分别显示了更改分区数量如何影响 Pulsar 和 Kafka 端到端的延迟。



图 28 分区数量不同,ack=1 时,Pulsar 端到端的延迟(无数据同步)



图 29 分区数量不同,ack=1 时,Kafka 端到端的延迟(无数据同步)


从以上图表可以看出:


  • Pulsar P99 发布延迟稳定在约 4~5 毫秒之间,增加分区数量对其并无影响。

  • Kafka P99 发布延迟随着分区数量增加而逐渐拉长,有 10000 个分区时,延迟增加到 41 毫秒,是有 100 个分区时的 13 倍,是 Pulsar 的 8 倍。

  • Pulsar P99 端到端延迟稳定在约 4~6 毫秒之间,增加分区数量仅对 Pulsar P99 端到端延迟产生轻微影响,但即使有 10000 个分区,它也保持在相对较低的水平(24 毫秒以内)。

  • 随着分区数量增加,Kafka P99 端到端延迟逐渐拉长。有 10000 个分区时,Kafka P99 端到端延迟高达 180 秒,是 Pulsar 的 34416 倍。


Ack = 2,异步本地持久性


使用异步本地持久性和同步复制持久性 (ack = 2)更改分区数量时,Pulsar 和 Kafka 发布延迟的差异如图 30。表 16 为每种情况下的精确延迟数值。



图 30 分区数量不同,ack=all/2 的发布延迟(无数据同步)


表 16 分区数量不同,ack=all/2 的实际发布延迟测试结果(无数据同步)


平均值P50P90P99P999
kafka-1003.012.773.978.4715.57
kafka-500019.3310.1640.40121.40336.21
kafka-8000138.1942.52385.861164.902008.28
kafka-10000266.66102.55752.951717.832797.51
pulsar-1002.992.973.964.476.19
pulsar-50003.133.104.174.989.45
pulsar-80003.443.444.645.3612.92
pulsar-100003.323.244.396.1823.10


图 31 和图 32 分别显示了更改分区数量如何影响 Pulsar 和 Kafka 端到端的延迟。



图 31 分区数量不同,ack=2 时 Pulsar 的端到端延迟(无数据同步)



图 32 分区数量不同,ack=2 时 Kafka 的端到端延迟(无数据同步)


从以上图表可以看出:


  • Pulsar P99 发布延迟稳定在约 4~5 毫秒之间,增加分区数量对其并无影响。

  • 随着分区数量增加,Kafka P99 发布延迟逐渐拉长,有 10000 个分区时,其延迟增加到 1.7 秒,是 100 个分区时的 202 倍,是 Pulsar 的 278 倍。

  • Pulsar P99 端到端延迟稳定在约 4~6 毫秒之间,增加分区数量仅对其造成轻微影响,延迟仍保持在相对较低的水平(28 毫秒以内)。

  • 随着分区数量增加,Kafka P99 端到端延迟逐渐拉长。有 10000 个分区时,Kafka P99 端到端延迟增加到 200 秒,是 Pulsar 的 32362 倍。

结论

基于基准测试结果,我们得出以下结论:


  • 纠正配置和调优错误后,Pulsar 与 Kafka 在 Confluent 有限测试用例中实现的端到端延迟基本一致。

  • 在同等持久性保证下,Pulsar 在模拟实际应用场景的工作负载上性能优于 Kafka。

  • 以上测试中,改变了持久性保证设置、订阅、分区和客户端数量,结果表明 Pulsar 在延迟和 I/O 隔离方面均明显优于 Kafka。


原文链接:https://streamnative.io/en/blog/tech/2020-11-09-benchmark-pulsar-kafka-performance-report


相关阅读链接:https://www.infoq.cn/article/xeyeEeNNY5CG0PGyxeVD


Pulsar 用户调研:https://forms.office.com/Pages/ResponsePage.aspx?id=2zjkx2LkIkypCsNYsWmAs96ZDwmey39DhXAvi6EqbJpUNlZWQzRPMlVWNTc1WUcwUE5CWFMyUlI3QS4u

2021-01-28 10:204441

评论 2 条评论

发布
用户头像
延迟的具体时间怎么来的 有用工具吗
2021-07-13 22:00
回复
用户头像
对比的第一件事不是应该提供对比的版本么?难免有喜新厌旧,踩一捧一的感觉。但是感谢愿意花时间做这件事的人,让我能用读一篇文章的时间,get了需要几个小时或者更多,才能得到的结果
2021-05-28 18:37
回复
没有更多了
发现更多内容

Java 踩坑 1|Spring 事务导致多数据源切换失败

itschenxiang

Java’ 业务开发

华为云命令行工具服务KooCLI助力一键管理云资源

华为云PaaS服务小智

云计算 软件开发 华为云

什么是HTML5?HTML5的含义、元素和好处

互联网工科生

html html5

一次说清楚:CAE软件可以做什么?

智造软件

CAE 仿真软件 有限元仿真技术 有限元分析 CAE软件

重塑未来的1课:组装式交付新引擎——智能化低代码平台

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

Hybrid Embedding:蚂蚁集团万亿参数稀疏 CTR 模型解决方案

AI Infra

AI 开发者 海量存储 AI大模型 降本增效

低代码在边缘计算工业软件中的应用

力软低代码开发平台

30多款大模型亮相,现阶段厂商比客户更需要大模型 | WAIC2023探展

TE智库

人工智能 大模型 WAIC

2023年值得学习的六种小众编程语言

互联网工科生

编程语言 开发语言

如果小程序越来越多,是不是会直接代替App?

Onegun

小程序 小程序容器

TDengine 3.0 性能如何?教你一键复现 IoT 场景 TSBS 测试结果

爱倒腾的程序员

PCB防静电设计的必要性

华秋PCB

工具 PCB PCB设计 电压 防静电

浅析华为云Astro的5大关键能力技术

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

用友新一代票据云,实现企业票据“支付找零”

用友BIP

全球司库

华为云5大开源项目发布与更新,助力开发者实现应用创新

华为云开发者联盟

开源 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

云原生技术分享篇丨浅析Istio流量管理

inBuilder低代码平台

云原生

智能制造:低代码开发平台推动数智时代的巨变

EquatorCoco

人工智能 低代码 智能制造 数智化

一文带你上手Servlet

EquatorCoco

Java 前端

极光笔记 | 解锁Web推送的潜力:提升网站收入

极光JIGUANG

网站 营销 消息推送 推送

入选中国数据智能领域 IDC 创新者,柏睿数据创新实力再获肯定

新消费日报

和鲸数据科学专家平台正式成立,凝聚专家资源推进产业数字化升级

ModelWhale

人工智能 数据科学 专家平台 专家资源

软件测试/测试开发丨Mac Appium环境搭建

测试人

程序员 软件测试 Mac appium

盘古大模型加持,华为云开天aPaaS加速使能千行百业应用创新

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

苹果APP安装包ipa如何安装在手机上

ios

软件测试丨Docker环境安装配置(Mac、Windows、Ubuntu)

测试人

Docker ubuntu 软件测试 Mac windows

华为云Astro低代码平台关键能力技术浅析

华为云PaaS服务小智

云计算 软件开发 低代码 华为云

晴数智慧张晴晴博士当选开放群岛开源社区「首席数据科学家」

Geek_2d6073

基于Go语言的滴滴DevOps重塑之路

滴滴技术

DevOps 滴滴技术 #go

Pulsar 和 Kafka 基准测试报告(下)_软件工程_Geek_4a91de_InfoQ精选文章