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