本篇文章為大家展示了如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
在羅平等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,成都全網(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)中的一個變量,此外,為了更好地對比二者,測試者還調(diào)整了分區(qū)的數(shù)量。
Apache Pulsar 的測試結(jié)果
小編將詳細(xì)介紹 Apache Pulsar 延遲性的測試結(jié)果。我們會先介紹開啟 fsync 的測試結(jié)果(Pulsar 默認(rèn)的工作方式),再介紹關(guān)閉消息 flush 的測試結(jié)果。
對于每個工作負(fù)載,有兩張圖可供參考:一張圖是測試期間發(fā)布延遲的 p99,另一張圖是平均端到端延遲。另外,這兩張圖后附有在測試期間匯總延遲測量值并整理成的表格,提供延遲分布數(shù)據(jù)。
發(fā)布延遲的百分比計算比端到端延遲更準(zhǔn)確,因?yàn)槎说蕉搜舆t使用的是自動設(shè)置在消息頭中的時間戳,并且該時間戳的精度為毫秒,而發(fā)布延遲的精度為納秒。
所有測試均使用 100 字節(jié)的消息。在 15 分鐘測試期間,僅使用兩個客戶端(生產(chǎn)與消費(fèi))服務(wù)器,且生產(chǎn)速率和消費(fèi)速率恒定為每秒 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ù)量增加時,延遲減小,實(shí)際測試結(jié)果也的確如此??傮w而言,分區(qū)數(shù)量增加,發(fā)布延遲和端到端延遲都減小了。
每次測試中都有異常值,但是延遲最大值始終不超過 267 毫秒。發(fā)布延遲比端到端延遲數(shù)值波動更小。在所有測試中,發(fā)布延遲的 p9999 始終沒有超過 11.6 毫秒。在 16 個分區(qū)的端到端延遲測試中,分區(qū)對延遲的影響最為明顯。16 個分區(qū)測試的平均延遲(3 毫秒)是 1 個分區(qū)測試(9 毫秒)的三分之一。Pulsar 的發(fā)布延遲不隨時間而變化。所有測試運(yùn)行時間均為 15 分鐘。如圖所示,測試期間平均發(fā)布延遲波動很小。端到端延遲隨時間發(fā)生變化,在 90 秒內(nèi),平均延遲波動為 2 毫秒,并且延遲波動值幾乎恒定。例如,端到端延遲的平均值為 1 個分區(qū) 9 毫秒,16 個分區(qū) 3 毫秒,但是變化值始終不超過 2 毫秒(9 毫秒增至 11 毫秒,3 毫秒變?yōu)?5 毫秒)。?????♂?關(guān)閉 fsync 時的延遲測試除了通過在 bookkeeper.conf 文件中設(shè)置 journalSyncData=false,以禁用刷新每條消息到磁盤,并重啟 Pulsar broker 和 BookKeeper 外,其他測試條件均相同。測試 5 :1 個 topic,6 個分區(qū)
測試 6:1 個 topic,16 個分區(qū)
討論
和預(yù)想的一樣,不啟用 Flush 時,延遲減小,但不會減小太多。例如,1 個分區(qū)開啟 Flush 時,p99 的發(fā)布延遲為 4.129 毫秒,而在不開啟 Flush 時,發(fā)布延遲為 3.928 毫秒。在 16 個分區(qū)測試中,是否開啟 Flush 對延遲幾乎沒有影響。在相同時間間隔內(nèi),端到端延遲周期性 2 毫秒的變化值和之前測試中一樣(圖中的波峰處)。禁用 Flush 會損失一些持久性,因此在使用 Apache Pulsar 時,從延遲角度來看,禁用 Flush 并無益處。
由于 Kafka 默認(rèn)關(guān)閉 Flush,所以我們先進(jìn)行此項(xiàng)測試。與 Pulsar 測試一樣,所有測試都使用 100 字節(jié)的消息,消息速率為每秒 5 萬條,僅使用兩個客戶端。在測試期間記錄延遲,并整理成表格。
測試使用的 Apache Kafka 版本為 2.11-2.3.0。
?????♂?關(guān)閉 fsync 時的延遲測試測試 8:1 個 topic,6 個分區(qū)
測試 9:1 個 topic,16 個分區(qū)
討論
首先看一下 1 個分區(qū)情況下的發(fā)布延遲,Kafka 對消息關(guān)閉 Flush 時,延遲小于 Pulsar(刷新時延遲為 2.969 毫秒,不刷新時延遲為 2.72 毫秒)。但是,在延遲分布中,可以看到 Pulsar 和 Kafka 的主要區(qū)別。
Pulsar 的延遲分布更集中,從 p50 到 p999,延遲從 2.916 毫秒增至 4.095 毫秒),而 Kafka 的延遲在 p999 達(dá)到 149.616 毫秒,結(jié)果相差很多。在 1 個分區(qū)的 p99,Pulsar 的延遲為 52.958 毫秒,而 Kafka 的延遲幾乎是 Pulsar 延遲的 4 倍,為 201.701 毫秒。我們在比較默認(rèn)模式下的不同,因此對 Pulsar 啟用 Flush,Kafka 不啟用 Flush。如果禁用 Pulsar 的磁盤 Flush,則 p999的延遲降為僅 4.508 毫秒。觀察 p99 的發(fā)布延遲就會發(fā)現(xiàn),Kafka 測試中出現(xiàn)大量異常值的原因很明顯。當(dāng)發(fā)布延遲從個位數(shù)躍升至 100 毫秒以上時,Kafka 出現(xiàn)了周期性峰值。分區(qū)數(shù)量增加,發(fā)布延遲的變化減小,但仍然存在。將其與 Pulsar 進(jìn)行比較就會發(fā)現(xiàn),整個測試期間,p99 的發(fā)布延遲基本上是一條直線。Pulsar 與 Kafka 之間的另一個不同點(diǎn)在于,分區(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 的測試結(jié)果更好,但在分區(qū)數(shù)量增加時,端到端延遲與發(fā)布延遲相似,都隨之增大。在 16 個分區(qū)測試中,Kafka 的平均端到端延遲為 11 毫秒,而 Pulsar 的平均值則接近 3 毫秒。在 Pulsar 測試中,可以觀察到周期性 2 毫秒的峰值。在 Kafka 測試中,可以看到峰值更為頻繁,且數(shù)值更高,通常在 5 毫秒以上。除了啟用每條消息刷新(fsync),對測試中的每個 topic 進(jìn)行配置(flush.messages=1, flush.ms=0),測試條件與之前完全相同。測試 10:1 個 topic,1 個分區(qū)測試 11:1 個 topic,6 個分區(qū)
測試 12:1 個 topic,16 個分區(qū)
討論
Pulsar 的默認(rèn)模式為啟用 Flush,這組對比測試結(jié)果顯示 Pulsar 表現(xiàn)更好。在 1 個分區(qū)測試中,不啟用 Flush 時,Kafka 表現(xiàn)更好,當(dāng)都設(shè)置為啟用 Flush 時,Pulsar 的平均延遲為 2.969 毫秒,而 Kafka 的平均延遲則超出 Pulsar 的兩倍,為 6.652 毫秒。分區(qū)數(shù)量增加,Kafka 的延遲增大,在 16 個分區(qū)測試中,Pulsar 的延遲為 2.72 毫秒,而 Kafka 的延遲為 18.454 毫秒,超出 Pulsar 測試結(jié)果的 6 倍。當(dāng)配置 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)高達(dá) 5 毫秒的峰值。1. 隨著時間的推移,Pulsar 延遲的可預(yù)測性更高。與 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. 關(guān)閉 fsync,Pulsar 會有更小的延遲,不能保證消息的持久性
對于延遲敏感工作負(fù)載而言,Pulsar 整體表現(xiàn)更好。Pulsar 可以保證一致的低延遲與強(qiáng)持久性。當(dāng)然,并不是所有的工作負(fù)載都對延遲敏感。為提高吞吐量,可能需要承擔(dān)延遲性更高的代價。上述內(nèi)容就是如何進(jìn)行Apache Pulsar 與 Kafka的延遲性比較,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章名稱:如何進(jìn)行ApachePulsar與Kafka的延遲性比較
分享網(wǎng)址:http://jinyejixie.com/article16/ipjedg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站改版、網(wǎng)站制作、域名注冊、ChatGPT、動態(tài)網(wǎng)站
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)