QCon 北京|Apache Pulsar:云原生时代的消息服务
關于 Apache Pulsar
Apache Pulsar 是 Apache 軟件基金會頂級項目,是下一代云原生分布式消息流平臺,集消息、存儲、輕量化函數式計算為一體,采用計算與存儲分離架構設計,支持多租戶、持久化存儲、多機房跨區域數據復制,具有強一致性、高吞吐、低延時及高可擴展性等流數據存儲特性。
GitHub 地址:http://github.com/apache/pulsar/
當新生事物出現時,人們總是有兩種角度去觀察它,要么把它看小,要么把它放大。
對于 Apache Pulsar 來說,把它看小的角度通常是“Apache Pulsar 只是一個新的消息隊列而已“,或者“Apache Pulsar 只是一個新的數據管道而已”,又或者是“隊列系統早就有了,只是 Apache Pulsar 更具擴展性也能解決某些場景問題而已,基本沒啥本質區別”。
那么,事實果真如此嗎?
帶著這些問題,InfoQ 記者張浩在 QCon 2021 全球軟件開發大會(https://qcon.infoq.cn/2021/beijing/)上采訪了 StreamNative 聯合創始人、Apache Pulsar 和 Apache BookKeeper PMC 成員翟佳,和他聊了聊 Apache Pulsar 的歷史、特點以及未來的趨勢。
以下是視頻采訪的全部內容,為方便讀者查看,視頻下方也附上了文字內容。
InfoQ:翟老師,你好,歡迎來到 QCon 大會并接受我們的采訪,請您先自我介紹一下吧。
翟佳:主持人好,我叫翟佳,來自 StreamNative,現在主要是做 Apache Pulsar、Apache BookKeeper 相關的設計和開發,也是這兩個開源項目的項目管理委員會成員。更早之前,我還在 EMC 做過分布式文件系統的設計和開發。
InfoQ:我在 Pulsar 官網上看到它是這么定義的,它說 Pulsar 是一個云原生的分布式消息和流平臺。在中文媒體的很多宣傳里,對于 Pulsar 的定義怎么說的都有,我姑且就把它理解為是一個新一代的 Kafka。那么很多公司其實是把 Kafka 當成消息系統使用的,所以我想請你來聊一聊,這些年來開源消息系統都經歷過怎樣的迭代?
翟佳:你剛剛提到的消息系統確實是 Pulsar 誕生的一個初衷,因為在 2011 年、2012 年的時候,在雅虎內部需要解決的就是一個消息系統統一的問題。當時比較流行的 ActiveMQ、RabbitMQ 在雅虎內部也都有使用,所以 Pulsar 誕生的一個場景也是做內部的一個統一,要替換 ActiveMQ、RabbitMQ 這樣的消息系統。也就是你剛才提到的 MQ 的場景需求。
你剛才也提到 Pulsar 是云原生的,這跟它當初誕生時雅虎的環境有關。雅虎當時是 Hadoop 生態的一個主要締造者,它是先有的底層的存儲層,也就是 BookKeeper 這樣一個項目。我們之所以說它云原生也是因為 Pulsar 采用了一個存儲和計算分離的這樣一個架構,存儲層就是我們剛剛提到到 BookKeeper,BookKeeper 它在雅虎內部主要是解決 Hadoop 生態,也就是 HDFS、NameNode 這樣的一層 HA。你可以認為它是做元數據的存儲,所以它有很高的一致性。剛好它又是一種 Log 的抽象,就是用 append-only 的模式,它跟我們提到的 MQ 的場景很類似,新的消息不斷地追加,然后這個模式剛好可以應用在消息這個領域里面,所以它對云原生路線的選擇跟它的技術背景有關系。就是先有了很優秀的、能夠提供很好服務質量的存儲系統,然后才有了 Pulsar 這樣的存儲和計算分離的架構。
有了這樣的系統之后,它由于有存儲和計算分離的架構,有 Write-Ahead-Log(WAL)存儲層的抽象,它不僅可以支撐很多 MQ 的關鍵業務場景,不丟消息,對一致性要求很高,又可以提供比較高的帶寬、比較低的延遲。所以這是很多用戶把它用在原來 Kafka 的場景里面的原因。可能最開始的選擇是 MQ 的方向,但是由于架構、由于本身存儲層的特性,也會用到一些 Kafka 的場景里面,這是它跟 Kafka 的關系。
InfoQ:剛才你提到 Pulsar 是誕生于雅虎,你能更詳細的介紹一下這個項目誕生的背景嗎?這些年 Pulsar 發展得怎么樣?
翟佳:Pulsar 的誕生我們剛剛提到過一點,開始做這個項目是在 2012 年,在當時,2011 年國內誕生了 RocketMQ,再往前一年,2010 年誕生了 Kafka,然后 Pulsar 在 2012 年誕生。
在 2012 年要選擇云原生的存儲計算分離的架構是一個很有挑戰的事情。因為當時單個節點的網卡,單個節點的磁盤可能都不適合云原生這樣的架構。所以在 2012 年之前,也就是 2010 年下半年到 2011 年,雅虎內部做了一個 Pulsar 的原型系統,它叫 HedWig。它主要是做這樣的一個嘗試:就是存儲計算分離這樣的架構能不能服務于消息這個場景。所以它誕生可能更早一些,先有 HedWig 這樣一個原型系統,然后再立項 Pulsar。Pulsar 開源之前在雅虎內部的代號叫 CMS(Cloud Message Service),所以說它最開始誕生的初衷就是要做一個云的消息的服務。
有了前期原型系統的鋪墊,決定了云原生這個路線之后,再往后 2013 年主要是做功能開發,2014 年開始在雅虎內部大規模部署,在雅虎內部經過線上產品的檢驗,又穩定運行了一兩年以后,在 2016 年開源出來,2017 年捐給 Apache 軟件基金會,2018 年從 Apache 軟件基金會畢業成為頂級項目。
捐給 Apache 軟件基金會之后,這個項目就開始了一個快速的發展期,很多國內外的互聯網公司都開始使用 Pulsar,因為它確實解決了 MQ 場景里的問題,也解決了 Kafka 場景里面的一些問題。
特別是在 2019 年有了我們商業化的公司 StreamNative 的成立,用戶對這個項目就更有信心了。包括騰訊最開始上線的一個很關鍵的業務場景,就是騰訊計費平臺,也都是基于 Pulsar 來做所有計費的業務。還有國外的 Splunk 以及雅虎內部也有很多的場景都使用了 Pulsar,這樣 Pulsar 的生態也隨著我們國內外社區不斷地成長,發展得越來越好了。
在 2018 年成為頂級項目之前,GitHub 的 Star 數增長雖然還好,但不是那么顯著,在 2018 年底變成頂級項目之后,2019 年公司(StreamNative)成立,Star 數的增長就更加迅速了。我覺得國內的開源土壤對我們開源社區的構建,對我們開源項目初期的成長有很大的幫助。
InfoQ:我看到網上很多人對比 Kafka 和 Pulsar,包括剛才我們也做了一個對比,那你怎么去看待這兩個技術呢?
翟佳:我們剛剛也提到,Pulsar 項目誕生的背景就是要解決雅虎內部的需求。它要有大集群、多租戶的能力,能讓雅虎內部各個業務部門的數據打通,所以它誕生的初衷不是為了去做 Kafka 的事情,大家都在同一個時代。
而且在 2012 年 Kafka 也沒有像現在這么火,Pulsar 還是從自身的角度出發,就是要解決雅虎內部的問題,然后就有了這樣的產品。之后它又選擇了開源的路線,讓產品變得更加穩定,能夠借助社區給它添加更多的功能。所以說它最開始不是專門針對 Kafka 而設計的,但是誕生之初,它的設計為了解決自身的問題,會考慮到更豐富的應用場景,考慮自身業務的一些需求,所以說它確實也能夠支撐 Kafka 所對應的一些業務需求。自然而然地,在開源之后,可能它解決了 Kafka 用戶的一些痛點,被一些用戶所選擇,但這是一個自然而然的過程,并不是專門針對 Kafka 來做這個事。
InfoQ:郭斯杰之前說過,消息、流、存儲將會逐步融合,你怎么理解這個觀點呢?
翟佳:剛剛提到三個方向,消息、流和存儲。我發現消息和流是很相關、模式也很類似的兩個系統,你的消息也是需要一個載體來提供消息的存儲和服務,消息進來的模式也是要按照時間、用戶的數據等等固定的順序,這樣才能對外提供順序性和一致性的保障。
流的場景也是一樣,所有的數據源源不斷地流入,然后按照時間順序來做一個消費,所以從這個角度來看,它們兩個是很貼近、概念很類似的一個場景。只不過在之前可能由于技術架構的原因,我們把消息和流分成了兩種模型。在很多企業內部關鍵的業務場景里用各種 MQ 來保證消息的服務,在數據管道這種場景下用 Kafka 提供流的服務,但是本質上來說它們都是一樣的,只是之前由于技術原因,把它們天然做了一個分隔。
Pulsar 的一個優勢是它有很好的底層儲存層 BookKeeper,它既可以保證很高的一致性,也可以通過 append-only Write-Ahead-Log(WAL)這種抽象來保證比較高的吞吐,它可以從技術上解決兩個場景不同的需求,所以 Pulsar 從這個角度提供了很好的消息和流的融合。
在存儲這個方向,之前大家可能把消息的存儲這個事情看得有些太簡單了,有很多用戶認為我的消息要做系統解耦,在 MQ 的場景里面,可能有很多的消息都是從內存里直接就把消息消費完了,很少有需要把消息落地、存儲的場景,所以當時的實現都很簡單,包括 Kafka 在內,大家都是把消息直接落到文件系統里面,怎么簡單怎么實現,這樣對很多關鍵的業務場景,對很多需要數據堆積的場景來說,如果單單依靠一個文件系統來做,你的服務質量,你的穩定性可能就不太容易保障,因為文件系統不是專門為這個場景設計的,比如說你在 MQ 場景,我需要實時地刷盤,我需要保證這個數據持久性,它的備份數以及一致性要足夠高,這個場景下它的性能可能就會降下來了,這也是我們說隨著用戶的應用數據場景不斷豐富,隨著你對消息系統的要求不斷提高,它對底層消息系統的一些要求也會改變。所以現在來看,隨著大數據的發展,隨著用戶數據量的提高,Pulsar 真正發揮了它的價值,它有一個專門為消息做的存儲層,有了這樣一個存儲層,它可以跟我們剛剛提到的消息的服務、流的服務能夠很好地結合起來。
所以說消息、流和存儲在 Pulsar 這邊是一個融合的方向,是一個融合的架構,這是我們從 Pulsar 這個角度來看這三個方向時一個很直觀的感受。
InfoQ:Pulsar 之所以敢說它是新一代的消息系統,那它肯定是順應了一些趨勢,除了前面的消息、流、存儲的趨勢外,你們還看到了什么樣的趨勢?
翟佳:我們覺得這個趨勢可能就是我們在第一個問題中提到的,它和云原生比較相關。因為云原生是一個很大的趨勢。剛剛我們也提到過,Pulsar 選的這套架構,當時也是一個很超前的架構,在 2012 年它就選擇了存儲計算分離這樣的架構,它具備云原生這個優勢,同時再結合 Pulsar 本身每一層節點都是一個對等的架構,這樣會對線上運維有很大的幫助。包括我們說在你的服務層,你所有的 Broker 都是一個對等的架構。然后你的存儲層 BookKeeper 也是一個對等的架構。這樣你擴縮容的時候,你的大集群不用維護每個節點 master/slave 的狀態。它的維護更加簡單。同時我們在云上有一個很重要的初衷,就是我要做一個彈性的資源調度,從這個角度來說 Pulsar 也是剛好順應這個趨勢,跟它誕生的代號 CMS(Cloud Message Service)是一脈相承的關系,就是要做一個消息的云,要把云上的各種資源能夠很容易地調度起來,能夠為消息系統做一個服務。所以我覺得云原生是 Pulsar 很大的一個優勢,也是我們順應的一個大趨勢。
InfoQ:好的,謝謝翟老師。
翟佳:感謝主持人。
相關閱讀
?QCon 北京 2021:Pulsar PMC 成員翟佳出席并演講?StreamNative CEO 郭斯杰帶你深度解析“消息、流、存儲”三位一體融合趨勢
點擊“閱讀原文”,獲取 Apache Pulsar 硬核干貨資料!
總結
以上是生活随笔為你收集整理的QCon 北京|Apache Pulsar:云原生时代的消息服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 紫阳的日常——第一章 拒绝访问的高考成绩
- 下一篇: 什么样的人适合当领导