如何進行ApachePulsar與Kafka的延遲性比較

本篇文章為大家展示了如何進行Apache Pulsar 與 Kafka的延遲性比較,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

在羅平等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供做網(wǎng)站、成都網(wǎng)站設計 網(wǎng)站設計制作定制開發(fā),公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,高端網(wǎng)站設計,成都全網(wǎng)營銷推廣,外貿(mào)網(wǎng)站建設,羅平網(wǎng)站建設費用合理。

重點討論 Pulsar 與 Kafka 的延遲性

下面將詳細介紹 Pulsar 與 Kafka 的測試結果(下圖紅色內(nèi)容)。Fsync 狀態(tài)是實驗中的一個變量,此外,為了更好地對比二者,測試者還調(diào)整了分區(qū)的數(shù)量。

如何進行Apache Pulsar 與 Kafka的延遲性比較


  Apache Pulsar 的測試結果  

小編將詳細介紹 Apache Pulsar 延遲性的測試結果。我們會先介紹開啟 fsync 的測試結果(Pulsar 默認的工作方式),再介紹關閉消息 flush 的測試結果。

對于每個工作負載,有兩張圖可供參考:一張圖是測試期間發(fā)布延遲的 p99,另一張圖是平均端到端延遲。另外,這兩張圖后附有在測試期間匯總延遲測量值并整理成的表格,提供延遲分布數(shù)據(jù)。

發(fā)布延遲的百分比計算比端到端延遲更準確,因為端到端延遲使用的是自動設置在消息頭中的時間戳,并且該時間戳的精度為毫秒,而發(fā)布延遲的精度為納秒。

所有測試均使用 100 字節(jié)的消息。在 15 分鐘測試期間,僅使用兩個客戶端(生產(chǎn)與消費)服務器,且生產(chǎn)速率和消費速率恒定為每秒 5 萬條消息。測試使用的 Apache Pulsar 版本為 2.4.0。

開啟 fsync 時的延遲測試  

測試 1:1 個 topic,1 個分區(qū)

如何進行Apache Pulsar 與 Kafka的延遲性比較  
如何進行Apache Pulsar 與 Kafka的延遲性比較

如何進行Apache Pulsar 與 Kafka的延遲性比較

測試 2:1 個 topic,6 個分區(qū)

如何進行Apache Pulsar 與 Kafka的延遲性比較
如何進行Apache Pulsar 與 Kafka的延遲性比較

如何進行Apache Pulsar 與 Kafka的延遲性比較


測試 3:1 個 topic,16 個分區(qū)

如何進行Apache Pulsar 與 Kafka的延遲性比較
如何進行Apache Pulsar 與 Kafka的延遲性比較

如何進行Apache Pulsar 與 Kafka的延遲性比較
討論

由于在 Pulsar 和 Kafka 中,分區(qū)都是并行單位,我們期待在分區(qū)數(shù)量增加時,延遲減小,實際測試結果也的確如此??傮w而言,分區(qū)數(shù)量增加,發(fā)布延遲和端到端延遲都減小了。

每次測試中都有異常值,但是延遲最大值始終不超過 267 毫秒。發(fā)布延遲比端到端延遲數(shù)值波動更小。在所有測試中,發(fā)布延遲的 p9999 始終沒有超過 11.6 毫秒。在 16 個分區(qū)的端到端延遲測試中,分區(qū)對延遲的影響最為明顯。16 個分區(qū)測試的平均延遲(3 毫秒)是 1 個分區(qū)測試(9 毫秒)的三分之一。

Pulsar 的發(fā)布延遲不隨時間而變化。所有測試運行時間均為 15 分鐘。如圖所示,測試期間平均發(fā)布延遲波動很小。端到端延遲隨時間發(fā)生變化,在 90 秒內(nèi),平均延遲波動為 2 毫秒,并且延遲波動值幾乎恒定。例如,端到端延遲的平均值為 1 個分區(qū) 9 毫秒,16 個分區(qū) 3 毫秒,但是變化值始終不超過 2 毫秒(9 毫秒增至 11 毫秒,3 毫秒變?yōu)?5 毫秒)。

?????♂?關閉 fsync 時的延遲測試

除了通過在 bookkeeper.conf 文件中設置 journalSyncData=false,以禁用刷新每條消息到磁盤,并重啟 Pulsar broker 和 BookKeeper 外,其他測試條件均相同。

測試 4:1 個 topic,1 個分區(qū)

如何進行Apache Pulsar 與 Kafka的延遲性比較
如何進行Apache Pulsar 與 Kafka的延遲性比較

如何進行Apache Pulsar 與 Kafka的延遲性比較
測試 5 :1 個 topic,6 個分區(qū)

