Kafka比Apache Pulsar有什么优缺点

时间:2017-09-05 06:50:04

标签: apache-kafka apache-pulsar

雅虎开发了Pulsar,pub-sub消息传递系统并使其成为开源的。它现在是Apache的孵化项目。由于卡夫卡也用于同一目的。想知道卡夫卡超过Pulsar的主要加分和减号。

4 个答案:

答案 0 :(得分:40)

我最近和两个人玩了一下,这就是我收集的内容。

<强>中性:

  • 我打算让Kafka赢得社区/文档等。但是我无法轻易找到对Kafka的问题的回复,有些陈旧而且令人困惑(针对遗留API)。但是Pulsar的文档已经足够好了,开发人员对Slack(hello @Matteo Merli :))非常敏感,而底层的部分(Zookeeper,Bookkeeper)也有很好的文档,如果你想潜入内部的话。
  • Kafka旨在实现高吞吐量,Pulsar的低延迟。两者都提供控制它的设置。
  • 两家公司都已投入生产并经过多次公司的战斗测试

Pro pulsar:

  • 根据我的经验,API更易于使用。在卡夫卡,经纪人是愚蠢的,消费者在他们认为合适的情况下完成了构建沟通的工作。这种灵活性是以Kafka的用户必须了解如何使这些部件组合在一起为代价的。我想预期的好处是提高了灵活性,但是由于Pulsar能够复制Kafka Consumers API(并且代码相当少),我将其作为专业人士提供给Pulsar。
  • 你可以做一些不容易做的事情(或者在Kafka中可能不可能):多租户(安全,隔离......),资源管理(主题限制,配额),地理复制
  • 它有一些Kafka目前缺乏的功能,比如寻找特定的MessageId
  • Pulsar扩展到数百万个主题,其中Kafka受Zookeeper数据构建方式的限制
  • 更轻松的部署。一个独立的Pulsar将启动它自己的本地Zookeeper,我个人发现配置更容易理解
  • 用Java编写,而不是传统的Scala和Java代码。此外,我发现代码库组织良好,更容易遵循。部分是因为它依赖于Zookeeper和Bookkeeper,它们是具有自己的文档/社区/开发人员等的外部项目(请注意,这些也在Apache基础中,也来自Yahoo,因此它们可以很好地协同工作)。

Pro Kafka:

  • Kafka有像Kafka Streams一样建立起来的东西(从未使用过,所以我不能说是否有相同的东西)

同时阅读:

答案 1 :(得分:24)

Apache Kafka 更成熟(它已存在更长时间)并且具有更高级别的API(即KStreams)。它是成熟的,但是限制了流动性和灵活性,即github上的~500 open PR

Apache Pulsar 深入研究了Apache Kafka的设计决策,并结合了改进的设计和一系列令人兴奋的功能,即命名空间主题的概念,并允许要在名称空间级别应用的ACL或配额似乎是一个非常好的主意,以提供更好的多租户支持。 Pulsar的其他一些令人兴奋的功能是地理复制,以及统一排队和流媒体

答案 2 :(得分:8)

我们需要一个具有持久主题,合理延迟和高吞吐量的流媒体平台。最近,我们评估了应该使用Kafka还是Pulsar,并且与@nha不同,我们现在支持Apache Kafka。这是我们的发现:

脉冲星-优点

  • 功能丰富-持久/非持久主题,多租户,ACL,多DC复制等。
  • 更灵活的客户端API-包括CompletableFutures,流畅的接口等。
  • java客户端组件是线程安全的-消费者可以确认来自不同线程的消息

脉冲星-缺点

  • java客户端几乎没有javadoc
  • 小型社区-当前有8个stackoverflow问题
  • messageId概念与BookKeeper绑定在一起-与连续数字序列的Kafka偏移量相比,消费者无法轻松地将自己定位在主题上。
  • 阅读器无法轻松阅读主题中的最后一条消息-需要将所有消息略览至末尾。
  • 没有交易
  • 更高的操作复杂度-Zookeeper + Broker节点+ BookKeeper-全部集群
  • 延迟值得怀疑-Broker节点和BookKeeper之间有一个额外的远程调用(与Kafka相比)

Kafka-专业人士

  • 非常丰富和有用的javadoc
  • 卡夫卡流
  • 成熟而广阔的社区
  • 在生产中更易于操作-更少的组件-代理节点还提供存储空间
  • 交易-主题内的原子读写
  • 抵消形成一个连续的序列-消费者可以轻松地寻找最后一条消息

Kafka-缺点

  • 消费者无法确认来自其他线程的消息
  • 没有多租户
  • 没有可靠的多DC复制-(在Confluent Enterprise中提供)

