如何進(jìn)行ApachePulsar與Kafka的延遲性比較

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

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

重點(diǎn)討論 Pulsar 與 Kafka 的延遲性

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

如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較


  Apache Pulsar 的測試結(jié)果  

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

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

發(fā)布延遲的百分比計(jì)算比端到端延遲更準(zhǔn)確,因?yàn)槎说蕉搜舆t使用的是自動(dòng)設(shè)置在消息頭中的時(shí)間戳,并且該時(shí)間戳的精度為毫秒,而發(fā)布延遲的精度為納秒。

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

開啟 fsync 時(shí)的延遲測試  

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

如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較  
如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較

如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較

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

如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較
如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較

如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較


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

如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較
如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較

如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較
討論

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

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

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

?????♂?關(guān)閉 fsync 時(shí)的延遲測試

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

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

如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較
如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較

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

如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較
如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較

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

如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較
如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較

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

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



  Apache Kafka 的測試結(jié)果    

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

?????♂?關(guān)閉 fsync 時(shí)的延遲測試

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

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

如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較
如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較

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

如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較
如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較

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

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

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

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

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

?????♂?  開啟 fsync 時(shí)的延遲測試

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

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

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

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

 
如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較
如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較

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

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

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

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

  總結(jié)  

基于以上測試結(jié)果,總結(jié)如下:

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

如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較

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

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

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

5. 關(guān)閉 fsync,Pulsar 會(huì)有更小的延遲,不能保證消息的持久性


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

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

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

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

廣告

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

微信小程序開發(fā)