為什麼要選擇Apache Pulsar:IO隔離

AI前線發表於2019-03-04

本文由 「AI前線」原創,原文連結:為什麼要選擇Apache Pulsar:IO隔離
作者|Matteo Merli & Karthik Ramasamy
譯者|薛命燈
編輯|Emily

AI 前線導讀:”這是介紹 Apache Pulsar 關鍵特性系列文章的第二篇。Pulsar 是由 Yahoo 開發並開源的下一代釋出訂閱訊息系統。在第一篇文章《為什麼要選擇Apache Pulsar》裡,我們介紹了 Pulsar 對訊息模型的靈活支援、多租戶、多地域複製和永續性。在這一篇文章裡,我們將繼續介紹 Pulsar 的 IO 隔離機制、伸縮性、安全模型、多語言 API 和易操作性。”

讀寫 IO 隔離

在大多數訊息系統裡,消費者的速度延遲會導致效能下降。同一個主題的消費者,如果其中一個出現速度延遲,就會影響到其他速度更快的消費者。這是因為慢消費者強制要求訊息系統從儲存裡獲取資料,導致 IO 出現抖動,降低吞吐量。那些需要將資料先載入到記憶體裡的消費者就會受到影響。導致這一問題的原因主要是讀操作和寫操作共享同一個執行路徑。

Pulsar 通過使用 BookKeeper 作為儲存系統解決了這一問題。有了 BookKeeper,Pulsar 就可以為讀操作和寫操作提供不同的執行路徑,實現 IO 隔離。常規的讀操作直接由 Pulsar broker 處理,寫操作使用 BookKeeper 的預寫式日誌(WAL),Catch-up 讀使用 BookKeeper 的後端儲存裝置。

對於系統中訊息的釋出,在任何情況下都能提供可控的,可預計的延遲是十分重要的。有了 IO 隔離,即使在磁碟承受高負載的讀操作時,仍然能夠保證訊息的釋出延遲是很低的、可以預計的。

伸縮性

訊息系統的可伸縮性也是很重要的。釋出訂閱訊息系統的伸縮性可以從以下幾個維度來衡量:

高吞吐量——Pulsar 的高吞吐量,通過最大限度的使用磁碟頻寬(IOPS)來實現。吞吐量取決於訊息的大小,例如,如果訊息的大小為 1KB,那麼 Pulsar 可以達到每秒 120MB 的吞吐量。但如果訊息很小,比如只有 10 個位元組,那麼吞吐量可能只有 1.8M 每秒。這兩種結果都是基於單個釋出者向一個主題(topic)分割槽寫入訊息而得出的,99% 的寫入延遲都在 5 毫秒以內。

主題數量——主題伸縮性是釋出訂閱訊息系統用以支援海量主題的一項能力。Pulsar 可以支援從幾百到百萬級別的主題數量的擴充套件,同時還能一直保持良好的效能。主題的伸縮性取決於資料的組織和儲存方式。如果一個主題的資料被儲存在單獨的檔案或目錄裡,就會影響伸縮性,因為磁碟的 IO 是分散的,這些檔案會定期從頁面快取沖刷到磁碟上。不過 Pulsar 的資料儲存在 bookie(BookKeeper 伺服器)上,不同主題的訊息被聚合起來,經過排序,儲存到大檔案裡,並進行索引。Pulsar 也因此能夠支援大量的主題。

安全

Pulsar 支援可插拔的認證機制,可以通過配置使用多種認證實現。認證的目的是為了建立客戶端標識,併為客戶端分配一個角色令牌。這個令牌被用來判斷一個客戶端可以做哪些操作。Pulsar 提供了兩個預設的認證實現:TLS 客戶端認證和 AthenZ(由 Yahoo 開發的一種基於角色的認證系統)。

多語言 API

應用程式可以通過多種程式語言與 Pulsar 發生互動。Pulsar 為三種主流語言提供了官方的客戶端:C++、Java 和 Python。使用者可以根據實際需要選擇一種客戶端。這些客戶端 API 非常直觀,而且在不同語言之間保持了一致性。另外,Pulsar 的官方客戶端還為不同風格的應用程式提供了同步和非同步兩種讀寫操作。同步和非同步的語義是一樣的:要麼阻塞方法等待操作完成,要麼返回一個 Future 物件用於追蹤操作是否完成。

運維成熟度

Pulsar 易於管理,你可以在系統執行的同時加入新的 broker 節點和儲存節點來擴充套件容量。如果一個儲存節點當機,後臺程式會自動將當機節點所包含的資料從其他節點上的可用副本中複製到可用的儲存節點上。Pulsar 為叢集管理提供了多種方式,可以使用命令列工具,也可以使用 Java 庫或 REST API。後者提供了更大靈活性,你可以基於它們開發自己的管理工具或者與已有的工具結合在一起使用。

企業級

Yahoo 設計 Pulsar 是為了解決現有開源訊息系統存在的一些問題和場景。滿足了高吞吐量(處理數千億個訊息)、強永續性保證和低延遲的需求。Pulsar 已經在 Yahoo 執行了三年,支援著 140 萬個主題,99% 延遲低於 5 毫秒,部署在 10 多個資料中心(啟用了全網格複製),已經處理了超過 100 萬億個訊息。

總結

Pulsar 是下一代釋出訂閱訊息系統,彌補了其他開源訊息系統的不足。在這兩篇文章裡,我們介紹了 Pulsar 的各種關鍵特性,並解釋了 Pulsar 如何通過使用 broker 和 bookie 來實現 IO 隔離,以及它如何支援企業級的特性,如永續性、多租戶、多地域複製、高吞吐量和主題伸縮。

檢視英文原文:streaml.io/blog/why-ap…

更多幹貨內容,可關注AI前線,ID:ai-front,後臺回覆「AI」、「TF」、「大資料」可獲得《AI前線》系列PDF迷你書和技能圖譜。

相關文章