写点什么

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:204353

评论 2 条评论

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

烂怂if-else代码优化方案 | 京东云技术团队

京东科技开发者

Java 代码优化 if-else 企业号 5 月 PK 榜

从2000ms缩短到50ms,亿级ES数据搜索性能调优实践

Java你猿哥

Java elasticsearch ELK ssm ES

软件测试 | 软件开发的几个阶段

测吧(北京)科技有限公司

测试

软件测试中的维恩图详解

测吧(北京)科技有限公司

测试

ClickHouse进阶|如何自研一款企业级高性能网关组件?

字节跳动数据平台

数据库 字节跳动 Clickhouse 企业网关

已膜拜,GitHub大佬的微服务资源库太强了,每份学习手册都优质详细

做梦都在改BUG

Java Kubernetes 微服务 Spring Cloud Spring Boot

软件测试/测试开发丨Web自动化 option 常用操作headless无头浏览器

测试人

程序员 软件测试 自动化测试 测试开发

【云计算】云存储是什么意思?与本地存储有什么区别?

行云管家

云计算 云存储 云管理 云支出

巅峰对谈:迈向 AGI 时代,除了优秀的大模型,还需要什么?丨Fabarta&蓝驰创投

Fabarta

人工智能 图数据库 AI大模型 AGI 图智能

StampedLock:高并发场景下一种比读写锁更快的锁

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 5 月 PK 榜

mac专业矢量绘图设计Sketchv96.3中文激活版

理理

Sketch中文版 Sketch最新版 Sketch破解 Mac矢量图设计

基于数据驱动 U-Net 模型的大气污染物扩散快速预测,提升计算速度近6000倍

飞桨PaddlePaddle

人工智能 深度学习 百度飞桨

软件测试 |JMeter怎样引用函数和变量

测吧(北京)科技有限公司

测试

史上最全MySQL各种锁详解

Java你猿哥

MySQL 乐观锁 悲观锁 事务/行级锁

软件测试 | 测试贯穿整个项目流程

测吧(北京)科技有限公司

测试

完美!啃透P9大佬这份完整版的《并发编程宝典》,成为Offer收割机

做梦都在改BUG

Java 并发编程 高并发

景区共享电动车投放:助力打造智慧景区

共享电单车厂家

共享电单车投放 校园共享电单车 景区共享电动车 共享电动车合作 共享电单车厂家

CleanMyMac闪退怎么办?解决CleanMyMac X闪退

理理

mac系统清理优化软件 CleanMyMac下载 CleanMyMac闪退 CleanMyMac最新版

图解Redis和Zookeeper分布式锁 | 京东云技术团队

京东科技开发者

redis zookeeper 分布式锁 zookeeper分布式锁 企业号 5 月 PK 榜

OpenHarmony 3.2 Release新特性解读之驱动HCS

OpenHarmony开发者

OpenHarmony

你了解LED显示屏的安装方式吗?

Dylan

安装 LED LED显示屏

Cornerstone永久激活版 SVN管理工具Mac版

理理

mac软件下载 SVN管理工具 cornerstone 4 破解版 cornerstone 4许可 cornerstone 4下载

直播预告 | 博睿学院:算法平台底座-数据湖应用

博睿数据

数据湖 可观测性 智能运维 博睿数据 博睿学院

被性能优化撂倒无数次后的顿悟!465页调优笔记助力大厂面试之旅

做梦都在改BUG

Java 性能优化 性能调优

Mac电脑Photoshop 2023 Beta版完美解锁!打字生成图像,Ai绘图功能版!

理理

Ps最新版下载 Photoshop2023破解 Ai绘图

软件测试 | 应用程序签名机制实现的源代码分析

测吧(北京)科技有限公司

测试

软件测试 | JMeter函数和变量

测吧(北京)科技有限公司

测试

Wallys/Qualcomm network chip/ipq9574/ipq9554/wireless connectivity solutions.

Cindy-wallys

ipq9554 ipq9574

万众瞩目的Nautilus Chain即将上线主网,生态正式起航

鳄鱼视界

【堡垒机】云堡垒机可以安装在外部数据库上吗?

行云管家

数据库 IT运维 云堡垒机 运维安全

C端用户体验度量实战篇-京东快递小程序体验度量全面升级 | 京东云技术团队

京东科技开发者

用户体验 用户体验设计 企业号 5 月 PK 榜 京东小程序

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