如何進行Apache Pulsar 與 Kafka的延遲性比較
如何進行Apache Pulsar 與 Kafka的延遲性比較

如何進行Apache Pulsar 與 Kafka的延遲性比較
測試 6:1 個 topic,16 個分區(qū)

如何進行Apache Pulsar 與 Kafka的延遲性比較
如何進行Apache Pulsar 與 Kafka的延遲性比較

如何進行Apache Pulsar 與 Kafka的延遲性比較
討論
和預想的一樣,不啟用 Flush 時,延遲減小,但不會減小太多。例如,1 個分區(qū)開啟 Flush 時,p99 的發(fā)布延遲為 4.129 毫秒,而在不開啟 Flush 時,發(fā)布延遲為 3.928 毫秒。在 16 個分區(qū)測試中,是否開啟 Flush 對延遲幾乎沒有影響。在相同時間間隔內(nèi),端到端延遲周期性 2 毫秒的變化值和之前測試中一樣(圖中的波峰處)。

禁用 Flush 會損失一些持久性,因此在使用 Apache Pulsar 時,從延遲角度來看,禁用 Flush 并無益處。



  Apache Kafka 的測試結果    

由于 Kafka 默認關閉 Flush,所以我們先進行此項測試。與 Pulsar 測試一樣,所有測試都使用 100 字節(jié)的消息,消息速率為每秒 5 萬條,僅使用兩個客戶端。在測試期間記錄延遲,并整理成表格。  測試使用的 Apache Kafka 版本為 2.11-2.3.0。

?????♂?關閉 fsync 時的延遲測試

測試 7:1 個 topic,1 個分區(qū)

如何進行Apache Pulsar 與 Kafka的延遲性比較
如何進行Apache Pulsar 與 Kafka的延遲性比較
如何進行Apache Pulsar 與 Kafka的延遲性比較
測試 8:1 個 topic,6 個分區(qū)

如何進行Apache Pulsar 與 Kafka的延遲性比較
如何進行Apache Pulsar 與 Kafka的延遲性比較

如何進行Apache Pulsar 與 Kafka的延遲性比較
測試 9:1 個 topic,16 個分區(qū)

如何進行Apache Pulsar 與 Kafka的延遲性比較
如何進行Apache Pulsar 與 Kafka的延遲性比較

如何進行Apache Pulsar 與 Kafka的延遲性比較
討論
首先看一下 1 個分區(qū)情況下的發(fā)布延遲,Kafka 對消息關閉 Flush 時,延遲小于 Pulsar(刷新時延遲為 2.969 毫秒,不刷新時延遲為 2.72 毫秒)。但是,在延遲分布中,可以看到 Pulsar 和 Kafka 的主要區(qū)別。

Pulsar 的延遲分布更集中,從 p50 到 p999,延遲從 2.916 毫秒增至 4.095 毫秒),而 Kafka 的延遲在 p999 達到 149.616 毫秒,結果相差很多。在 1 個分區(qū)的 p99,Pulsar 的延遲為 52.958 毫秒,而 Kafka 的延遲幾乎是 Pulsar 延遲的 4 倍,為 201.701 毫秒。我們在比較默認模式下的不同,因此對 Pulsar 啟用 Flush,Kafka 不啟用 Flush。如果禁用 Pulsar 的磁盤 Flush,則 p999的延遲降為僅 4.508 毫秒。

觀察 p99 的發(fā)布延遲就會發(fā)現(xiàn),Kafka 測試中出現(xiàn)大量異常值的原因很明顯。當發(fā)布延遲從個位數(shù)躍升至 100 毫秒以上時,Kafka 出現(xiàn)了周期性峰值。分區(qū)數(shù)量增加,發(fā)布延遲的變化減小,但仍然存在。將其與 Pulsar 進行比較就會發(fā)現(xiàn),整個測試期間,p99 的發(fā)布延遲基本上是一條直線。

Pulsar 與 Kafka 之間的另一個不同點在于,分區(qū)數(shù)量增加,Pulsar 的發(fā)布延遲減小,而 Kafka 的發(fā)布延遲增大。雖然在 1 個分區(qū)測試中,Kafka 的平均發(fā)布延遲比 Pulsar 低,但在 6 個分區(qū)和 16 個分區(qū)測試中,Pulsar 的發(fā)布延遲更低。在 16 個分區(qū)測試中,Pulsar 的平均發(fā)布延遲小于 3 毫秒,而 Kafka 的平均發(fā)布延遲則約為 8.5 毫秒。

