heart-rate-monito

在我作為解決方案架構師的所有年,我構建了許多流架構,例如實時數據 ETL、反應微服務、日志收集,甚至 AI 驅動的服務,所有這些都使用 Kafka 作為體系結構的核心部分。Kafka 是一個成熟的流處理平臺,在LinkedIn、微軟和 Netflix 等公司使用多年。在許多情況下,Kafka 工作得很好,支持大量數據,并且有一個良好的社區。因此,Kafka 用于許多流式處理方案。

然而,由于卡夫卡的設計,我所有使用卡夫卡的項目都遭遇了類似的問題:

  • 高延遲。
  • 可擴展性差。
  • 難以支持全局架構。
  • 高運營。

您可能還喜歡:Apache Pulsar:分布式 Pub-Sub 消息傳遞系統。

延遲和吞吐量

對于任何使用數據密集型應用程序的人來說,延遲或數據傳輸開始之前的延遲可能是一場噩夢。隨著支持物聯網的應用(如自動駕駛汽車甚至工業檢測)變得司空見慣,傳感器生成的數據對于現有架構來說將變得過于苛刻。

保持低延遲,同時跟上不斷增長的吞吐量要求成為一大挑戰。因此,從設備移動到數據中心的數據需要更長的時間,從而導致用戶體驗呈指數級下降。

與卡夫卡相比,Apache Pulsar 在延遲和吞吐量方面都有顯著改善。脈沖星比卡夫卡(*)快2.5倍,延遲減少40%。這些差異是巨大的,在關鍵系統中,它們可能意味著成功或失敗。

Pulsar 使用許多技術來提高性能。最重要的技術是用來處理尾礦讀取。在讀者只對最新數據感興趣的情況下,讀取器從服務層(Pulsar 代理)中的內存緩存提供服務,并且只有追趕讀取器最終必須從存儲層(Apache BookKeeper)提供服務。與 Kafka 等系統相比,這種方法對于提高延遲和吞吐量至關重要。

如果你對此事更感興趣,克里斯·巴塞洛繆最近寫了一篇很好的文章,比較阿帕奇·普爾薩爾和卡夫卡的延遲。

可擴展性問題

假設您有數千或數百萬臺設備將數據發送到數據湖。必須以速度、安全性和可靠性管理此數據。此外,出于法律原因,您必須按國家/地區、設備和城市劃分數據。這些要求似乎是合理的,在 2019 年,流處理平臺必須能夠處理它們。

但是他們有多好呢?當有數千個主題和分區時,即使數據不是大量,Kafka 也并非工作良好。您可以看到如何幸運的是,Pulsar 設計為在群集中提供超過一百萬個主題。擴展主題數量的關鍵是數據的存儲方式。在 Kafka 中,主題的數據存儲在專用文件和目錄中,但因此,Kafka 難以縮放,因為當這些文件定期從頁面緩存刷新到磁盤時,I/O 將分散在磁盤上。相反,Pulsar 將數據存儲在簿記(BookKeeper 服務器)中,其中來自不同主題的消息被聚合、排序和存儲在大型文件中,然后進行索引。有了這些,Pulsar 能夠擴展到數百萬個主題。

全球架構

我參與過的許多項目中的另一個常見錯誤是初始設計范圍有限。當您開始設計架構時,您通常關注第一年的 ROI 和本地影響。但是,當將來向新國家擴展成為強制時,您經常被迫將相同的基礎設施擴展到沒有全局架構設計的新區域。

Kafka 經紀商設計用于在單個區域甚至可用性區域的網絡中協同工作。因此,使用多數據中心體系結構沒有簡單的方法。相比之下,異地復制是 Pulsar 中的一個開箱即用功能。可以在命名空間級別配置全局群集,以在任意數量的群集之間復制數據。此外,Pulsar 的多租戶功能使得企業能夠建立一個群集,同時仍然提供數據存儲的隔離。

運營

在敏捷項目中工作,最好從較少的功能開始,并逐步添加新功能,以便項目不會被必須編碼、測試和維護的眾多服務所淹沒。在基礎結構中也有類似的情況。首先,我們有一個小型的Kafka集群,它足以滿足我們當前的數據量。在接下來的幾個月中,越來越多的客戶到達,群集可以通過添加新分區來管理他們。

但是,將有一個時間點,必須將新服務器添加到群集中,然后我不僅要亂搞配置,還要重新平衡當前的主題。以下是運營支出如何隨著基于 Kafka 的體系結構呈指數級增長而增加的一些示例。

令我們高興的是,Pulsar 的分層架構和無狀態經紀商有助于在這些情況下實現零停機時間。將新代理添加到群集時,它立即可用于寫入和讀取,并且不會花費任何時間在群集中重新平衡數據。

從數據存儲(bookies)的角度來看,當向群集添加新的博彩公司時,基于復制配置的數據將在后臺重新平衡,而不會對群集產生任何影響。最后,Pulsar可以很容易地部署在Kubernetes集群中,無論是在谷歌Kubernetes引擎或亞馬遜網絡服務的托管集群中,還是在自定義集群中。易于安裝和易于維護,正如 Pulsar 提供的,這正是我們正在尋找的。

最終想法

Apache Pulsar 是一個強大的流處理平臺,能夠從以前的系統的弱點中吸取教訓。其分層架構由許多出色的開箱即用功能補充,包括異地復制、多租戶、零重新平衡停機時間、統一排隊和流式處理、基于 TLS 的身份驗證/授權、代理和耐用性。與其他平臺相比,Pulsar 可以為您提供交付成功項目的終極工具。

進一步閱讀

(*)由開放消息基準測試執行基準,一個Linux基金會項目。

Comments are closed.