专访 PMC,开源项目 Apache Pulsar 如何挑战 Kafka?
The following article is from OSC开源社区 Author 一君
本专访是开源中国 OSChina 对 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 的一半的实际硬件资源成本。
不过,在目前开源的分布式消息系统中,Kafka 依旧有很高的知名度和使用率,也同样是 Apache 基金会的顶级项目。Pulsar 在技术和生态上有什么地方上优于 Kafka?未来是否有更大的发展空间?Pulsar 和 StreamNative 是如何共生的? StreamNative 因何获得投资,这对其他开源项目公司有什么启发?
对此,我们采访了 StreamNative 联合创始人兼 CTO 翟佳,通过他更多地了解 StreamNative 的产品与团队,和 Pulsar、BookKeeper 两个项目。
嘉宾介绍:
翟佳,StreamNative 联合创始人兼 CTO。在创办 StreamNative 之前,在 EMC 从事分布式、文件系统、流存储相关的设计和开发,目前是 Apache BookKeeper 和 Apache Pulsar 两个项目的 PMC 成员。
开源消息系统基础设施 Pulsar
翟佳介绍,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作为存储中心
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 好用在哪?翟佳从三个方面对比 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 以下的特性正是符合消息平台发展的趋势:
云原生,降低系统的人工运维和管理的成本 大集群,统一管控系统资源 统一平台,便捷数据的共享和管理
StreamNative 近期也发文详细对比 Pulsar 与 Kafka: 《Pulsar vs. Kafka — Part 1 — A More Accurate Perspective on Performance, Architecture, and Features》
🔗 https://streamnative.io/blog/tech/2020-07-08-pulsar-vs-kafka-part-1《Pulsar vs Kafka - Part 2 - Adoption, Use Cases, Differentiators, and Community》
🔗 https://streamnative.io/blog/tech/2020-07-22-pulsar-vs-kafka-part-2
基于 Pulsar 的 StreamNative
在了解了 Pulsar 的基础之上,才能更好理解 StreamNative。
开源项目与商业公司
在这次访谈中,翟佳大部分时间都在介绍 Pulsar。他认为,开源项目与商业公司是相互成就的。
成功的开源项目背后,都有一家商业化公司来为社区和用户持续提供核心支持:社区用户被开源产品的架构和功能所吸引,参与社区;公司在服务社区的过程中,不断获得反馈和创新,完善开源产品在各种生产环境的综合表现;公司再利用成熟的项目和积淀来服务有需要的社区客户——这样形成一个良性循环。 由 Pulsar 核心团队带领的 StreamNative 公司和 Pulsar 社区也是这样一种关系。
文中 “Apache”、“Apache Pulsar”、“Apache BookKeeper”、“Pulsar”、“BookKeeper” 皆为 Apache 软件基金会在美国或/和其他国家地区的注册商标或商标。所有其他品牌和商标均为其各自所有者资产。
👍 相关阅读