本專訪對 StreamNative 聯合創始人兼CTO、Apache Pulsar PMC 翟佳的採訪內容。在本採訪中,主要介紹了 Apache Pulsar 做爲雲原生流數據工具在消息處理領域的優點特性、與 Kafka 的一些對比概要以及 StreamNative 公司的介紹和發展方向。
開源流數據公司 StreamNative 近期宣佈完成數百萬美圓 Pre-A 輪融資,日前正式加入 CNCF。其創始團隊成員是 Apache Pulsar、Apache BookKeeper 項目的原生核心開發者,StreamNative 也被稱爲開源消息系統基礎設施 Pulsar 背後的公司。(本文中 Pulsar、BookKeeper 分別指代 Apache Pulsar、Apache BookKeeper)數據結構
StreamNative 是一家基於 Pulsar 的商業公司,提供雲原生的實時消息和流數據處理技術。Pulsar 是 Yahoo 內部在 2012 年爲構建統一消息平臺而構建的,採用分層分片的系統架構。上層 Pulsar Broker 提供無狀態的服務層;底層 BookKeeper 提供高性能、低延遲和強一致性的 IO 服務。架構
在今年 6 月的 Pulsar Summit 中,Splunk 和 Yahoo 作了測試和分析:Pulsar 幫助 Splunk 將成本下降了 1.5 - 2 倍,延遲下降了 5 - 50 倍,運營成本下降 2 - 3 倍;在 Yahoo 的部署中,Pulsar 支持同等規模的業務量,還在保證更高數據服務質量的狀況下,消耗只有 Apache Kafka 的一半的實際硬件資源成本。 less
不過,在目前開源的分佈式消息系統中,Kafka 依舊有很高的知名度和使用率,也一樣是 Apache 基金會的頂級項目。Pulsar 在技術和生態上有什麼地方上優於 Kafka?將來是否有更大的發展空間?Pulsar 和 StreamNative 是如何共生的? StreamNative 因何得到投資,這對其餘開源項目公司有什麼啓發?運維
對此,咱們採訪了 StreamNative 聯合創始人兼 CTO 翟佳,經過他更多地瞭解 StreamNative 的產品與團隊,和 Pulsar、BookKeeper 兩個項目。分佈式
嘉賓介紹:
翟佳,StreamNative 聯合創始人兼 CTO。在創辦 StreamNative 以前,在 EMC 從事分佈式、文件系統、流存儲相關的設計和開發,目前是 Apache BookKeeper 和 Apache Pulsar 兩個項目的 PMC 成員。
翟佳介紹,Pulsar 誕生於 2012 年,最初的目的是爲在 Yahoo 內部,取代其餘消息系統,構建統一邏輯大集羣的消息平臺。當時的其餘消息系統(包括 Kafka),都不能知足 Yahoo 的需求,好比大集羣多租戶、穩定可靠的 IO 服務質量、百萬級 Topic、跨地域複製等,所以 Pulsar 應運而生。函數
「當時在 Yahoo 內部叫 CMS(Cloud Message Service),從名字能夠看出 Pulsar 誕生時就堅決了雲的方向」,翟佳介紹,2015 年,Pulsar 完成了在 Yahoo 內部的部署和替換,大規模部署在 Yahoo 內部, 服務於 Yahoo mail、 Yahoo Finance、 Yahoo Sports/ Flickr 及廣告平臺等大規模的場景。2017 年 6 月 Pulsar 被捐贈給 Apache 基金會,2018 年 9 月畢業成爲 ASF 頂級項目。工具
如今,Pulsar 被 StreamNative 看作是一個兼屬「流數據+雲原生」領域的項目。那麼 Pulsar 做爲一個以「雲」爲方向的消息基礎設施,其「流數據」和「雲原生」特性都是如何實現的呢?這裏翟佳介紹了一些 Pulsar 的技術特性。性能
Pulsar 做爲消息的基礎設施,必然會和存儲、和計算層有深刻的交互。測試
在存儲方面,Pulsar 利用 Apache BookKeeper 的優點,積極擴展和挖掘 Pulsar 架構的優點。基於 Pulsar 對 Topic 的分片存儲,咱們能夠很天然地將老的分片從 BookKeeper 遷移到的二級存儲中。經過層級存儲,能夠支持無限量的流數據。此外咱們正在二級存儲中支持列存模式的支持,這樣能夠更高效的支撐批處理的請求,真正實現批流融合的存儲需求。大數據
對於計算層,Pulsar 的思路是更多地擁抱其餘開源項目。咱們在 Pulsar 中提供告終構化(Schema)的支持,保證 Pulsar 中的數據能夠按照數據結構被其餘系統理解。好比 StreamNative 開源的 pulsar-spark、pulsar-flink 鏈接器等,都是爲了更好的和其餘大數據引擎整合的例子。Pulsar SQL 也是直接整合 Presto 來支持 Pulsar 中的數據查詢。
函數式輕量化計算(Pulsar Functions),是 Pulsar 結合 Serverless 的理念在消息領域的一個創新。函數的編寫很簡單,運行時,每一個消息觸發一次函數的計算。這種輕量級的計算,爲用戶提供了 Spark、Flink 以外一個很好的補充,能夠方便用戶處理不少常見的簡單計算場景,好比數據的清洗、路由、Enhancement 等。
Pulsar 藉助在存儲層的優點,經過和更多的大數據生態整合,爲用戶提供一整套基於事件流的數據處理平臺。
在消息領域,Pulsar 是第一個將存儲計算分離雲原生架構落地的開源項目。
除了存儲計算的分層架構,Pulsar 系統中的節點對等、大集羣管理帶來的資源池化、高可用特性帶來的系統彈性等和雲原生的理念十分契合。
流數據按照有沒有明確的起止位置,能夠分爲有界流和無界流。流入消息平臺中每一個 Topic 的數據,很天然地能夠做爲事件流的一種數據表現。Pulsar 的 Pub/Sub 接口,可讓計算平臺更方便地把 Topic 看成流數據來處理。同時 Pulsar 底層的存儲層 BookKeeper,又將一個 Topic 分爲了多個有界的分片,和 HDFS 中的數據塊對應,直接訪問 BookKeeper 中的分片,更加方便批數據的處理引擎。結合 Pulsar,能夠更便捷地完成在數據處理中的批流統一。
在批流統一的實踐中,Flink/Spark 等計算引擎都有了很好的抽象,可是在數據的存儲層沒有太多的工做,StreamNative 認爲 Pulsar 的架構很匹配批流融合的存儲需求,這是 Pulsar 在數據處理領域的一個優點。
StreamNative 正在 Pulsar 的二級存儲中支持列存格式,讓訪問 Pulsar 的批處理引擎更加高效。這樣 Pulsar 提供了統一的數據存儲層,用戶只用關心上層的數據處理,而不用關心底層的數據存儲細節。
Pulsar 使用 BookKeeper 做爲存儲中心。BookKeeper 提供的 API 抽象度很高,簡單來講就是一個提供無限個 Write-Ahead-Log(WAL)的分佈式存儲系統。
從 BookKeeper 畢業成爲 Apache 頂級項目,已經有 5 年多的時間,期間一直有 Yahoo、Twitter、Salesforce、EMC 等公司的深度使用和積極貢獻,BookKeeper 相對來講已經比較穩定和成熟。StreamNative 主要經過 Pulsar 的社區增加來帶動 BookKeeper 的社區增加。
根據 Pulsar 的功能需求,相應地增長 BookKeeper 的功能。StreamNative 組織的線上線下活動中,也常邀請 BookKeeper 的相關用戶參與分享和交流。從 GitHub 上 BookKeeper 項目 Star 數的增加趨勢,也能夠很明顯的看到兩個社區的相互帶動。
Pulsar 和 Kafka 對比
開發者最關心的問題可能仍是 Pulsar 好用在哪?翟佳從三個方面對比 Pulsar 與 Kafka,以說明 Pulsar 的特色和優點:
第一,從應用場景來講,Pulsar 對用戶來講提供了統一的消息模型,一方面能夠知足各類 MQ,例如 RabbitMQ、ActiveMQ 等線上交易系統的需求;一方面能夠知足和 Kafka 相似的高吞吐的需求的場景。這決定了 Pulsar 在生態上,有比 Kafka 更多的使用場景和需求。
第二,架構上,Pulsar 有存儲計算分離的雲原生架構的優點。因爲在 Broker 層不存儲任何數據,這種架構爲用戶帶來了更高的可用性、更靈活的擴容和管理、避免數據的 reblance 和 catch-up。
BookKeeper 做爲 Pulsar 的存儲層,它誕生時就是爲元數據的一致性服務的,能夠在保證高帶寬、低延遲的狀況下,爲用戶提供更好的一致性保障;相比 Kafka 依賴文件系統來保證一致性,BookKeeper 有原生的一致性協議,數據實時刷盤,讀寫硬件隔離,這些都爲 Pulsar 帶來了更高可靠性和數據服務質量。
第三,在社區上,Kafka 做爲當時流數據的惟一選擇有必定的先發優點。Pulsar 憑藉架構和功能方面的優點,在過去兩年的關注度和使用量不斷快速增長,國內外的 Pulsar 用戶和貢獻者數量也在快速增長。在前兩週,全球項目貢獻者人數已突破 300 位。
目前公司對消息平臺的需求升級集中在下降成本、便捷操做兩個方面。Pulsar 如下的特性正是符合消息平臺發展的趨勢:
翟佳總結,Pulsar 的優點在於其獨特設計和分層分片的系統架構。藉助 Pulsar 的架構和功能,用戶能夠部署統一的集羣,經過池化的資源和多租戶,來知足整個組織內部的各類消息場景的需求,減小小集羣、多集羣的複雜管理,提升資源利用率,方便集羣內部數據的共享。
Pulsar 藉助 BookKeeper 也爲用戶提供了更好的數據服務質量, 在保證高帶寬、低延遲的同時,提供了更高的一致性和持久化。從運維和資源彈性角度看,Pulsar 集羣的擴縮容更加迅速便捷;節點的替換和更新不會影響業務的可靠性和可用性。從線上部署成原本說,對比 Kafka,Pulsar 也有至關大的優點。
StreamNative 近期也發文詳細對比 Pulsar 與 Kafka:《Pulsar vs. Kafka — Part 1 — A More Accurate Perspective on Performance, Architecture, and Features》
🔗 https://streamnative.io/blog/...《Pulsar vs Kafka - Part 2 - Adoption, Use Cases, Differentiators, and Community》
🔗 https://streamnative.io/blog/...
在瞭解了 Pulsar 的基礎之上,才能更好理解 StreamNative。
StreamNative 在開發與運維 Pulsar 的同時,主要提供基於 Pulsar 的雲端託管與運維、技術支持服務。須要注意的是,Pulsar 是 Apache 基金會下的頂級開源項目,其全部權屬於中立的基金會,這也是 StreamNative 能夠爲 Pulsar 作社區運營的信任基礎。
StreamNative 成立於 2019 年,公司開發人員都是 Apache Pulsar 早期的一批貢獻者,不少成員也是 Apache Pulsar 的 PMC 成員或 Committer,其聯合創始人兼 CEO 郭斯傑 是 Apache Pulsar 原型設計和主要開發者。
翟佳介紹,StreamNative 聚焦的兩個主要方向是 Pulsar 社區和雲,這也是投資人極爲看好的方向。
產品方面,StreamNative 的產品是 StreamNative Cloud,爲企業在雲上提供全託管式的 「Apache Pulsar 即服務」,翟佳介紹,「熟悉 Pulsar 的工程師會對 Pulsar 的存儲計算分離和分層分片的彈性系統架構,印象比較深入,這也是StreamNative 常說 Pulsar 擁有云原生架構的一個緣由。」StreamNative 的服務適合對 Pulsar 集羣運行質量、管控和維護有更高需求的客戶。
StreamNative 團隊目前的主要工做內容還包括完善 Pulsar 社區。
對 Pulsar 社區的構建主要是集中在產品及與用戶的互動,貢獻和改進 Pulsar 的功能、豐富 Pulsar 的周邊生態、幫助 Pulsar 的版本發佈和維護、溝通社區用戶並幫忙解決上線 Pulsar 中遇到的障礙、組織參加相關 Pulsar 的 meetup 等推廣宣傳活動等。這些工做主要是完善 Pulsar 的文檔、下降 Pulsar 的入門門檻,豐富 Pulsar 和其餘系統的集成和交互,作好用戶起步的基礎工做。
「長期來看,更重要的是豐富社區的用戶場景、吸引更多的用戶參與社區,構建一個活躍的、能夠長期持續發展的社區」,翟佳透露,除了 Pulsar 自身的優點,社區和客戶的承認也是促成 Pre-A 輪融資成功的緣由之一。目前 Pulsar 已經在一線的互聯網場景中獲得了普遍的應用。
此外,StreamNative 也在完善 StreamNative 基於 K8S 的雲平臺。目前已經在 Google Cloud 上發佈了雲平臺預覽版 StreamNative Cloud,預計在年末發佈國內的預覽版。
在此次訪談中,翟佳大部分時間都在介紹 Pulsar。他認爲,開源項目與商業公司是相互成就的。
成功的開源項目背後,都有一家商業化公司來爲社區和用戶持續提供核心支持:社區用戶被開源產品的架構和功能所吸引,參與社區;公司在服務社區的過程當中,不斷得到反饋和創新,完善開源產品在各類生產環境的綜合表現;公司再利用成熟的項目和積澱來服務有須要的社區客戶——這樣造成一個良性循環。由 Pulsar 核心團隊帶領的 StreamNative 公司和 Pulsar 社區也是這樣一種關係。
談到創業商機,做爲技術人的翟佳表示本身一直抱着「技術改變世界」的夢想,「StreamNative 創始團隊成員親身見證經歷了 3000+ Pulsar 存儲集羣規模的搭建和運維,見證和經歷了 Pulsar 和 BookKeeper 在 Yahoo、Twitter 線上的長期磨礪和迭代,明確感覺到 Pulsar 在架構和功能方面的優點,以及與雲原生方向的匹配和一致性。同時,咱們看到開發者對 Pulsar 的架構和產品的承認,也感覺到用戶在使用時遇到的痛點。」
此外近兩年開源商業化的模式不斷成熟,在 Spark、ES、MongoDB、TiDB 等開源項目背後,都有商業公司在崛起,StreamNative 認爲 Pulsar 和 StreamNative 有一樣的機會。
不過,StreamNative 花費了如此多的時間與精力在 Pulsar 與其社區生態上,是否會形成 Pulsar 與商業公司綁定,削弱項目的開源協做屬性呢?
對此翟佳認爲,這種綁定,是對開源協做的促進,而非削弱。
Pulsar 的核心是所有開源的,StreamNative 公司和社區用戶用的是一樣的一份代碼。StreamNative 投入社區會帶來社區的信任和發展;社區的反饋會帶來 Pulsar 的成熟和創新迭代;最終會有更多的用戶相信 Pulsar 和 StreamNative。
其次,金融、證券、零售、IoT 等領域都有客戶在擁抱和使用 Pulsar。StreamNative 在支持這些客戶的同時,Pulsar 也經過不一樣的場景變得更加成熟。經過對客戶的服務,StreamNative 能夠了解相關垂直領域的需求,進而不斷接觸和知足更多相同領域的客戶。
Pulsar 和 Kafka 很相似,都是 Apache 軟件基金會的項目,Linkedin 在捐贈 Kafka 以後,成爲了 Kafka 的用戶,Yahoo 如今也是 Pulsar 的用戶。 在 Linkedin 和 Yahoo 的角度,維護開源項目(Kafka/Pulsar)在原公司的使用,知足原公司線上的業務需求是最重要的,除此以外開源能讓項目更加成熟和健壯,對原公司有很多好處。
綜上, Pulsar 項目自己往雲原生方向發展,看好此方向的 StreamNative 投入絕對的精力和時間在 Pulsar 上,一方面幫助拓展 Pulsar 的生態,反芻自身的商業資源,另外一方面握住 Pulsar 和 BookKeeper 的技術優點,以區別其餘的 Pulsar 服務商。這些或許就是投資人如今看好 StreamNative 的緣由,將來也可能會是更多開發者和用戶選擇 StreamNative 的理由。
文中 「Apache」、「Apache Pulsar」、「Apache BookKeeper」、「Pulsar」、「BookKeeper」 皆爲 Apache 軟件基金會在美國或/和其餘國家地區的註冊商標或商標。全部其餘品牌和商標均爲其各自全部者資產。