答案 3 :(得分:3)

source


Pulsar是Apache软件基金会(Apache Software Foundation)获得最高地位的最新项目,它正在与另一个ASF项目Kafka进行很多比较。

Pulsar是在商品硬件上运行的高度可扩展,低延迟的消息传递平台。它提供了有关主题的简单发布-订阅和队列语义,轻量级计算框架,针对订阅者的自动游标管理以及跨数据中心复制。

与此同时,对600多个用户进行了调查的2018年Apache Kafka报告发现了数据管道和消息传递技术的前两种用途。随着微服务架构的兴起,它的使用越来越广泛。

“这两个系统的用例有很大的重叠,但是原始设计却大不相同,”其创建者之一Matteo Merli说,他成立了提供快速数据平台的初创公司Streamlio。

Yahoo将Pulsar创建为单个多租户系统,以解决其具有多个消息传递系统和多个团队部署它们的问题。

它于2016年作为开源发布,并于2017年6月进入ASF孵化器。大约四年来,它已被Yahoo的分布式键值服务Yahoo应用程序Mail,Finance,Sports,Gemini Ads和Sherpa使用。

在博客中,联合创始人郭思杰通过以下方式总结了Pulsar对Kafka:

“ Apache Pulsar将高性能流(Apache Kafka追求)和灵活的传统排队(RabbitMQ追求)结合到一个统一的消息传递模型和API中。 Pulsar使用统一的API为您提供一个具有相同高性能的流和排队系统。”

说Merli:“流和排队之间有区别;在很多用例中,您需要一个或另一个,但是大多数人都需要使用不同的用例。”

两层架构 Merli说,两层设计是Pulsar的关键。有一个无状态的代理层,用于接收和传递消息,以及一个有状态的持久层,其中包含一组称为bookies的Apache BookKeeper存储节点,它们提供低延迟的持久存储。

Merli说,Pulsar建立在拥有强大数据保障的思想之上。它是专为共享消费而设计的,而卡夫卡则不是。而且Pulsar允许用户为邮件配置保留期,即使所有订阅都消耗了邮件也是如此。

它的分层体系结构和以段为中心的存储提供了关键优势:

您可以独立扩展代理或存储层。 由于代理是无状态的,因此可以将主题快速移至其他代理。这为平衡代理之间的流量提供了一种有效的方法。 在同一个分区上可以有多个使用者,您可以根据需要添加任意数量。 由于没有数据存储在本地,因此在扩展容量时不需要复制分区数据,并且不需要重新平衡。创建分区主题后,Pulsar会以不可知的方式自动将数据分区给消费者和生产者。

代理将消息数据发送到多个BookKeeper节点,这些节点将数据写入到预写日志中,并将副本保存到内存中。在节点发出确认之前,日志将被强制写入稳定的存储中,从而即使您断电也可以确保保留。主题分区可以扩展到整个BookKeeper群集的总容量,您可以通过简单地添加节点来扩展群集。

自进入孵化器以来,重点一直放在简化Pulsar入门上。

Pulsar的2.0版已于6月发布,其中包括一种称为“ Pulsar Functions”的“流本机”处理功能,该功能使用户可以用Java或Python编写处理功能,以处理通过管道的数据。 2.2版即将发布,它将具有交互式SQL查询功能。

Pulsar提供多种语言和协议绑定,包括Java,C ++,Python和WebSockets,以及与Kafka兼容的API。


进一步阅读:Apache Pulsar:是卡夫卡杀手吗?

Apache Pulsar : Is it a KAFKA Killer? Written By Bhagwan s. Soni enter image description here


为什么我们应该选择Apache Pulsar而不是Kafka?

Apache Pulsar是PubSub的企业版,最初由Yahoo开发,现在由Apache Software Foundation支持。 Apache Pulsar在过去的3年中一直在生产系统上运行,并证明了其稳定性。

Apache Pulsar涵盖了Kafka提供给我们的几乎所有功能,可能具有不同的名称。 Pulsar具有许多功能,但我想强调其中一些功能,这将有助于我们与Kafka脱颖而出-

1} Apache Pulsar为您提供了有关该主题的3种订阅类型:  A}独家 —只有一个使用者将使用主题中的数据  B}共享 —多个消费者将使用主题中的数据  C}故障转移 —不止一个消费者,但在给定的时间点,只有一个消费者将使用数据。

2}每个名称空间可以有一个或多个主题

3}强烈支持多币种

4}在多个群集上进行数据复制

5}强大的消息持久性支持,可防止数据丢失