再看平均端到端延遲,1 個分區(qū)測試中,Kafka 的測試結果更好,但在分區(qū)數(shù)量增加時,端到端延遲與發(fā)布延遲相似,都隨之增大。在 16 個分區(qū)測試中,Kafka 的平均端到端延遲為 11 毫秒,而 Pulsar 的平均值則接近 3 毫秒。在 Pulsar 測試中,可以觀察到周期性 2 毫秒的峰值。在 Kafka 測試中,可以看到峰值更為頻繁,且數(shù)值更高,通常在 5 毫秒以上。

?????♂?  開啟 fsync 時的延遲測試

除了啟用每條消息刷新(fsync),對測試中的每個 topic 進行配置(flush.messages=1, flush.ms=0),測試條件與之前完全相同。

測試 10:1 個 topic,1 個分區(qū)

如何進行Apache Pulsar 與 Kafka的延遲性比較
如何進行Apache Pulsar 與 Kafka的延遲性比較
如何進行Apache Pulsar 與 Kafka的延遲性比較
測試 11:1 個 topic,6 個分區(qū)

 
如何進行Apache Pulsar 與 Kafka的延遲性比較
如何進行Apache Pulsar 與 Kafka的延遲性比較
如何進行Apache Pulsar 與 Kafka的延遲性比較
測試 12:1 個 topic,16 個分區(qū)

 
如何進行Apache Pulsar 與 Kafka的延遲性比較
如何進行Apache Pulsar 與 Kafka的延遲性比較

如何進行Apache Pulsar 與 Kafka的延遲性比較
討論
Pulsar 的默認模式為啟用 Flush,這組對比測試結果顯示 Pulsar 表現(xiàn)更好。在 1 個分區(qū)測試中,不啟用 Flush 時,Kafka 表現(xiàn)更好,當都設置為啟用 Flush 時,Pulsar 的平均延遲為 2.969 毫秒,而 Kafka 的平均延遲則超出 Pulsar 的兩倍,為 6.652 毫秒。

分區(qū)數(shù)量增加,Kafka 的延遲增大,在 16 個分區(qū)測試中,Pulsar 的延遲為 2.72 毫秒,而 Kafka 的延遲為 18.454 毫秒,超出 Pulsar 測試結果的 6 倍。

當配置 Kafka 為啟用 Flush 時,仍然會出現(xiàn)較大的發(fā)布延遲峰值,不過發(fā)生頻率不高。

在 Kafka 中,啟用 Flush 會增加端到端延遲。Kafka 在 1 個分區(qū)中表現(xiàn)更好(7.129毫秒 vs 9.052 毫秒),而 Pulsar 在 6 個分區(qū)和 16 個分區(qū)中表現(xiàn)更好。隨著時間的推移,Kafka 的端到端延遲會出現(xiàn)高達 5 毫秒的峰值。

  總結  

基于以上測試結果,總結如下:

1. 隨著時間的推移,Pulsar 延遲的可預測性更高。與 Kafka 相比,Pulsar 延遲隨時間變化的曲線更平滑。對比圖表(6 個分區(qū),平均端到端延遲,不刷新)顯示,Kafka 的延遲低于 Pulsar,但是 Pulsar 的延遲值更為穩(wěn)定。

如何進行Apache Pulsar 與 Kafka的延遲性比較

2. Pulsar 的延遲變化不大。Kafka 測試顯示,大多數(shù)情況下,p999 延遲增加。而在 Pulsar 測試中,只有極少數(shù)情況下,延遲的 p999 會增加。對比圖表(6 個分區(qū),p99 的發(fā)布延遲,開啟 fsync)顯示,與 Kafka 相比,Pulsar 的延遲值更穩(wěn)定。

3. 在使用單一 producer 和單一 consumer 時,Pulsar topic 分區(qū)數(shù)量增加,延遲減??;Kafka topic 分區(qū)數(shù)量增加,延遲增大。

4. 在最高的要求消息要持久化的前提下(保證不丟消息),Pulsar 的延遲低于 Kafka。

5. 關閉 fsync,Pulsar 會有更小的延遲,不能保證消息的持久性


對于延遲敏感工作負載而言,Pulsar 整體表現(xiàn)更好。Pulsar 可以保證一致的低延遲與強持久性。當然,并不是所有的工作負載都對延遲敏感。為提高吞吐量,可能需要承擔延遲性更高的代價。

上述內(nèi)容就是如何進行Apache Pulsar 與 Kafka的延遲性比較,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章名稱:如何進行ApachePulsar與Kafka的延遲性比較
分享網(wǎng)址:http://muchs.cn/article16/ipjedg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站改版、網(wǎng)站制作、域名注冊、ChatGPT、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)