数年来,DataStax一直关注信息传递。一个重要的动机是基于微服务的体系结构越来越流行。简单地说,微服务架构使用消息总线来分离服务之间的通信,并简化重播、错误处理和负载峰值。
通过Cassandra和Astra,开发人员和架构师拥有一个数据库生态系统
1. 基于开源
2. 非常适合混合和多云部署
3. 可在云本地消费定价服务中使用
目前没有满足这些要求的消息传递解决方案,因此我们正在构建一个。
我们首先评估了最流行的选项ApacheKafka。我们发现它在四个方面存在不足:
- 地理复制
2. 缩放比例
3. 多租户技术
4. 排队
ApachePulsar圆满解决了所有这些问题。让我们更详细地了解其中的每一项。
地理复制
Cassandra支持数据中心内或数据中心之间的同步和异步复制。(通常情况下,Cassandra被配置为在一个区域内进行同步复制,并跨区域进行异步复制。)这使得像Netflix这样的Cassandra用户能够以本地延迟为各地的客户提供服务,遵守数据主权法规,并在基础设施故障后生存。(当AWS重新启动218个Cassandra节点以修补安全漏洞时,“Netflix经历了0次停机。”)
Kafka设计为在单个区域内运行,不支持跨数据中心复制。部署Kafka的地区以外的客户机必须容忍延迟的增加。有几个项目试图在客户机级别将跨数据中心复制添加到Kafka,但这些项目必然难以操作且容易失败。
与Cassandra一样,Pulsar将地理复制构建到核心服务器中。(也像Cassandra一样,您可以选择在同步或异步配置中部署它,并且您可以按主题配置复制。)生产者可以从任何地区向共享主题写入内容,Pulsar负责确保各地的消费者都可以看到这些信息。
缩放比例
在Kafka中,存储单元是段文件,但复制单元是分区中的所有段文件。每个分区都由一个leader代理拥有,该代理将复制到多个追随者。因此,当您需要向Kafka集群添加容量时,需要将一些分区复制到新节点,然后它才能参与减少现有节点上的负载。
这意味着向Kafka群集添加容量会使其先慢后快。如果您的容量规划恰到好处,那么这很好,但如果业务需求的变化速度快于您的预期,那么这可能是一个严重的问题。
脉冲星增加了一层间接性。(Pulsar还将计算和存储分开,分别由经纪人和博彩公司管理,但这里的重要部分是Pulsar如何通过簿记员增加复制的粒度。)在Pulsar中,分区被拆分为分类账,但与Kafka段不同,分类账可以彼此独立地复制。Pulsar在Zookeeper中保存了一张分类账属于某个分区的地图。因此,当我们向集群添加一个新的存储节点时,我们所要做的就是在该节点上启动一个新的分类账。现有数据可以留在原地,集群不需要做额外的工作。
多租户技术
多租户基础架构可以跨多个用户和组织共享,同时将它们彼此隔离。一个租户的活动不应影响其他租户的安全或SLA。
从根本上讲,多租户通过两种方式降低成本。首先,只需共享不被单个租户占用的基础设施,该组件的成本就可以在所有用户之间分摊。其次,通过简化管理——当有几十个、数百个或数千个租户时,管理单个实例可以提供显著的简化。即使在集装箱运输的世界,“给我一个关于这个共享系统的账户”比“给我一个新的服务实例”要容易得多。全球问题可能因为分散在许多实例中而变得模糊。
与地理复制一样,多租户很难移植到一个不是为其设计的系统上。卡夫卡是单租户设计,但Pulsar在其核心构建了多租户。
Pulsar允许我们从一个接口跨多个区域管理多个租户,该接口包括身份验证和授权、隔离策略(Pulsar可以选择在集群中为单个租户专门提供硬件)和存储配额。CapitalOne在这里写了一篇很好的脉冲星多租户概述。
DataStax针对Pulsar的新管理控制台使这变得更加容易。
排队(以及流媒体)
Kafka提供了一个经典的发布/订阅(publish/subscribe)消息传递模型——发布者向Kafka发送消息,Kafka按主题内的分区对消息进行排序,并向每个订阅者(或“消费者”)发送一份副本。
Kafka将消费者看到的带有偏移量的消息记录到日志中。这意味着不能按顺序确认消息,这反过来意味着不能在多个使用者之间共享订阅。(Kafka允许在其消费群体设计中将多个分区映射到单个消费群体,但不能反过来。)
这对于发布/订阅用例很好,有时称为流。对于流媒体,重要的是按照消息发布的相同顺序使用消息。
Pulsar支持发布/订阅模型,但也支持排队模型,在排队模型中,处理顺序并不重要,我们只想在任意数量的消费者之间对主题中的消息进行负载平衡:
这(以及面向队列的功能,如“死信队列”和带重新交付的否定确认)意味着Pulsar通常可以取代AMQP和JMS用例以及Kafka风格的发布/订阅,为采用Pulsar的企业提供了进一步降低成本的机会。
结论
Pulsar的体系结构使其在地理复制、扩展、多租户和排队方面比Kafka具有重要优势。DataStax很高兴加入Pulsar社区。
原文地址:https://www.datastax.com/blog/2021/01/four-reasons-why-apache-pulsar-essential-modern-data-stack
除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/2346.html
暂无评论