微服務基準測試:Chronicle Queue比Kafka快750倍?
比較 Chronicle Queue 和 Apache Kafka 的一個有趣的基準測試,請注意:對於極其重視低延遲應用程式,kafka 可能不是最佳適合工具,Kafka適合高吞吐量和大資料可擴充套件的應用。
Apache Kafka 是服務間通訊的常見選擇。Kafka便於訊息的並行處理,是日誌聚合的不錯選擇。Kafka號稱是低延遲、高吞吐量。但是,對於雲中的許多微服務應用程式,Kafka 是否足夠快?
當我編寫Chronicle Queue Open Source時,我的目標是開發一個具有微秒延遲的訊息傳遞框架,世界各地的銀行都將其用於延遲敏感的交易系統。
在本文中,我將描述 Kafka 如何在吞吐量方面不像微服務應用程式的 Chronicle Queue 那樣容易擴充套件。即使在吞吐量較低的情況下,Chronicle Queue 的速度也提高了大約750 倍。
使用 Chronicle 的微服務延遲:在 500 kmsg/s 時,Chronicle Queue Enterprise 的 99%ile 單個微服務端到端延遲為 3.69 微秒
使用 Kafka 的微服務延遲:使用 Kafka 進行相同的測試,但在 100 kmsg/s 的較低吞吐量下,99%ile 單階段微服務端到端延遲約為 2633 微秒(從 150kmsg/s 開始,延遲急劇增加)。
Kafka 最初是為日誌聚合而設計的。它有許多聯結器,對於這個用例,它做得很好。我測量了良好的結果,表明使用 Kafka 代替典型系統中的日誌檔案寫入可以提高效能並顯著提高可管理性。
測試場景
在每種情況下,使用相同的測試硬度。一切都部署在執行 Ubuntu 21.04 的 Ryzen 9 5950X 上。所有測試均使用相同的 MP600 PRO XT 2TB M.2 NVMe 驅動器。基準測試的來源可在此處獲得。https://github.com/OpenHFT/Microservice-Benchmark
對於微服務基準測試:
- 新增高解析度時間戳 (System.nanoTime())
- 序列化第一條訊息
- 釋出第一條訊息
- 消費第一條訊息
- 反序列化第一條訊息
- 呼叫微服務
- 新增第二個高解析度時間戳
- 序列化另一個主題/佇列上的第二條訊息
- 釋出第二條訊息
- 消費者第二條訊息
- 反序列化第二條訊息。
- 記錄端到端延遲
注意:生成的每條訊息都會建立第二條訊息作為響應,因此與單跳訊息傳遞基準相比,實際訊息數量翻了一番。
.....
更多點選標題見原文圖表
結論:
雖然 Kafka 是日誌聚合的不錯選擇,但由於其相對較高的端到端延遲,對於許多涉及微服務的用例而言,它的延遲可能不夠低。
Chronicle Queue 開源在超過 99.99% 的時間內實現了低於 100 微秒的一致延遲,而 Kafka 即使在吞吐量的 1/5 時也有 7 毫秒的異常值。
Chronicle Queue Enterprise 具有其他功能,可在超過 99.99% 的情況下將延遲與低於 10 微秒的延遲保持一致。
相關文章
- hadoop基準測試_Hadoop TeraSort基準測試Hadoop
- MySQL效能基準測試對比:5.7 VS 8.0MySql
- 基準測試
- 微服務測試之效能測試微服務
- TGI 基準測試
- benchmark 基準測試
- MinkowskiEngine基準測試
- 開發者測試(4)-採用精準測試工具對dubbo微服務應用進行測試微服務
- 微服務測試之介面測試和契約測試微服務
- 開發者測試(3)-採用精準測試工具對springcloud微服務應用進行穿透測試SpringGCCloud微服務穿透
- 微服務訊息代理比較:Redis vs Kafka vs RabbitMQ - Mertcan微服務RedisKafkaMQ
- MYSQL 效能測試方法 - 基準測試(benchmarking)MySql
- 你還在手撕微服務?快試試 go-zero 的微服務自動生成微服務Go
- Java 11究竟比8快了多少?看看這個基準測試Java
- OpenJDK 11 究竟比 8 快了多少?看看這個基準測試JDK
- 隨行付微服務測試之效能測試微服務
- 【星雲測試】Devops微服務架構下具有程式碼級穿透能力的精準測試dev微服務架構穿透
- 【星雲測試】開發者測試(3)-採用精準測試工具對springcloud微服務應用進行穿透測試SpringGCCloud微服務穿透
- [轉帖]sysbench基準測試
- 【基準測試】BenchmarkDotNet介紹
- MySQL學習 - 基準測試MySql
- JMH- benchmark基準測試
- postgresql:pgbench基準效能測試SQL
- Java微服務應用測試,走起Java微服務
- Devops微服務架構下具有程式碼級穿透能力的精準測試dev微服務架構穿透
- 隨行付微服務測試之介面測試和契約測試微服務
- PostgreSQL TPROC-C基準測試:PostgreSQL 12與PostgreSQL 13效能對比SQL
- 微服務中的Kafka與Micronaut微服務Kafka
- Lettuce和Jedis的基準測試
- ubuntu 快速測試 cpu 基準水平Ubuntu
- Linkerd和Istio基準測試 - linkerd
- Kafka效能測試Kafka
- 使用Chronicle Queue建立低延遲的TB級別的佇列 - DZone佇列
- 微服務02 Kafka訊息佇列, Dubbo, Springcloud微服務框架, Nacos微服務Kafka佇列SpringGCCloud框架
- Apache Pulsar 與 Kafka 效能比較:延遲性(測試方法)ApacheKafka
- 技術基礎 | Apache Cassandra 4.0基準測試Apache
- 公有云RDS-MySQL基準測試MySql
- 使用 JMH 做 Kotlin 的基準測試Kotlin