本篇文章為大家展示了如何進行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 的測試結果
小編將詳細介紹 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ū)
測試 2:1 個 topic,6 個分區(qū)
測試 3:1 個 topic,16 個分區(qū)
討論
由于在 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 毫秒)。除了通過在 bookkeeper.conf 文件中設置 journalSyncData=false,以禁用刷新每條消息到磁盤,并重啟 Pulsar broker 和 BookKeeper 外,其他測試條件均相同。測試 5 :1 個 topic,6 個分區(qū)
測試 6:1 個 topic,16 個分區(qū)
討論
和預想的一樣,不啟用 Flush 時,延遲減小,但不會減小太多。例如,1 個分區(qū)開啟 Flush 時,p99 的發(fā)布延遲為 4.129 毫秒,而在不開啟 Flush 時,發(fā)布延遲為 3.928 毫秒。在 16 個分區(qū)測試中,是否開啟 Flush 對延遲幾乎沒有影響。在相同時間間隔內(nèi),端到端延遲周期性 2 毫秒的變化值和之前測試中一樣(圖中的波峰處)。禁用 Flush 會損失一些持久性,因此在使用 Apache Pulsar 時,從延遲角度來看,禁用 Flush 并無益處。
由于 Kafka 默認關閉 Flush,所以我們先進行此項測試。與 Pulsar 測試一樣,所有測試都使用 100 字節(jié)的消息,消息速率為每秒 5 萬條,僅使用兩個客戶端。在測試期間記錄延遲,并整理成表格。
測試使用的 Apache Kafka 版本為 2.11-2.3.0。
測試 8:1 個 topic,6 個分區(qū)
測試 9:1 個 topic,16 個分區(qū)
討論
首先看一下 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),對測試中的每個 topic 進行配置(flush.messages=1, flush.ms=0),測試條件與之前完全相同。測試 10:1 個 topic,1 個分區(qū)測試 11:1 個 topic,6 個分區(qū)
測試 12:1 個 topic,16 個分區(qū)
討論
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)定。
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)