Pulsar与Kafka对比全解析
概 况Pulsar 有 3 个重要组件broker、Apache BookKeeper 和 Apache ZooKeeper。Broker 是无状态服务客户端需要连接到 broker 进行核心消息传递。而 BookKeeper 和 ZooKeeper 是有状态服务。BookKeeper 节点bookie存储消息和游标ZooKeeper 则只用于为 broker 和 bookie 存储元数据。另外BookKeeper 使用 RocksDB 作为内嵌数据库用于存储内部索引但不能独立于 BookKeeper 单独管理 RocksDB。Kafka 采用单片架构模型将服务与存储紧密结合而 Pulsar 采用了多层架构各层可以单独管理。Pulsar 在 broker 计算层进行计算在 bookie 存储层管理有状态存储。表面上来看Pulsar 的架构似乎比 Kafka 的架构更为复杂但实际情况并非如此。架构设计需要权衡利弊Pulsar 采用了 BookKeeper因此伸缩性更灵活速度更快性能更一致运维开销更小。后文我们会详细讨论这几个方面。存储架构Pulsar 的多层架构影响了存储数据的方式。Pulsar 将 topic 分区划分为分片segment然后将这些分片存储在 Apache BookKeeper 的存储节点上以提高性能、可伸缩性和可用性。Pulsar 的无限分布式日志以分片为中心借助扩展日志存储通过 Apache BookKeeper实现内置分层存储支持因此分片可以均匀地分布在存储节点上。由于与任一给定 topic 相关的数据都不会与特定存储节点进行捆绑因此很容易替换存储节点或缩扩容。另外集群中最小或最慢的节点也不会成为存储或带宽的短板。Pulsar 架构能实现分区管理负载均衡因此使用 Pulsar 能够快速扩展并达到高可用。这两点至关重要所以 Pulsar 非常适合用来构建关键任务服务如金融应用场景的计费平台电子商务和零售商的交易处理系统金融机构的实时风险控制系统等。通过性能强大的 Netty 架构数据从 producers 到 broker再到 bookie 的转移都是零拷贝不会生成副本。这一特性对所有流应用场景都非常友好因为数据直接通过网络或磁盘进行传输没有任何性能损失。消息消费Pulsar 的消费模型采用了流拉取的方式。流拉取是长轮询的改进版不仅实现了单个调用和请求之间的零等待还可以提供双向消息流。通过流拉取模型Pulsar 实现了端到端的低延迟这种低延迟比所有现有的长轮询消息系统如 Kafka都低。使用简单运维简单在评估特定技术的操作简便性时不仅要考虑初始设置还要考虑长期维护和可伸缩性。需要考虑以下几项要跟上业务增长的速度扩展集群是否快速、方便集群是否对多租户对应于多团队、多用户开箱可用运维如替换硬件是否会影响业务的可用性与可靠性是否可以轻松复制数据以实现数据的地理冗余或不同的访问模式长期使用 Kafka 的用户发现维护 Kafka 时以上这些都很难做到。多数任务需要借助 Kafka 之外的工具如用于管理集群再平衡的 cruise control以及用于复制需求的 Kafka mirror-maker。由于 Kafka 很难在不同的团队间共享很多机构开发了用于支持和管理多个不同集群的工具。这些工具对大规模应用 Kafka 至关重要但同时也增加了 Kafka 的复杂性。最适合管理 Kafka 集群的工具都是商业软件不开源。那这就不意外了囿于 Kafka 复杂的管理和运维许多企业转而购买 Confluent 的商业服务。相比之下Pulsar 的目标是简化运维和可扩展。根据 Pulsar 的性能对以上问题我们回复如下Q要跟上业务增长的速度扩展集群的操作是否迅速便捷 APulsar 有自动负载均衡的能力集群中新增了计算和存储节点可以自动、立即投入使用。这样 broker 之间可以迁移 topic 来平衡负载新 bookie 节点可以立即接受新数据分片的写入流量无需手动重新平衡或管理 broker。Q集群是否对多租户对应于多团队、多用户开箱可用APulsar 采用分层架构租户和命名空间能够与机构或团队形成良好的逻辑映射Pulsar 通过这种相同的机构支持简易 ACL、配额、自主服务控制同时也支持资源隔离因此集群使用者可以轻松管理、共享集群。Q运维任务如替换硬件是否会影响业务的可用性与可靠性APulsar 的 broker 是无状态的替换操作简单无需担心数据丢失。Bookie 节点会自动复制全部未复制的数据分片而且用于解除和替换节点的工具为内置工具很容易实现自动化。Q是否可以轻松复制数据以实现数据的地理冗余或不同的访问模式APulsar 具有内置的复制功能可用于无缝跨地域同步数据或复制数据到其他集群以实现其他功能如灾备、分析等。和 Kafka 相比Pulsar 为流数据的现实问题提供了更完善的解决方案。从这个角度看Pulsar 拥有更完善的核心功能集使用简单因而允许使用者和开发者专注于业务的核心需求。生态集成随着 Pulsar 应用场景的迅速增加Pulsar 社区发展壮大全球用户高度参与。Pulsar 社区活跃积极推动 Pulsar 生态系统的集成应用。过去的六个月Pulsar 生态系统中官方支持的 connector 数量急剧增长。为了进一步支持 Pulsar 社区的发展StreamNative 推出了 StreamNative Hub。StreamNative Hub 支持用户搜索、下载集成应用会进一步加速 Pulsar connector 和插件生态系统的发展。https://hub.streamnative.io/Pulsar 社区一直与其他社区密切合作共同开发一系列集成项目目前多个项目仍在进行中。已经完成的项目如 Pulsar 社区与 Flink 社区共同开发的Pulsar-Flink ConnectorFLIP-72 的一部分。 https://github.com/streamnative/pulsar-flink通过Pulsar-Spark Connector用户可以使用 Apache Spark 处理 Apache Pulsar 中的事件。https://github.com/streamnative/pulsar-sparkSkyWalking Pulsar 插件集成了 Apache SkyWalking 和 Apache Pulsar用户可以通过 SkyWalking 追踪 Pulsar 消息。https://github.com/apache/skywalking/tree/master/apm-sniffer/apm-sdk-plugin/pulsar-plugin多元客户端库目前Pulsar 官方客户端支持7种语言而 Kafka 只支持1种语言。Confluent 发布博客声称 Kafka 目前支持 22 种语言然而其官方客户端并不支持这么多种语言而且有些语言已经不再维护。根据最新统计Apache Kafka 官方客户端只支持 1 种语言。https://github.com/apache/kafka/tree/trunk/clients/src/main/java/org/apache/kafka/clients而 Apache Pulsar 官方客户端支持 7 种语言。 http://pulsar.apache.org/docs/en/client-libraries/JavaCCPythonGo.NETNodePulsar 还支持由 Pulsar 社区开发的诸多客户端如RustScalaRubyErlang性能与可用性吞吐量、延迟与容量Pulsar 和 Kafka 都被广泛用于各个企业也各有优势都能通过数量基本相同的硬件处理大流量。部分用户误以为 Pulsar 使用了很多组件因此需要很多服务器来实现与 Kafka 相匹敌的性能。这种想法适用于一些特定硬件配置但在多数资源配置相同的情况中Pulsar 的优势更加明显可以用相同的资源实现更好的性能。举例来说Splunk 最近分享了他们选择 Pulsar 放弃 Kafka 的原因其中提到“由于分层架构Pulsar 帮助他们将成本降低了30% - 50%延迟降低了80% - 98%运营成本降低了33% - 50%”。https://www.slideshare.net/streamnative/why-splunk-chose-pulsarkarthik-ramasamy参考幻灯片第 34 页Splunk 团队发现 Pulsar 可以更好地利用磁盘 IO降低 CPU 利用率同时更好地控制内存。腾讯等公司选择 Pulsar 在很大程度上是因为 Pulsar 的性能。在腾讯计费平台白皮书中提到腾讯计费平台拥有百万级用户管理约 300 亿第三方托管账户目前正在使用 Pulsar 处理日均数亿美元的交易。https://streamnative.io/whitepaper/case-study-apache-pulsar-tencent-billing考虑到 Pulsar 可预测的低延迟、更强的一致性和持久性保证腾讯选择了 Pulsar。有序性保证Apache Pulsar 支持四种不同订阅模式。单个应用程序的订阅模式由排序和消费可扩展性需求决定。以下为这四种订阅模式及相关的排序保证。独占Exclusive和灾备Failover订阅模式都在分区级别支持强序列保证支持跨 consumer 并行消费同一 topic 上的消息。共享Shared订阅模式支持将 consumer 的数量扩展至超过分区的数量因此这种模式非常适合 worker 队列应用场景。键共享Key_Shared订阅模式结合了其他订阅模式的优点支持将 consumer 的数量扩展至超过分区的数量也支持键级别的强序列保证。更多关于 Pulsar 订阅模式和相关排序保证的信息可以参阅 http://pulsar.apache.org/docs/en/concepts-messaging/#subscriptions特 性内置流处理Pulsar 和 Kafka 对于内置流处理的目标不尽相同。针对较为复杂的流处理Pulsar 集成了 Flink 和 Spark 这两套成熟的流处理框架并开发了 Pulsar Functions 来处理轻量级计算。Kafka 开发并使用 Kafka Streams 作为流处理引擎。Kafka Streams 异常复杂用户要将其作为流处理引擎需要先弄清楚使用 KStreams 应用程序的场景及方法。对大多数轻量级计算应用场景来说KStreams 过于复杂。而 Pulsar Functions 轻松实现了轻量级计算并允许用户创建复杂的处理逻辑无需单独部署其他系统。Pulsar Functions 还支持原生语言和易于使用的 API。用户不必学习复杂的 API 就可以编写事件流应用程序。最近Pulsar 改进方案Pulsar Improvement ProposalPIP中介绍了 Function Mesh。Function Mesh 是无服务器架构的事件流框架结合使用多个 Pulsar Functions 以便构建复杂的事件流应用程序。Exactly-Once 处理目前Pulsar 通过 broker 端去重支持 exactly-once producer。这个重大项目正在开发中敬请期待https://github.com/apache/pulsar/wiki/PIP-6:-Guaranteed-Message-DeduplicationPIP-31提议 Pulsar 支持事务型消息流目前正在开发中。这一特性提高了 Pulsar 的消息传递语义和处理保证。https://github.com/apache/pulsar/wiki/PIP-31:-Transaction-Support在交易型消息流中每条消息只会写入一次、处理一次即便 broker 或 Function 实例出现故障也不会出现数据重复或数据丢失。交易型消息不仅简化了使用 Pulsar 或 Pulsar Functions 向应用程序写入的操作还扩展了 Pulsar 支持的应用场景。如果开发顺利Pulsar 2.7.0版本会支持事务型消息流预计 2020 年 11 月发布。Topic日志压缩Pulsar 支持用户根据需要选择数据格式来消费数据。应用程序可以根据需要选择使用原始数据或压缩数据。通过按需选择的方式Pulsar 允许未压缩数据通过保留策略控制数据无限增长同时通过周期性压缩生成最新的实物化视图。内置的分层存储特性支持 Pulsar 从 BookKeeper 卸载未压缩数据到云存储中从而降低长期存储的成本。而 Kafka 不支持用户使用原始数据。并且在数据压缩后Kafka 会立即删除原始数据。用 例事件流雅虎最初开发 Pulsar 将其用作统一的发布/订阅消息平台又称云消息。现在Pulsar 不仅是消息平台还是消息和事件流的统一平台。Pulsar 引入了一系列工具作为平台的一部分为构建事件流应用程序提供必要的基础。Pulsar 支持以下事件流功能无限事件流存储支持通过向外扩展日志存储通过 Apache BookKeeper大规模存储事件并且 Pulsar 内置的分层存储支持高质量、低成本的系统如 S3、HDFS 等。统一的发布/订阅消息模型方便用户向应用程序中添加消息。这一模型可以根据流量和用户需求进行伸缩。协议处理框架、Pulsar 与 Kafka 的协议兼容性KoP以及 AMQP AMQP-on-Pulsar支持应用程序使用任何现有协议在任一位置生产和消费事件。Pulsar IO提供了一组与大型生态系统集成的 connector用户不需要编写代码即可从外部系统获取数据。Pulsar 与 Flink 的集成可以全面处理复杂的事件。Pulsar Functions是一个轻量级无服务器框架能够随时处理事件。Pulsar 与Presto的集成Pulsar SQL数据专家和开发者能够使用 ANSI 兼容的 SQL 来分析数据和处理业务。消息路由通过 Pulsar IO、Pulsar Functions、Pulsar Protocol HandlerPulsar 具有完善的路由功能。Pulsar 的路由功能包括基于内容的路由、消息转换和消息扩充。和 Kafka 相比Pulsar 的路由能力更稳健。Pulsar 为 connector 和 Functions 提供了更灵活的部署模型。可以在 broker 中简单部署也可以在专用的节点池中部署类似于 Kafka Streams节点池支持大规模扩展。Pulsar 还与 Kubernetes 原生集成。另外可以将 Pulsar 配置为以 pod 的形式来调度 Functions 和 connector 的工作负载充分利用 Kubernetes 的弹性。消息队列如前文所述Pulsar 最初的开发目的是作为统一的消息发布/订阅平台。Pulsar 团队深入研究了现有开源消息系统的优缺点凭借丰富的经验设计了统一的消息模型。Pulsar 消息 API 结合队列和流的能力不仅实现了 worker 队列以轮询的方式将消息发送给相互竞争的 consumer通过共享订阅还支持事件流一是基于分区通过灾备订阅中消息的顺序二是基于键范围通过键共享订阅中消息的顺序。用户可以在同一组数据上构建消息应用程序和事件流应用程序而无需复制数据到不同的数据系统。另外Pulsar 社区还在尝试使 Apache Pulsar 原生支持不同的消息协议如 AoP、KoP、MoP以扩展 Pulsar 处理消息的能力。结语Pulsar 社区发展迅猛随着 Pulsar 技术的发展和应用场景的增加Pulsar 生态也在日益壮大。Pulsar 具有许多优势在统一的消息和事件流平台脱颖而出成为大众选择。和 Kafka 相比Pulsar 弹性更灵活在运维和扩展上更为简单。新技术的推出和采用都需要一些时间Pulsar 不仅提供了全套解决方案安装后可立即投入生产环境维护成本低。Pulsar 涵盖了构建事件流应用程序所需的基础集成了丰富的内置功能包括各种工具。Pulsar 工具不需要单独安装即可立即使用。在上面文章中我们从技术角度对比 Pulsar 和 Kafka讨论二者在性能、架构、功能等方面的差异。在这部分我们通过分析研究 Pulsar 的使用案例从商业角度对比 Pulsar 与 Kafka。简介Pulsar 扩展灵活、操作简单能够在单个平台内实现消息队列和数据管道两种功能。因此越来越多的企业开始采用 Pulsar 来处理消息队列和数据管道业务。Pulsar 提供统一的消息平台、构建流优先的应用程序等这些独特的功能都是企业急需的为众多业界领先的科技公司提供支持。由于 Pulsar 是一项较新的技术很多用户不太熟悉 Pulsar 的功能。本文将会解答一些关于 Pulsar 的常见疑问分享 Pulsar 在多个领域迅速增长的用例介绍 Pulsar 快速扩展的社区。另外本文还会讨论采用新技术带来的风险以及为什么现有技术无法适应瞬息万变的环境。首先我们来了解一下关于 Pulsar 的常见问题。1: Pulsar 技术的成熟度是多少是否在实际应用程序中测试过 Pulsar为了更好地了解 Pulsar 的成熟度和使用情况我们先来介绍一下 Pulsar 的起源和发展背景。Kafka 由领英团队开发2011 年开源并于 2012 年成为 Apache 的顶级项目。作为市场上第一个主要的事件流平台Kafka 具备很高的知名度并广泛用于各个行业。Confluent 等诸多公司为 Kafka 提供企业级支持。与 Pulsar 相比Kafka 更成熟、更流行拥有更大的社区和更完善的生态系统。在过去的 18 个月里Pulsar 的用户和社区迅猛增长。在全球范围内越来越多的媒体公司、科技公司、金融机构都在使用 Pulsar。以下是一些企业级用例。这些用例足以证明 Pulsar 处理关键任务应用程序的能力。腾讯基于 Pulsar 搭建计费平台Midas 是孵化于支撑腾讯内部业务千亿级营收的互联网计费平台运营规模庞大每天处理交易金额高达上百亿日数据量达到 10 TB。对于年收入超过 500 亿美元的腾讯来说计费系统是其基础架构的关键组件。腾讯在计费平台 Midas 中使用 Pulsar 充分证明了 Pulsar 处理关键任务应用程序的能力也证明了 Pulsar 的技术经得住严格测试可以在严苛要求的环境下表现优异。Verizon Media 在生产环境中使用 Pulsar 长达 5 年Verizon Media 在生产环境中使用 Pulsar 长达 5 年这是一个备受关注的例子。Verizon Media 收购雅虎后成为 Pulsar 的最初开发者。在今年 6 月举办的 Pulsar Summit上Verizon Meida 的 Joe Francis 和 Ludwig Pummer 提到整个 Verizon Media 平台都在使用 Pulsar并称赞 Pulsar 是经过“实践检验”的系统。在 Verizon MediaPulsar 支撑了 280 万个 topic每秒处理 300 万次读写请求。Pulsar 不仅满足 Verizon Media 对低延迟、高可用、易扩展的要求而且能够同时支持全球六个数据中心运营的业务。Splunk 将 Pulsar 用于其数据流处理器Splunk 也分享了他们的应用场景。多年来Splunk 的生产环境一直使用 Kafka。在今年 6 月的 Pulsar Summit 上Splunk 总监 Karthik Ramasamy 分享了“为什么 Splunk 选择了 Pulsar[3]”介绍 Splunk 选择 Pulsar 支持其下一代分析产品 Splunk DSP 的原因。Splunk DSP 每天需要处理数十亿事件Pulsar 不仅能满足 Splunk DSP 的 18 项关键需求还具有易于扩展、运营成本低、性能好、开源社区强大等特点。以上案例说明 Pulsar 功能非常强大。许多行业领军企业都选择用 Pulsar 支持关键业务的基础结构。尽管 Kafka 更成熟使用范围更广但 Pulsar 迅速增长的用户数量证实了 Pulsar 在性能方面的优势以及处理关键任务的能力。2: Pulsar 与其竞争技术之间的主要差别是什么每种技术的特有优势是什么虽然一些大型技术公司和媒体公司如 Uber 和 Netfilix通过构建统一的批和流处理平台以及流优先应用程序实现了实时数据的需求但大多数公司仍然缺少开发和维护这些应用程序所需的开发人员及财务支持。Pulsar 提供了先进的消息处理能力来帮助这些公司克服开发类似平台的难题。接下来我们将重点介绍 Pulsar 区别于其竞争对手的三种独特功能。这三种功能有些已经实现有些正在开发中。统一的消息模型目前最常见的两种消息类型为应用程序消息传统的队列系统和数据管道。应用程序消息支持异步通信通常在 RabbitMQ、AMQP、JMS 等平台上开发而数据管道则用于不同系统如 Apache Kafka 或 AWS Kinesis之间传输大量数据。由于这两类消息运行在不同的系统上并且提供的功能也不尽相同因此多数企业一般都需要同时运行两套系统。开发、管理不同的系统不仅成本高、操作复杂还会增大集成系统和整合数据的难度。Pulsar 的核心技术支持用户同时将其部署为传统队列系统和数据管道因此 Pulsar 成为独一无二的统一消息功能的理想平台。对企业而言统一的消息简化了抓取和分发数据的操作从而可以通过使用实时数据推动业务创新。最近Pulsar 还支持 KoPKafka-on-PulsarAoPAMQP-on-Pulsar和 MoPMQTT-on-Pulsar插件。通过这些插件企业可以更方便地利用统一消息的功能。我们将在下文中详细讨论 KoPAoP 和 MoP。批存储和事件流存储越来越多的企业需要及时做出决策并迅速对变化作出反应因此企业非常重视重要的实时数据。另外集成、理解大量历史数据对展示业务的整体概况也至关重要。传统的大数据系统如 Hadoop支持分析大量历史数据从而帮助企业做出决策。但是这些系统需要几分钟、几小时甚至是几天的时间来处理数据因此很难集成实时数据并且分析结果也存在一定的不足。流处理器如 Kafka Streams擅长处理流数据获得接近实时数据的分析结果但不太适合处理大量历史数据集。许多企业需要同时运行批处理器和流数据处理器以便及时感知业务变化。但维护多个系统费用昂贵而且各个系统之间也难以兼容。目前有些系统可以同时进行批处理和流处理如 Apache Flink。Kafka 和 Pulsar 都可以使用 Flink 进行流处理但 Flink 的批处理能力与 Kafka 并非完全兼容。Kafka 只能以流交付数据所以 Kafka 处理批处理工作负载的速度较慢。相比之下Pulsar 的分层存储模型提供批存储功能可以支持 Flink 进行批流处理。目前Pulsar 社区正在开发 Pulsar Flink connector[4]集成 Flink 和 Pulsar 的功能。使用 Pulsar Flink connector企业可以更轻松地查询历史数据和实时数据增强竞争优势。“流优先”应用程序企业软件开发越来越复杂这推动了 Web 应用程序开发发生重大转变由传统的与大型 SQL 数据库配对的单一应用程序转向由多个较小组件或“微服务”组成的应用程序。许多企业都选择了微服务因为微服务更具灵活性更适用于不断变化的业务需求同时还可以促进多个开发团队之间的合作。但是微服务也引入了新的挑战如需要支持多个组件之间的通信并保持同步等。通过名为“事件源”的新型微服务技术应用程序生产并广播事件流到共享消息系统中。共享消息系统可以在集中的日志中获取事件历史记录。这一技术不仅改善了数据流还保持了应用程序之间的同步性。但是事件源既需要传统的消息功能又需要长期存储事件历史的能力因此实现起来非常困难。虽然 Kafka 可以存储事件流数天或数周事件源通常需要更长的留存时间。因此用户不得不构建多层 Kafka 集群来管理不断增长的事件数据还要构建额外的系统来共同管理和追踪数据。相比之下Pulsar 统一的消息模型自然成为了最优选择Pulsar 不仅可以轻松地分发事件到其他组件还可以有效地、无限期地存储事件流。对于需要动态、流优先处理能力的公司来说Pulsar 的这一独特设计尤为重要。虽然其他系统也可以实现统一的消息、批流存储、“流优先”方法等但实现这些功能并不容易需要投入大量的时间、精力和资金。而 Pulsar 的设计不仅包含上述特性还操作简单帮助用户轻松适应不断变化的技术环境。3: 是否有社区和企业支撑 Pulsar 开发和技术支持对比 Pulsar 与 Kafka 社区现状我们看到Kafka 社区更大Slack 用户更多StackOverflow 上的问题也更多。目前Pulsar 社区相对较小但社区成员非常活跃社区发展迅猛。以下是 Pulsar 的近期活动。Pulsar 的首次全球峰会今年 6 月Pulsar 首次举办全球峰会[5]即 2020 年 Pulsar Summit Virtual Conference[6]。此次会议中Pulsar 社区的顶级贡献者、社区领导、开发人员分享了 30 多场演讲深入介绍了 Pulsar 在不同行业的应用场景和最佳实践等。Verizon Media[7]、Splunk[8]、Iterable[9]、OVHcloud[10] 等公司就 Pulsar 发表了深刻、独到的见解。六百多人报名参加了这次峰会。参会者来自各行各业覆盖顶级互联网公司、科技和金融机构如谷歌、微软、AMEX、Salesforce、迪士尼、Paypal 等。此次峰会让人们看到 Pulsar 全球社区的高度参与Pulsar 的关注度日益增长。峰会结束后Pulsar 的全球社区立刻联系我们要求举办 Pulsar 亚洲峰会和欧洲峰会。为了满足社区日益增长的需求我们计划在今年 11 月底举办 Pulsar 亚洲峰会欧洲峰会仍在筹划中备注Pulsar 亚洲峰会已在 11 月 28-29 日举办。社区支持 - 培训和活动除了举办大型、广泛参与的峰会外Pulsar 社区还专注于交互式培训和线上活动。今年年初 StreamNative 主导社区推出了每周一次的线上直播 TGIP全称为 “Thank Goodness It’s Pulsar”。这种交互式教程不只包含技术更新还强调实践操作。TGIP 视频发布在 StreamNative 官网、YouTube、B 站等多个平台以扩充 Pulsar 的现有资源。2020 年Pulsar 社区还推出了每月一次的线上研讨会[11]分享最佳实践、最新用例、技术更新等。最火的一期线上研讨会由 OVHCloud、Overstock、Nutanix 等战略商和开源团队主办。7 月 28 日StreamNative 作为主办方与来自 Verizon Media 和 Splunk 的小伙伴们进行了线上讨论主题为在生产环境中使用 Pulsar。最近一期研讨会的主题为使用 Jet 处理低延迟流[12]。随着专业培训由 StreamNative 等团队提供支持的深入Pulsar 的生态一直在不断发展。Pulsar 和 Kafka 的技术专家 Jesse Anderson 最近主持了一个关于开发 Pulsar 应用程序[13]的专业培训课程。该课程不仅扩大了 Pulsar 培训讲师的队伍还促进了用户消息和流平台的开发。此外白皮书[14]也有助于扩大 Pulsar 的知识库。社区合作伙伴也为关键项目的进展作出了贡献。下面我们来了解一下最近推出的几款产品。OVHCloud 帮助企业从 Kafka 迁移到 Pulsar2020 年 3 月OVHCloud 和 StreamNative 联合推出 KoPKafka-on-Pulsar)。使用 KoPKafka 用户无需修改代码就可以将现有的 Kafka 应用程序和服务迁移到 Pulsar。虽然 KoP 发布时间不长但已有多个企业将其应用于生产环境中。同时KoP 的可用性也有助于扩大 Pulsar 的使用范围。中国移动帮助企业从 RabbitMQ 迁移到 Pulsar2020 年 6 月中国移动和 StreamNative 宣布推出另一重大插件——AoPAMQP-on-Pulsar。与 KoP 类似AoP 支持使用 RabbitMQ或其他 AMQP 消息 broker的企业在不修改代码的情况下将现有的应用程序和服务迁移到 Pulsar。AoP 成为扩大 Pulsar 使用范围的又一关键产品。StreamNative 开源 MoP2020 年 9 月StreamNative 开源了 MoPMQTT-on-Pulsar。与 KoP、AoP 相似MoP 是一种可插拔的协议处理插件。将 MoP 协议处理插件添加到现有 Pulsar 集群后用户不用修改代码就可以将现有的 MQTT 应用程序和服务迁移到 Pulsar。通过 MoPApache Pulsar 可以支持原生 MQTT 协议MQTT 应用程序就可以利用 Pulsar 的特性例如 Apache Pulsar 计算和存储分离的架构以及 Apache BookKeeper 保存事件流和 Pulsar 分层存储等特性。由此可见Pulsar 社区一直致力于 Pulsar 的知识传播和生态发展同时也展示了 Pulsar 的团队支持和成长空间未来可期。结语在当今不断变化的商业环境中接入数据可以解锁新商机、定义新类别并使企业在竞争中遥遥领先。所以许多企业都在通过利用数据和数据的分析结果来发展自身优势。与此同时他们也在寻找新技术来实现这些目标。本文回答了企业在评估新技术时通常会关注的一些商业问题包括新技术的成熟度、启用按需业务的能力、开源社区的规模和成员参与度仅适用于开源技术等。腾讯、Verizon Media、Splunk 的案例强有力地证明了 Pulsar 具备在生产环境中交付关键任务应用程序的能力。除此之外Pulsar 支持统一消息和流优先的应用程序因而支持企业在不需要大量资源的情况下推出具有竞争力的革新性新产品这也是 Pulsar 的显著优势。目前Pulsar 与 Flink 的集成正在开发中。这一产品将会展示 Pulsar 在同一平台进行批流处理的能力。虽然 Pulsar 社区和其他一些关键领域如文档的规模仍然不大但在过去的一年半时间里均有显著增长。Pulsar 社区活跃度高、成长速度快与 Pulsar 生态一起致力于 Pulsar 知识库和培训材料的持续扩展同时也加速了 Pulsar 主要功能的开发。企业在评估一项技术时不仅需要考虑它当前的优劣势还需要考虑该技术未来的发展方向和发展空间如何应对新的业务需求等。Pulsar 具有强大的消息功能和其他独特优势因此对于希望开发实时数据流功能的企业而言Pulsar 是个最佳选择。