Pulsar 和 Kafka 基準測試報告(下)

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲了更全面地瞭解 Pulsar 和 Kafka,我們“復現”了 Confluent 對 Pulsar 和 Kafka 基準測試。重複這一基準測試的原因有兩個,一是 Confluent 的測試方法存在一些問題;二是 Confluent 的測試範圍和測試場景不夠全面。爲了更準確地對比 Pulsar 和 Kafka,我們在測試中不僅修復了 Confluent 測試中的問題,還擴大了測試範圍,納入更多性能衡量標準,模擬更多實際場景。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"和 Confluent 的測試相比,我們的測試主要有三項改進:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":1,"normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","text":"包含 Pulsar 和 Kafka 支持的所有持久性級別。在同等持久性級別下,對比二者的吞吐量和延遲。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","text":"引入影響性能的其他因素和測試條件,如分區數量、訂閱數量、客戶端數量等。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"text","text":"測試的混合負載同時包含寫入、追趕讀和追尾讀,模擬實際使用場景。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們進行了最大吞吐量測試、發佈和端到端延遲測試、追趕讀測試和混合工作負載測試("},{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/HS4gtkQjop4q42z13uEv","title":"xxx","type":null},"content":[{"type":"text","text":"詳見上篇"}]},{"type":"text","text":")。由於篇幅有限,本篇主要介紹發佈和端到端延遲測試詳情。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"發佈和端到端延遲測試"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"測試目標:觀測在處理髮布和追尾讀工作負載時 Pulsar 和 Kafka 可實現的最低延遲。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"測試設置:通過調整訂閱數量和分區數量,觀測訂閱數量和分區數量對發佈延遲和端到端延遲的影響。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"測試策略:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"將所有消息都複製三次,確保容錯;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"改變 ack 數量,測試在不同持久性保證下,Pulsar 和 Kafka 吞吐量的差異;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"改變訂閱數量(從 1 到 10),分別測試延遲;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"改變分區數量(從 100 到 10000),分別測試延遲;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"消息大小爲 1KB;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"生產者以 200000\/s(約 200MB\/s)的固定速度發送消息,追尾讀消費者在生產者持續發送消息時處理消息。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"各項測試結果如下。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"#1 100 個分區, 1 個訂閱"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們從 100 個分區、1 個訂閱開始,在所有不同持久性保證下,對 Pulsar 和 Kafka 能實現的最低延遲進行了基準測試。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"測試證明,在所有持久性級別上,Pulsar 的發佈延遲和端到端延遲都比 Kafka 低,是 Kafka 的 1\/5 到 1\/2。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"italic"}],"text":"發佈延遲 - 同步本地持久性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用兩種複製持久性設置(分別爲 ack-1 和 ack-2)和同步本地持久性時,Pulsar 和 Kafka 發佈延遲的差異如圖 10。表 2 爲每種情況下的精確延遲數值。在異步複製持久性(ack-1)下,Pulsar P99 延遲是 Kafka 的 1\/3; 在同步複製持久性(ack-2)下是 Kafka 的 1\/5。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/c8\/1c\/c8828bd53b91aca9a765f5291d20621c.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖10 Pulsar 和 Kafka 的發佈延遲(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"表 2 Pulsar 和 Kafka 的實際發佈延遲測試結果(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
平均值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"}}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲了更深入地瞭解延遲如何隨時間變化,我們繪製了 Pulsar 和 Kafka 採取不同複製持久性設置時的 P99 延遲圖。如圖 11 所示,Pulsar 的延遲比較穩定(約 5 毫秒),但 Kafka 的延遲波動較大。對於關鍵任務服務(mission-critical services)來說,穩定、持續的低延遲至關重要。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/9f\/5b\/9f49d0eabfeb36910b49b74a75d8f85b.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖11 Pulsar 和 Kafka 的 P99 延遲"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"端到端延遲--同步本地持久性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用兩種複製持久性設置(分別爲 ack-1和 ack-2)和同步本地持久性時,Pulsar 和 Kafka 端到端延遲的差異如圖 12。表 3 爲每種情況下的精確延遲數值。在異步複製持久性(ack-1)下,Pulsar P99 端到端延遲是 Kafka 的 1\/3,在同步複製持久性(ack-2)下是 Kafka 的 1\/5。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/7d\/3a\/7d46b026cc1d195e535a47d5f1f42e3a.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖12 1 個訂閱時,Pulsar 和 Kafka 的端到端延遲(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"表 3 1 個訂閱時,Pulsar 和 Kafka 的實際端到端延遲測試結果(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
平均值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"}}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"發佈延遲 - 異步本地持久性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用兩種複製持久性設置(分別爲 ack-1 和 ack-2)和異步本地持久性時,Pulsar 和 Kafka 發佈延遲的差異如圖 13。表 4 爲每種情況下的精確延遲數值。在異步複製持久性(ack-1)下,Kafka 性能更優,但 Pulsar P99 發佈延遲更穩定(低於 5 毫秒),增加複製持久性保證(從 ack-1 到 ack-2)並未影響延遲。在同步複製持久性(ack-2)下,"},{"type":"text","marks":[{"type":"strong"}],"text":"Kafka P99 發佈延遲是 Pulsar 的 2 倍"},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/98\/2b\/98e9918b1b4aee849a6d4d169942792b.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖13 Pulsar 和 Kafka 的發佈延遲(無數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"表 4 Pulsar 和 Kafka 的實際發佈延遲測試結果(無數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
平均值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"}}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲了更深入地瞭解發佈延遲如何隨時間變化,我們繪製了 Pulsar 和 Kafka 在不同複製持久性設置下的 P99 發佈延遲圖。如圖 14 所示,Pulsar 的延遲始終保持在較低的水平(低於 5 毫秒),"},{"type":"text","marks":[{"type":"strong"}],"text":"而 Kafka 的延遲始終是 Pulsar 的 2 倍"},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/86\/ae\/86b22dda18605492ce4344370ae7f1ae.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖14 不同複製持久性設置下,Pulsar 和 Kafka 的 P99 發佈延遲"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"端到端延遲--異步本地持久性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用兩種複製持久性設置(分別爲 ack-1 和 ack-2)和異步本地持久性時,Pulsar 和 Kafka 端到端延遲的差異如圖 15。表 5 爲每種情況下的精確延遲數值。在所有情況下,Pulsar 的性能都優於 Kafka。Pulsar P99 端到端延遲保持穩定(約 5 毫秒),改變複製持久性設置對其並無影響。對於 ack-1,"},{"type":"text","marks":[{"type":"strong"}],"text":"Kafka 的 P99 端到端延遲比 Pulsar 高;對於 ack-2,Kafka 的 P99 端到端延遲是 Pulsar 的 2 倍"},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/4f\/2f\/4fe43f34203a939fd78b4f0e9a94f22f.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖15 1 個訂閱時,Pulsar 和 Kafka 的端到端延遲(無數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"表 5 1 個訂閱時,Pulsar 和 Kafka 的實際端到端延遲測試結果(無數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
平均值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"}}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"#2 100 個分區, 10 個訂閱"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"瞭解 Pulsar 和 Kafka 只有一個訂閱時的性能後,我們想知道更改訂閱數量會如何影響發佈延遲和端到端延遲。於是我們把訂閱數量從 1 增加到 10,併爲每個訂閱分配了 2 個消費者。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從表 6 的數據中可以看出,我們的測試結果表明:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Pulsar P99 發佈延遲和端到端延遲保持在 5 到 10 毫秒之間。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"增加訂閱數量會對 Kafka 的 P99 發佈和端到端延遲產生巨大影響,導致延遲增加到幾秒。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"表 6 10 個訂閱時,發佈和端到端延遲的測試結果"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
發佈延遲端到端延遲
同步本地持久性測試結果測試結果
異步本地持久性測試結果測試結果"}}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"發佈延遲 - 同步本地持久性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用兩種複製持久性設置(分別爲 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)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/16\/d6\/16a6e45bdyyfe063240c59aea7c308d6.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖16 10 個訂閱時,Pulsar 和 Kafka 的發佈延遲(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"表 7 10 個訂閱時,Pulsar 和 Kafka 的實際發佈延遲測試結果(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
平均值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"}}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"端到端延遲--同步本地持久性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用兩種複製持久性設置(分別爲 ack-1和 ack-2)和同步本地持久性時,Pulsar 和 Kafka 端到端延遲的差異如圖 17。表 8 爲每種情況下的精確延遲數值。在異步複製持久性(ack-1)下,Pulsar P99 延遲是 Kafka 的 1\/20,在同步複製持久性(ack-2)下是 Kafka 的 1\/110 。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/ff\/49\/ffba1f49278e1531c4f353c8ae934b49.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖17 10 個訂閱時,Pulsar 和 Kafka 的端到端延遲(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"表 8 10 個訂閱時,Pulsar 和 Kafka 的實際端到端延遲測試結果(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
平均值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"}}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"發佈延遲 - 異步本地持久性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用兩種複製持久性設置(分別爲 ack-1 和 ack-2)和異步本地持久性時,Pulsar 和 Kafka 發佈延遲的差異如圖 18。表 9 爲每種情況下的精確延遲數值。Pulsar 的性能顯著優於 Kafka。Pulsar 的平均發佈延遲約爲 3 毫秒,P99 延遲在 5 毫秒以內。Kafka 在異步複製持久性(ack-1)下性能令人滿意,但在同步複製持久性(ack-2)下性能差了很多。在同步複製持久性下,Kafka 的 P99 發佈延遲是 Pulsar 的 270 倍。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/9a\/2d\/9a63b1e6a8f914c8b23a00dca439872d.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖18 10 個訂閱時,Pulsar 和 Kafka 的發佈延遲(無數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"表 9 10 個訂閱時,Pulsar 和 Kafka 的實際發佈延遲測試結果(無數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
平均值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"}}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"端到端延遲--異步本地持久性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用兩種複製持久性設置(分別爲 ack-1 和 ack-2)和異步本地持久性時,Pulsar 和 Kafka 端到端延遲的差異如圖 19。表 10 爲不同情況下的精確延遲數值。在所有情況下,Pulsar 的性能始終優於 Kafka。Pulsar 的端到端延遲始終保持在 4~7 毫秒之間,改變複製持久性設置對其並無影響。對於 ack-1,Kafka 的 P99 端到端延遲是 Pulsar 的 13 倍;對於ack-2,則是 187 倍。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/6a\/34\/6aaa289389c4a607949fbfdce178df34.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖19 10 個訂閱時,Pulsar 和 Kafka 的端到端延遲(無數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"表 10 10 個訂閱時,實際端到端延遲測試結果(無數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
平均值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"}}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"#3 100, 5000, 8000, 10000 個分區"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"瞭解更改訂閱數量會如何影響 Pulsar 和 Kafka 的發佈延遲後,我們想更改分區數量,看看會產生什麼效果。於是,我們把分區數量從 100 個累加到 10000 個,觀察發生了什麼變化。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"測試數據見表 11,測試結果表明:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"分區數量增加時,Pulsar P99 發佈延遲穩定在 5 毫秒內。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Kafka 的 P99 發佈延遲受分區數量累加影響很大,延遲上升到幾秒。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"分區數量超過 5000 後,Kafka 的消費者就跟不上發佈吞吐量了。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"表 11 不同 ack 和不同持久性下的實際發佈延遲測試結果"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
Ack = 1Ack = 2
同步本地持久性測試結果測試結果
異步本地持久性測試結果測試結果"}}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Ack = 1,同步本地持久性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用同步本地持久性和異步複製持久性 (ack = 1) 更改分區數量時,Pulsar 和 Kafka 發佈和端到端延遲的差異分別如圖 20 和圖 21。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/0b\/e1\/0b6ec2e8afc745a2b96ab46f64c187e1.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖20 分區數量不同,ACK=1 時的發佈延遲(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/8f\/11\/8f7669e4363a3476788ced67f9fd8511.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖21 分區數量不同,ACK=1 時的端到端延遲(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"表 12 顯示了分區數量不同,ACK=1 時的實際發佈延遲測試結果。表 13 顯示了分區數量不同,ACK=1 時的實際端到端延遲測試結果。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"表 12 分區數量不同,ACK=1 時的實際發佈延遲測試結果(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
平均值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"}}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"表 13 分區數量不同,ACK=1 時的實際端到端延遲測試結果(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
平均值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"}}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"圖 22 給出了分區數量不同,ACK=1 時 Pulsar 端到端的延遲。圖 23 給出了分區數量不同,ACK=1 時 Kafka 端到端的延遲。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/dd\/8e\/dd6fc4a2169b5f2c687dd677df95388e.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖22 分區數量不同,ACK=1 時 Pulsar 的端到端延遲(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/f6\/92\/f63a2195bc40c587529aa19b313f5a92.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖23 分區數量不同,ACK=1 時 Kafka 的端到端延遲(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從以上圖表可以看出:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Pulsar P99 發佈延遲穩定在 5 毫秒左右,更改分區數量對其並無影響。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Pulsar P99 端到端延遲穩定在 6 毫秒左右,更改分區數量對其並無影響。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Kafka 的 P99 發佈延遲隨着分區數量增加而逐漸拉長,在 10000 個分區時,其延遲增加了 5 倍(與 100 個分區時相比),比 Pulsar 的延遲高出 10 倍。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Kafka 的 P99 端到端延遲隨着分區數量增加而逐漸拉長,在 10000 個分區時,其延遲高出 10000 倍(與 100 個分區時相比),增加到 180 秒,是 Pulsar 的 280000倍。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Ack = 2,同步本地持久性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用同步本地持久性和同步複製持久性(ack = 2)更改分區數量時,Pulsar 和 Kafka 發佈延遲的差異如圖 24。表 14 爲每種情況下的精切延遲數值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/fc\/4e\/fc16d7dbb7df1dec268914a7aa68c34e.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖24 分區數量不同,ack=2\/all 時的發佈延遲(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"表 14 分區數量不同, ack=2\/all 時的實際發佈延遲測試結果(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
平均值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"}}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"圖 25 和圖 26 分別顯示了更改分區數量如何影響 Pulsar 和 Kafka 端到端的延遲。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/59\/45\/59cfbe12e99465c501510b4e5428e945.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖25 分區數量不同,ack=2 時 Pulsar 的端到端延遲(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/f4\/40\/f45a915c2473d850fb3c775939ff1c40.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖26 分區數量不同,ack=2 時 Kafka 的端到端延遲(數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從以上圖表可以看出:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Pulsar P99 發佈延遲穩定在約 10 毫秒,增加分區數量對其並無影響。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨着分區數量增加,Kafka 的 P99 發佈延遲逐漸拉長;有 10000 個分區時,其延遲是 100 個分區的 30 倍,增加到 1.7 秒,是 Pulsar 的 126 倍。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Pulsar P99 端到端延遲穩定在約 10 毫秒,增加分區數量僅對 Pulsar P99 端到端延遲產生輕微影響。但即使有 10000 個分區,延遲仍相對較低,約爲 50 毫秒。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨着分區數量增加,Kafka 的 P99 端到端延遲逐漸拉長。有 10000 個分區時,Kafka P99 端到端延遲增加到 200 秒,是 Pulsar 的 14771 倍。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Ack = 1, Async 本地持久性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用異步本地持久性和異步複製持久性(ack = 1)更改分區數量時,Pulsar 和 Kafka 發佈延遲的差異如圖 27。表 15 爲不同情況下的精切延遲數值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/0c\/d6\/0c02b4488399e82ce8e6f1674f0038d6.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖27 分區數量不同,ack=1 時的發佈延遲(無數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"表 15 分區數量不同,ack=1 時的實際發佈延遲測試結果(無數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
平均值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"}}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"圖 28 和圖 29 分別顯示了更改分區數量如何影響 Pulsar 和 Kafka 端到端的延遲。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/32\/ac\/329f3651ef8bfe94c210c402702101ac.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖28 分區數量不同,ack=1 時,Pulsar 端到端的延遲(無數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/96\/98\/96e667ac0efd732ffa0yyc0a0448d598.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖29 分區數量不同,ack=1 時,Kafka 端到端的延遲(無數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從以上圖表可以看出:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Pulsar P99 發佈延遲穩定在約 4~5 毫秒之間,增加分區數量對其並無影響。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Kafka P99 發佈延遲隨着分區數量增加而逐漸拉長,有 10000 個分區時,延遲增加到 41 毫秒,是有 100 個分區時的 13 倍,是 Pulsar 的 8 倍。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Pulsar P99 端到端延遲穩定在約 4~6 毫秒之間,增加分區數量僅對 Pulsar P99 端到端延遲產生輕微影響,但即使有 10000 個分區,它也保持在相對較低的水平(24 毫秒以內)。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨着分區數量增加,Kafka P99 端到端延遲逐漸拉長。有 10000 個分區時,Kafka P99 端到端延遲高達 180 秒,是 Pulsar 的 34416 倍。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Ack = 2,異步本地持久性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用異步本地持久性和同步複製持久性 (ack = 2)更改分區數量時,Pulsar 和 Kafka 發佈延遲的差異如圖 30。表 16 爲每種情況下的精確延遲數值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/a7\/e9\/a7a1f13c29956babf847bdb99b6cf0e9.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"圖30 分區數量不同,ack=all\/2 的發佈延遲(無數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"表 16 分區數量不同,ack=all\/2 的實際發佈延遲測試結果(無數據同步)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"embedcomp","attrs":{"type":"table","data":{"content":"
平均值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-10000
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章