为什么DataStax在其流媒体平台上选择了Pulsar而不是Kafka

2021-01-28 21:57:39

数年来,消息传递一直是DataStax的关注对象。一个重要的动机是基于微服务的体系结构的日益普及。简而言之,微服务体系结构使用消息总线来断开服务之间的通信,并简化重放,错误处理和负载峰值。

当前没有满足这些要求的邮件解决方案,因此我们正在构建一个。

我们从评估最受欢迎的选项Apache Kafka开始。我们发现它在四个方面不足:

Apache Pulsar解决了所有这些问题,我们对此感到满意。让我们更详细地看看其中的每一个。

Cassandra支持在数据中心内或跨数据中心进行同步和异步复制。 (通常,Cassandra配置为在区域内进行同步复制,并在区域之间进行异步复制。)这使Netflix等Cassandra用户可以通过本地延迟为各地的客户提供服务,以遵守数据主权法规并度过基础架构故障。 (当AWS重新启动218个Cassandra节点以修补安全漏洞时,“ Netflix的停机时间为0。”)

Kafka设计为在单个区域中运行,并且不支持跨数据中心复制。部署Kafka的区域之外的客户端必须简单地忍受增加的延迟。有几个项目试图在客户端级别向Kafka添加跨数据中心复制,但是这些项目一定很难操作并且容易出错。

像Cassandra一样,Pulsar将地理复制构建到核心服务器中。 (与Cassandra一样,您可以选择以同步或异步配置部署它,也可以按主题配置复制。)生产者可以从任何区域写入共享主题,Pulsar会确保确保这些消息对消费者可见到处。

在Kafka中,存储单位是段文件,但是复制单位是分区中的所有段文件。每个分区由一个领导者经纪人拥有,该经纪人复制到多个关注者。因此,当您需要为Kafka群集增加容量时,需要将一些分区复制到新节点上,然后该新节点才能参与减少现有节点上的负载。

这意味着向Kafka群集添加容量会使其变慢,然后才使其变得更快。如果您的容量计划是正确的,那很好,但是如果业务需求的变化快于您的预期,则可能是一个严重的问题。

脉冲星增加了一个间接层。 (Pulsar还将计算和存储分开,分别由经纪人和Bookie管理,但是这里的重要部分是Pulsar如何通过Bookkeeper增加复制的粒度。)在Pulsar中,分区被拆分为分类帐,但与卡夫卡网段不同,总账可以相互独立地复制。脉冲星会在Zookeeper中保留一个分类帐属于分区的地图。因此,当我们向集群添加新的存储节点时,我们要做的就是在该节点上启动新的分类帐。现有数据可以保留在原处,群集无需执行任何额外的工作。

请参阅Jack Vanlightly的博客,深入了解Pulsar的架构和存储模型。

多租户基础架构可以在多个用户和组织之间共享,同时将它们彼此隔离。一个租户的活动不应影响其他租户的安全或SLA。

从根本上讲,多租户可通过两种方式降低成本。首先,只需共享单个租户无法利用的基础架构,即可在所有用户之间分摊该组件的成本。其次,通过简化管理-当有数十个,数百个或数千个租户时,管理单个实例可以大大简化工作。即使在容器化的世界中,“为我提供该共享系统上的帐户”也比“为我提供该服务的新实例”要容易得多。分散在许多情况下可能会掩盖全局问题。

像地理复制一样,多租户很难移植到并非为此设计的系统上。 Kafka是单租户设计,但Pulsar的核心是多租户。

Pulsar允许我们从一个包含身份验证和授权,隔离策略(Pulsar可以选择在群集中专门用于单个租户的集群中选出硬件)的界面中跨多个区域管理多个租户。 CapitalOne在这里撰写了一份有关Pulsar多租户的很好的概述。

Kafka提供了一种经典的pub / sub(发布/订阅)消息传递模型-发布者将消息发送到Kafka,后者按主题内的分区对其进行排序,然后将副本发送给每个订阅者(或“消费者”)。

Kafka记录了消费者看到的哪些消息,并在日志中有偏移。这意味着不能无序地确认消息,这又意味着不能在多个使用者之间共享订阅。 (Kafka允许在其消费者组设计中将多个分区映射到单个消费者,但不能相反。)

这适用于发布/订阅用例,有时也称为流。对于流媒体,重要的是要以发布消息的相同顺序使用消息。

Pulsar支持pub / sub模型,但它也支持排队模型,在该模型中,处理顺序并不重要,我们只想在任意数量的使用者上平衡主题中的消息:

这(以及诸如“死信队列”和重新交付的否定确认之类的面向队列的功能)意味着,Pulsar可以经常代替AMQP和JMS用例以及Kafka式的发布/订阅,为采用该协议的企业提供了进一步降低成本的机会脉冲星

与Kafka相比,Pulsar的体系结构在地理复制,缩放,多租户和排队方面具有重要的优势。 DataStax很高兴加入Pulsar社区,今天宣布我们收购Kesque Pulsar即服务,并将Kesque团队构建的管理和监视工具开源到我们新的Pulsar Luna Streaming发行版中。

了解有关Pulsar对Cassandra可以做什么以及Cassandra对Pulsar可以做什么的更多信息: