Pulsar vs Kafka?一文掌握高效能訊息元件Pulsar基礎知識
什麼是Pulsar?
Apache Pulsar 是 Apache 軟體基金會頂級專案,是下一代 雲原生 分散式訊息流平臺,集訊息、儲存、輕量化函式式計算為一體,採用計算與儲存分離架構設計,支援多租戶、持久化儲存、多機房跨區域資料複製,具有強一致性、高吞吐以及低延時的高可擴充套件流資料儲存特性。
Pulsar 的關鍵特性
- Pulsar 的單個例項原生支援多個叢集,可跨機房在叢集間無縫地完成訊息複製。
- 極低的釋出延遲和端到端延遲。
- 可無縫擴充套件到超過 一百萬 個 topic。
- 簡單的客戶端 API,支援 Java、Go、Python 和 C++。
- 支援多種 topic 訂閱模式(獨佔訂閱、共享訂閱、故障轉移訂閱)。
- 通過 Apache BookKeeper 提供的持久化訊息儲存機制保證訊息傳遞 。
- 由輕量級的 serverless 計算框架 Pulsar Functions 實現流原生的資料處理。
- 基於 Pulsar Functions 的 serverless connector 框架 Pulsar IO 使得資料更易移入、移出 Apache Pulsar。
- 分層式儲存可在資料陳舊時,將資料從熱儲存解除安裝到冷/長期儲存(如S3、GCS)中。
Pulsar vs Kafka
下方連結為 Pulsar與 Kafka詳細對比報告,可自行下載檢視
https://streamnative.io/en/blog/tech/2020-07-08-pulsar-vs-kafka-part-1
https://streamnative.io/zh/blog/tech/2020-07-22-pulsar-vs-kafka-part-2
-
效能與可用性
基準測試(StreamNative)
資料來源
https://mp.weixin.qq.com/s/UZJTOEpzX8foUJv9XMJxOw
https://streamnative.io/en/blog/tech/2020-11-09-benchmark-pulsar-kafka-performance
https://streamnative.io/whitepaper/benchmark-pulsar-vs-kafka
- 吞吐量(Throughput)
在與 Kafka 的永續性保證相同的情況下, Pulsar 可達到 605 MB /s 的釋出和端到端 吞吐量 (與 Kafka 相同)以及 3.5 GB/s 的 catch-up read 吞吐量(比 Kafka 高 3.5 倍)。Pulsar 的吞吐量不會因分割槽數量的增加和永續性級別的改變而受到影響,而 Kafka 的吞吐量會因分割槽數量或永續性級別的改變而受到嚴重影響。
- 延遲性(Latency)
在不同的測試例項(包括不同訂閱數量、不同主題數量和不同永續性保證)中,Pulsar 的延遲顯著低於 Kafka。Pulsar P99 延遲在 5 到 15 毫秒之間。Kafka P99 延遲可能長達數秒,並且會因主題數量、訂閱數量和不同永續性保證而受到巨大影響。
-
功能性
- 多語言客戶端(C/C++、Python、Java、Go ...)
- 管理工具(Pulsar Manager vs Kafka Manager)
- 內建流處理Built-In Stream Processing(Pulsar Function vs Kafka Streams)
- Rich Integrations (Pulsar Connectors)
- Exactly-Once Processing
- 日誌壓縮
- 多租戶(Pulsar)
- 安全管理(Pulsar)
架構設計
Pulsar 採用儲存和計算分離的軟體架構。 在訊息領域,Pulsar 是第一個將儲存計算分離 雲原生 架構落地的 開源 專案 。由於在 Broker 層不儲存任何資料,這種架構為使用者帶來了更高的可用性、更靈活的擴容和管理、避免資料的 reblance 和 catch-up。
在 Apache Pulsar 的分層架構中,服務層 Broker 和儲存層 BookKeeper 的每個節點都是對等的。Broker 僅僅負責訊息的服務支援,不儲存資料。這為服務層和儲存層提供了瞬時的節點擴充套件和無縫的失效恢復。
持久化儲存(Persistent storage)
Pulsar 使用 BookKeeper 分散式日誌儲存資料庫作為儲存元件,在底層使用日誌作為儲存模型。
Pulsar 將所有未確認訊息(即未處理訊息)儲存在 BookKeeper 中的多個“bookie”伺服器上。
BookKeeper 通過 Quorum Vote 的方式來實現資料的一致性,跟 Master/Slave 模式不同,BookKeeper 中每個節點也是對等的,對一份資料會 併發 地同時寫入指定數目的儲存節點。
一個Topic實際上是一個ledgers流。Ledger本身就是一個日誌。所以一系列的子日誌(Ledgers)組成了一個父日誌(Topic)。
Ledgers追加到一個Topic,條目(訊息或者一組訊息)追加到Ledgers。Ledger一旦關閉是不可變的。Ledger作為最小的刪除單元,也就是說我們不能刪除單個條目而是去刪除整個Ledger。
Ledgers本身也被分解為多個Fragment。Fragment是BookKeeper叢集中最小的分佈單元。
每個Ledger(由一個或多個Fragment組成)可以跨多個BookKeeper節點(Bookies)進行復制,以實現資料容災和提升讀取效能。每個Fragment都在一組不同的Bookies中複製(存在足夠的Bookies)。
conf/bookkeeper.conf
#############################################################################
## Server parameters
#############################################################################
# Directories BookKeeper outputs its write ahead log.
# Could define multi directories to store write head logs, separated by ','.
journalDirectories=/data/appData/pulsar/bookkeeper/journal
#############################################################################
## Ledger storage settings
#############################################################################
# Directory Bookkeeper outputs ledger snapshots
# could define multi directories to store snapshots, separated by ','
ledgerDirectories=/data/appData/pulsar/bookkeeper/ledgers
conf/broker.conf
### --- Managed Ledger --- ###
# Number of bookies to use when creating a ledger
managedLedgerDefaultEnsembleSize=2
# Number of copies to store for each message
managedLedgerDefaultWriteQuorum=2
# Number of guaranteed copies (acks to wait before write is complete)
managedLedgerDefaultAckQuorum=2
元資料儲存(Metadata storage)
Pulsar 和BookKeeper都使用Apache Zookeeper 來儲存元資料和監控節點健康狀況。
$ $PULSAR_HOME/bin/pulsar zookeeper-shell
> ls /
[admin, bookies, counters, ledgers, loadbalance, managed-ledgers, namespace, pulsar, schemas, stream, zookeeper]
更多福利
雲智慧已開源集輕量級、聚合型、智慧運維為一體的綜合運維管理平臺OMP(Operation Management Platform) ,具備 納管、部署、監控、巡檢、自愈、備份、恢復 等功能,可為使用者提供便捷的運維能力和業務管理,在提高運維人員等工作效率的同時,極大提升了業務的連續性和安全性。點選下方地址連結,歡迎大家給OMP點贊送star,瞭解更多相關內容~
GitHub地址: https://github.com/CloudWise-OpenSource/OMP
Gitee地址:https://gitee.com/CloudWise/OMP
微信掃描識別下方二維碼,備註【OMP】加入AIOps社群運維管理平臺OMP開發者交流群,與更多行業大佬一起交流學習~
- 提升使用者體驗與搜尋引擎排名|網頁效能監控實操詳解
- 快速掌握網站監控關鍵資料:儀表盤的建立與管理
- 實戰|網站監控如何做好監測點管理與內網資料採集
- 如何分析網站監控中的資料報表,都有哪些關鍵資訊?
- 深入淺出玩轉監控寶(三)|網站監控之分析監控結果
- 深入淺出玩轉監控寶|網站監控之管理網站監控任務
- 深入淺出玩轉監控寶|網站監控之建立網站監控任務
- 通過應用場景深度理解監控寶在業務中的實踐價值
- 新一代 IT 服務管理平臺 DOSM,助力企業數字化轉型
- 降本增效|網站效能監控平臺監控寶背後功能揭祕
- 【中國信通院|低程式碼·無程式碼應用沙龍】低程式碼平臺在雲智慧的實踐探索
- 超詳細 Clickhouse 負載過高問題快速排查思路教程
- 乾貨|僅需3步完成酷炫資料視覺化大屏製作!
- 行業方案|“醫療”行業智慧運維解決方案介紹
- 行業方案|“機場”行業智慧運維解決方案介紹
- “高校”行業智慧運維解決方案解析(含落地實踐)
- 深度解析智慧運維場景下“港口行業”解決方案
- FlyFish 開發者說|開源低程式碼平臺的體驗與思考
- 資料視覺化系列教程之元件通訊
- 資料視覺化系列教程之React元件使用技巧