本文整理自 Pulsar Meetup 深圳2024 大会,由来自 AscentStream 谙流科技联合创始和 CEO 翟佳带来的《Apache Pulsar 的社区规划演进》的演讲视频。
嘉宾|翟佳,AscentStream 谙流科技联合创始人兼 CEO,Apache Pulsar PMC 成员,Apache 软件基金会成员
编辑|社区志愿者 赵国瑞
Apache Pulsar 的社区规划和演进
- Planning and Evolution -
消息队列发展历程
Pulsar作为一种消息流处理技术,在消息流领域中占据了重要地位。
这个领域的发展历程最早可以追溯到上个世纪八九十年代。从早期的运行在大型机上的 MQ,到后来的运行普通机器上的开源MQ兴起,再到互联网、大数据时代火热的分布式架构 MQ,最后到今天云原生时代火热的Pulsar,每个阶段都代表了不同的时代的架构需求。
最初的单机MQ主要用于系统解耦,验证了可行性。随着科技的进步,这类技术得到了更广泛的应用。进入Kafka时代后,消息队列作为数据基础设施的作用愈发重要,得到了广泛的使用。
从2017年起,随着移动应用的普及和数据规模的增长,企业对实时数据价值的挖掘需求不断增加。各个应用之间的协同和数据的实时处理变得至关重要。因此,消息和流的实时处理逐渐成为企业内部不可或缺的基础设施组件。Pulsar在这个过程中发挥了重要作用,适应了不断变化的技术需求和应用场景。
Apache Pulsar发展历程
Pulsar诞生于2012年,当时雅虎内部的数据规模庞大,业务遍及全球,拥有上百个应用。这些需求与当前企业内部对消息流架构的诉求非常相似。因此,虽然Pulsar诞生于2012年,但它很快就被时代和环境筛选出来,成为一款具有前瞻性的产品。
Pulsar在2012年就采用了云原生的架构,并实现了存储与计算分离的设计。这种设计围绕着云原生理念,致力于在企业内部大规模应用。随着时间推移,云原生的价值越来越被认可,特别是在近几年,随着Kubernetes等云原生基础设施的兴起,Pulsar的应用也越来越广泛。
Pulsar于2016年开源,最初托管在雅虎的GitHub仓库中。2017年,Pulsar捐赠给Apache基金会,并在2018年被InfoWorld评选为当年的最佳开源软件。巧合的是,这一荣誉恰好在Pulsar成为Apache顶级项目的第二天授予。
2019年,StreamNative在国内成立,专注于国内市场。经过5年的发展,我们在今年年初成立了AscentStream,主办了此次活动。AscentStream隶属于上海谙流科技,这可能是大家不太熟悉的名字。由于近年来中美地缘政治的影响,许多公司需要采取更有利于自身商业化的策略。因此,我们成立了一家专注于国内社区和商业化的实体公司,以更好地服务中国市场。
深度使用于中国头部企业
在这一过程中,我们看到许多国内用户积极推动Pulsar社区的发展,这是为什么我们如此关注社区并给予其大力支持的原因。用户不仅推动了社区的进步,还在功能设计和实现方面做出了重大贡献。
例如,2018年,智联招聘在其场景中成功应用了Pulsar,这得到了鹏辉和李辉总的大力支持。同年年底,腾讯计费平台团队也开始使用Pulsar,并在2019年通过Meetup分享了其大规模使用的案例。
随着这些应用场景的逐渐落地,我们看到Pulsar已经在许多大型互联网公司的核心场景中得到了广泛应用。例如,腾讯会议、腾讯的计费平台、微信和游戏等多个场景中,Pulsar都得到了深度应用。不仅腾讯,像滴滴、美团、快手和华为等公司也在大规模使用Pulsar。某些用户甚至在单一部门部署了多达1万个节点的Pulsar系统。
国内用户的丰富场景、工程师资源以及数据基础,为基础设施的磨练提供了广阔空间,进一步促进了社区的发展。正是因为社区用户和爱好者的贡献,Pulsar在消息流处理场景中的活跃度始终保持在很高水平。
根据OSSInsight网站的统计,Pulsar是前十名的开源消息平台之一。自2017年开源以来,Pulsar在GitHub上的commit数量一直在快速增长。随着commit数量的增加,Pulsar的功能也不断丰富。这些功能的改进和新增往往源于用户在实际场景中提出的需求,这些需求逐渐形成共性功能,并得到了更多用户的支持,形成了社区的良性循环。
Pulsar:云原生的消息流平台
Pulsar之所以能够迅速获得广泛认可并吸引大量社区贡献者,主要归功于其底层架构设计和云原生的理念。以下是Pulsar成功的几个关键因素:
- 云原生架构:Pulsar从设计之初就采用了云原生架构,这使得它在应对现代企业需求时表现出色。云原生这个概念现在已为大家所熟知,但它确实很好地概括了Pulsar的核心优势。Pulsar的存储和计算分离架构允许存储和计算资源的无缝、弹性扩展,这对于大规模数据处理和消息流处理非常重要。
- 统一API:Pulsar在设计时就考虑到了企业内部不同部门和业务场景的需求,制定了一个统一的API。这样,各个部门可以方便地使用Pulsar来替代现有的消息组件,实现跨部门的业务场景覆盖。
- 多租户支持:Pulsar的多租户设计为用户提供了良好的隔离性和安全性。企业可以在同一Pulsar集群中为不同的团队或项目分配独立的租户,确保数据和资源的隔离。
- 全球互联互备:Pulsar支持跨洲、跨数据中心的消息流处理和备份。这种全球互联互备的特性使得企业可以在全球范围内实现数据的高可用性和可靠性。
Pulsar基于云原生架构发展出来的功能
基于前述的基础,Pulsar凭借其强大的底层架构,发展出了许多关键功能。这些功能使得Pulsar得到了广泛的认可,并吸引了大量社区贡献者。:
首先,Pulsar有着丰富的客户端支持。这是社区,包括原生团队的小伙伴们共同努力的结果。最初,Pulsar支持C++和Java客户端,后来逐步扩展到涵盖各种编程语言。特别是在最近几年,基于REST API和HTTP的访问方式的加入,使得Pulsar的使用更加简单,不再受限于特定编程语言。
其次,Pulsar是最早在产品中实现分层存储的消息流平台。分层存储实现了冷热数据分离,这是降低成本的主要手段之一。对于消息流场景,旧数据的访问频率较低,将其存储在二级存储(如S3、Google Cloud Storage或HDFS)中可以显著降低企业的总体拥有成本。一些用户甚至采取更激进的策略,将数据快速转移到廉价存储中,从而减少主存储中的数据量,这在很多用户和客户的场景中得到了广泛应用。
第三,Pulsar在流批融合计算引擎方面表现出色。Pulsar与Flink、Spark等流批融合计算引擎有良好的对接。今年上半年,Pulsar与Spark的连接器已被纳入Spark的主分支中,使用户更容易将Pulsar与这些计算引擎结合使用。
此外,Pulsar还引入了轻量级函数计算,使得数据在生成源头(Pulsar)就能得到快速处理,减少低质量数据的传输和扩展,同时简化业务开发流程。
有了这些基础,Pulsar在社区内的集成也变得更加重要。Pulsar与Debezium、Iceberg等社区的集成,使得数据的进出变得更加便捷。通过提供无代码配置的连接器,用户可以轻松将Pulsar与其他数据系统连接,实现数据的无缝流动和处理。
为了进一步简化用户的业务迁移,Pulsar还提出了协议插件模式。这种模式通过在服务端添加各种协议的插件(如Kafka、MQTT和AMQP协议),使用户无需更改代码即可切换到Pulsar,从而感受到Pulsar存储与计算分离、弹性扩展的优势。特别是在Kafka协议方面,自2019年开始,Pulsar在多个大型互联网公司的场景中得到了验证和应用,已经非常稳定,并在许多大规模场景中成功落地。
总结来说,Pulsar凭借丰富的客户端支持、分层存储、流批融合计算引擎、轻量级函数计算、社区和生态系统集成以及协议插件模式,进一步巩固了其在消息流平台中的地位。这些创新和功能,不仅满足了现代企业的需求,还推动了社区的积极参与和贡献。
社区动态
有了这些丰富的功能,Pulsar社区的发展也非常迅速。目前,Pulsar社区已有超过600位贡献者,GitHub上关注Pulsar项目的关注者已经超过1万人。在整个发展过程中,我们看到社区的活跃度和参与度不断提升。
通过分析GitHub上每个关注者的头像,我们可以看到,中国用户在其中占据了很大的比重。许多国内的互联网公司都积极参与了Pulsar的开发和使用。从GitHub提取的数据,其中越大的关键字代表背后有更多的用户和公司参与其中。这说明Pulsar在中国的影响力和应用广泛度是非常显著的。
公司介绍
由于国内有着坚实的社区基础、广泛的用户基础和丰富的应用场景,我们更加坚定地认为,国内的商业化可以依托这些基础来进行。因此,我们成立了上海谙流科技公司。这家公司由原先StreamNative负责国内社区运营和客户服务的团队成员组成,现在以新的公司形式继续运营。
我们希望能与大家一起,共同维护和建设好Pulsar社区。我们相信,通过大家的共同努力,Pulsar在国内的商业化将会取得更大的成功。
Apache Pulsar功能和场景优势
- Advantages and Use Case -
MQ的场景优势
首先是Pulsar在MQ(消息队列)场景中的优势:
在雅虎最初的使用场景中,Pulsar主要用于替换各种MQ。当时实时数据和大数据管道的基础设施还没有大规模兴起。Pulsar在雅虎内部支持了超过100个应用,并为雅虎的7亿用户和60多个国家的业务提供服务。这种规模在当时的互联网环境中,仅次于Google。Pulsar在这些关键业务场景中表现出色,特别是在广告计费等需要高可靠性和全球互联互备的业务中,展示了其强大的性能和稳定性。
Pulsar被验证为经过战斗考验的产品,许多国内用户愿意采用Pulsar,主要因为它已经在关键业务场景中得到了充分验证,不需要太多二次开发和功能验证即可满足需求。这种验证在雅虎、推特、Salesforce和EMC等大公司内部已经广泛应用,并且在2018年之前就在这些公司内有了深度落地。
在Pulsar成为Apache项目之后,它在国内外的大型互联网公司中,如滴滴、腾讯会议、半导体制造业(如应用材料)等,进一步展示了其在高可靠性和高性能场景中的优势。Pulsar在这些场景中的成功应用,使得用户可以放心使用,减少了实施风险。
除了长期积累的稳定性外,Pulsar的功能丰富性也是其在MQ场景中脱颖而出的关键。作为基础设施,Pulsar能够满足企业内部各种场景的需求。通过统一的Pulsar API,企业可以在各种业务场景中实现灵活适配,简化了业务开发和维护。Pulsar支持多种消费模式、持久化要求、数据互联互备、消息消费语义等,确保在任何业务需求下都能提供可靠支持。
在企业内部,Pulsar因其良好的适应性和灵活性,能够满足各种场景的需求。这不仅使得企业可以统一使用一套组件,提升业务协同效率,还减少了维护多套系统带来的资源利用率、运维和开发成本问题。
在单一业务方面,Pulsar的弹性扩展能力也表现出色。面对业务增长和波动,Pulsar能够通过无缝弹性扩展来满足需求。这在电商促销活动(如双十一、618)、高峰期零售订单处理(如午餐高峰点餐)等场景中尤为重要。Pulsar的弹性扩展不仅降低了运维复杂性,还为业务的稳定性提供了坚实保障。
一些客户通过Pulsar实现了从数百套集群到6套集群的整合,显著提高了业务协同效率。
Stream场景下优势
其次是Pulsar在实时数据处理场景中的优势。
在这个领域,大家更熟悉的可能是Kafka。Kafka在其诞生之初,主要解决了高带宽的数据传输需求,提高了资源利用率。然而,随着业务的发展,特别是近几年,我们看到用户对topic数量、弹性扩缩容、延迟稳定性、数据存储等方面的要求越来越高。
在这些新需求中,许多都与成本有关。例如,Pulsar支持的topic数量比Kafka高一个数量级,因为Pulsar使用专有的存储设计,而不是简单依赖文件系统,减少了page cache的干扰。在弹性方面,Pulsar的原生架构使得弹性扩展可以无缝进行,不需要过多的人工干预,减轻了运维负担。延迟稳定性也是Pulsar的一个优势,Pulsar的数据存储设计经过了丰富的场景验证,即使在高负载下也能保持低延迟。
Pulsar还支持更长时间的数据存储,通过分层存储可以将历史数据移动到二级存储中,降低整体成本。这些功能满足了用户在IoT传感器、智慧城市等场景中的需求,这些场景除了高带宽外,还需要支持大量的topic、弹性扩展和低延迟。
除了满足这些基本需求外,Pulsar还在流数据处理中的一致性保障方面表现出色。在实时推荐和用户画像等关键业务场景中,Pulsar能够通过一致性保障,确保数据的准确性和及时性,避免因数据错误导致的业务问题。即使在严格的一致性要求下,Pulsar也能提供高带宽和高性能,这使得Pulsar在关键业务场景中比Kafka更具优势。
用户在切换到Pulsar时,通常面临的一个障碍是现有基础设施的改造成本。为了解决这个问题,Pulsar通过提供Kafka协议适配器(KoP)使得用户无需更改现有代码即可切换到Pulsar。KoP在Pulsar的broker内部提供了Kafka协议的解析,这样用户可以继续使用Kafka的接口,而享受Pulsar提供的服务。
在许多关键业务场景中,我们对Pulsar和Kafka进行了对比测试。结果显示,在相同场景下,Pulsar在带宽和性能上表现优异,甚至在某些业务场景中超过了Kafka。此外,在节点故障恢复方面,Pulsar的恢复时间更短,对业务影响也更小,而Kafka的恢复时间较长,对业务的影响更大。
云原生的优势
总体来看,Pulsar在消息队列和实时数据处理方面的优势最终还是体现了其云原生架构的优势。Pulsar的几乎所有功能都是围绕云原生构建的,目标是让业务端能像使用自来水一样无缝地使用资源,同时让基础设施建设方能够以弹性、高效、少人工参与的方式进行运维。
Pulsar自诞生以来就采用了云原生架构,这一点在其后续发展过程中始终得到了坚持和优化。所有功能都紧密围绕云原生理念进行构建,因此,从底层来看,Pulsar给用户带来的体验就是一种真正的云原生体验。
需要注意的是,云原生体验不仅仅是指在公有云上的部署,即使在私有化环境中,有了Pulsar的多租户、存储与计算分离架构以及其他云原生功能的支持,用户同样可以获得无缝的云原生体验。
对于业务方,Pulsar提供了多租户和灵活的资源管理,使得业务团队可以自行申请和分配资源,而不需要过多依赖运维团队,从而提高了业务的弹性和敏捷性。对于运维方,Pulsar的存储与计算分离架构简化了运维流程,减少了运维时间,提高了运维效率。
Apache Pulsar社区近况
- Current Status -
从Pulsar 3.0版本开始,我们引入了长期支持(LTS)版本,以确保系统的稳定性。随着社区用户贡献的代码越来越多,我们发现有些新功能可能还不够稳定,存在一些bug。因此,引入LTS版本可以为用户提供更加稳定和可靠的使用体验,使得系统升级和使用更加顺畅。
性能提升
除了LTS版本外,Pulsar 3.0之后的版本还在性能上做了显著提升。社区中有很多关于Pulsar 3.0性能提升的文章,详细介绍了这些改进。一方面,我们在CPU和锁的利用上做了优化,提升了整体性能。另一方面,我们在存储层面也进行了加强,比如通过DFIO(Direct File I/O)方式,进一步优化了存储性能。
如果大家对这些性能提升的具体细节感兴趣,可以通过Pulsar社区获取更多信息。社区中有大量资源和文章,能够帮助用户更好地理解和应用这些改进。
其他功能
其他值得关注的改进:
- PIP-192 - New Load Balancer
- PIP-195 - Scalable delayed delivery message
- PIP-264 - Enhanced OpenTelemetry-based metrics
Pulsar还围绕用户关注的一些功能进行了优化和增强。例如,为了在节点出现故障或宕机的情况下保持topic的高可用性,我们引入了新的负载均衡器(load balancer)。这个负载均衡器能够在节点宕机后快速恢复topic,使得不可用时间缩短到秒级,甚至更短。
此外,Pulsar还支持大规模的延迟消息,这是许多社区用户非常关注的功能。在监控和度量(metrics)方面,Pulsar与OpenTelemetry进行了结合,以实现度量数据的统一采集和管理。这对于许多需要高质量数据服务和实时监控的用户来说是非常重要的改进。
- The End -