开源的数据流技术,该选择Redpanda还是Apache Kafka?

本文将比较Apache Kafka和Redpanda两种开源的数据流技术,在云原生实时处理能力上的不同,以及如何在项目中做出选择。  

目前,Apache Kafka不但成为了数据流处理领域事实上的标准,而且带动了同类产品的出现。Redpanda就是其中之一。它是一种轻量级的且兼容C++的Kafka实现。下面,我将和您一起探讨Apache Kafka和Redpanda之间的差异,以及如何对Kafka生态系统、许可证和社区采用等方面产生的影响。

1、Apache Kafka的增长曲线

在Kafka的采用成熟度方面,大多数公司往往或多或少地经历了如下过程:

· 从一个或几个用例开始,快速证明其业务价值。

· 将第一个应用程序部署到生产环境中,并全天候(24/7)地运行。

· 充分利用来自各个领域、业务和技术部门的数据流。

· 迁移到分布式数据中心的中枢系统。

下图展示了使用Maven下载Kafka Java客户端库的用户月活数的增长曲线:

图片

资料来源:Sonatype

显然,各种数据流的潜在用例和商业价值,是Kafka被采用的曲线能够持续增长的主要动因。而下图则展示了各个行业凭借着Kafka的低延迟、可扩展性、可靠性、以及真正的解耦性等特点,在不同的业务场景中创造的丰富数据价值。

图片

2、Redpanda:兼容Kafka的数据流

前面是对Kafka的现状介绍。下面,让我们来看看Kafka领域的新玩家:Redpanda。

作为一个数据流平台,Redpanda在其网站给出了如下市场定位和产品策略介绍:

  • 去Java:它是一种既无需JVM,又摆脱了ZooKeeper的基础设施。
  • 采用C++设计:此类设计旨在提供比Apache Kafka更好的性能。
  • 单一的二进制架构:它并不依赖于其他任何库或节点。
  • 自我管理和自我修复:它是一种可用于内部和云端部署的、简单且可扩展的架构。
  • 与Kafka兼容:它针对现有应用程序、工具、以及集成的Kafka协议,提供了开箱即用的支持。

3、如何为您的项目选择合适的Kafka实现

我们往往需要从业务案例的需求出发,进行评估与定义。例如:正常运行时间、SLA、灾难恢复策略、企业支持、运营工具、托管式云服务、消息传递、数据获取、以及数据集成等功能与应用。下面,我们将对开源项目Apache Kafka和Redpanda(对Kafka协议的重新实现)进行比较,以便您根据实际需求,来予以评估和选择。

由于Redpanda和Apache Kafka的高级主张是相同的,因此我们首先来看两者的相同之处:

  • 以数据流的方式持续、实时地处理大体量的数据。
  • 使用分布式存储层去分离应用程序和域。
  • 能够与各种数据源和数据接收器(data sink)相集成。
  • 利用流式处理来关联数据,并能实时采取行动。
  • 既能提供自我管理的操作,又可以使用完全托管的云产品。

下面,我们来深入了解Redpanda的各项特点。

4、部署选项:自我管理与云服务

如今,业务对于数据流的需求可谓比比皆是。虽然各行各业纷纷采用了云优先的战略,但是鉴于成本、延迟、以及安全要求,某些工作负载必须留在边缘处。对此,您除了自行配置Redpanda之外,还可以购买“Redpanda作为产品”,将其部署到自己的环境中。也就是说,您既可以使用Kubernetes(通常由供应商的外部控制层面提供支持),又可以利用云服务(由供应商完全实施管理)将其部署为环境中的数据层面,而非自行托管Redpanda。

Redpanda的这种不同部署选项,有点类似于Apache Kafka的Confluent部署选项。不过,其唯一缺陷是Redpanda并未提供关于云服务和企业级SLA的官方文档。

5、自带集群 (BYOC)

除了自行管理数据流集群和利用完全托管式的云服务之外,其实我们还有第三种选择:自带集群 (Bring Your Own Cluster,BYOC)。这种替代方案允许最终用户在自己的基础设施(如数据中心或云端的VPC)中,部署由供应商实施部分管理的解决方案。正如Redpanda的宣传口号说的那样:“Redpanda集群可以驻留在您的云服务处,并完全由Redpanda来打理。据此,您的数据将永远不会离开您的环境。”当然,这背后也潜藏着一些问题:

  • 供应商如何访问您的数据中心或VPC?
  • 谁来决定何时、以及如何扩展集群?
  • 何时、以及如何部署集群,以修复错误或升级版本?
  • 谁来保证SLA?是供应商吗?
  • 对于受监管的行业,如何支持安全控制和合规性?
  • 如何知晓供应商在您的环境中的各项行为?
  • 如何定制第三方风险评估?

鉴于上述原因,用户要么将责任交给SaaS产品,要么自行控制。而云服务供应商往往仅能在自己的环境中提供托管服务。

6、既是社区产品也是商业产品

Redpanda的销售方式看起来与Confluent销售数据流的方式如出一辙。它既提供可用于生产环境的免费社区版,又在其企业版增加了分层存储、自动化数据平衡、以及24/7的企业支持等功能。

下面,我们来深入探讨Redpanda与Apache Kafka之间的技术差异。

7、Kafka协议的兼容性

为了提供API的兼容性,Redpanda重新实现了Kafka协议。不过它终究不是Kafka,无法保证来自Kafka生态系统的其他组件(如:Kafka Connect、Kafka Streams、REST Proxy和Schema Registry)在与仅使用Kafka协议、及其自我实现的非Kafka方案集成时,具有相同的表现。毕竟,即使其API能够100%地兼容,一些底层的行为也会有所差异。当然,这并不总是劣势。例如,Redpanda会专注于使用C++来进行性能上的优化,而在某些性能和内存情况下,C++所提供的性能会优于Java和JVM。

目前,Apache Kafka已经包含了用于数据集成的Kafka Connect,以及用于流处理的Kafka Streams。类似于大多数与Kafka相兼容的项目,Redpanda在其产品中也剔除了一些关键的、但“无用”的部分。因此,即使它号称具有100%的协议兼容性,也并不意味着该产品会重新实现Apache Kafka项目中的所有内容。

8、低延迟与基准化

在项目之初,我们需要考虑性能方面的需求。这往往离不开通过使用Apache Kafka、Apache Pulsar和Redpanda,进行概念验证(proof of concept,POC)。注意,不要随意采用有关性能和吞吐量的“基准”。这些基准通常只是针对某个特定问题提供的配置参考。我的同事Jack Vanlightly曾用如下图表,诠释了基准测试的相关概念。您可以参考一下:

图片

资料来源:Jack Vanlightly

您可能会在Redpanda的基准测试中发现:Kafka并非为高吞吐量的生产者(producer)构建的。这正是Redpanda在吞吐量方面优于Kafka的地方。毕竟,在1 GB/s的用例中,谁又会仅创建4个生产者的吞吐量级呢?可见,基准化并不能说明一切,我们往往需要自行测试与尝试。

9、软实时与硬实时

当我们在谈论实时性时,通常是指数据处理管道至少需要几毫秒的时间,进行端到端的传输。这实际上是一种软实时,也是Apache Kafka、Apache Pulsar、Redpanda、Azure Event Hubs、Apache Flink、以及Amazon Kinesis等平台的实现方式。那么,什么是硬实时呢?

硬实时需要的是零延迟且无峰值的确定性网络。其典型的场景包括:制造业、汽车、机器人、证券交易等领域的嵌入式系统、现场总线、以及PLC。您可以通过搜索关键词--时间敏感网络(Time-Sensitive Networking,TSN),了解更多相关内容。可见,Kafka和Redpanda并不适用于此类OT(Operational Technology,运营技术),而适用于IT(Information Technology,信息技术)。在OT领域,我们往往需要采用由纯C或Rust构建的嵌入式软件。

10、无需ZooKeeper

除了采用C++而非JVM来实现之外,Redpanda的第二项独特之处在于:它不需要ZooKeeper和两个复杂的分布式系统。当然,Kafka如今凭借着KIP-500,也可以在没有ZooKeeper的情况下,被投入生产环境。

图片

Redpanda的ZooKeeper-less数据流不仅对Kafka的可扩展性和可靠性有着巨大优势,而且操作十分简单。不过,新的ZooKeeper-less架构仍需要一些时间,才能投入生产环境,而且它仅受到新的Kafka集群的支持。虽然我们可以预见它会从今年开始,支持零停机和零数据丢失的迁移场景,但是作为成熟的软件产品,它有着严格的发布周期。

11、Redpanda的数据流

得益于C++的实现,Redpanda不但轻量级而且高效。这在有限的边缘硬件计算环境中非常实用。与基于JVM的Kafka引擎相比,您可以针对完整的端到端数据管道,使用Redpanda作为消息队列,以实现更高级的数据流用例。此外,Redpanda的延迟峰值比Apache Kafka更少。当然,在部署单个Kafka代理的边缘用例中,如果工业计算机 (IPC)在硬件上能够提供4到8 GB的内存,那么我们就可以围绕着Kafka和其他技术,去部署整个数据流平台。

12、跨集群的数据复制

如今,在各种应用中,拥有多个Kafka集群已是常态。针对不同国家、地区的灾难恢复、聚合、数据主权、以及从内部部署迁移到云端等用例,都需要多种类型的数据流集群。

通常,跨集群复制是Apache Kafka的一个组成部分。MirrorMaker 2(基于Kafka Connect)就能够支持此类用例。当然,来自Confluent Replicator或Cluster Linking等厂商的高级专有工具,会使得数据复制之类的用例更加便捷可靠,而不需要通过额外的基础设施,进行偏移同步等操作。

如下图所示,Kafka生态系统的数据流,非常适合作为去中心化数据网格的基础。此外,在数据复制方面,Redpanda同样可以使用Kafka的Mirrormaker。

图片

13、Apache Kafka和Redpanda之间的非功能性差异

我们在Redpanda与Apache Kafka之间进行选择时,技术性评估往往占有主导性地位。不过,许可证、采用曲线、以及总拥有成本(total cost of ownership,TCO)等非功能性因素,对于数据流平台的成功建立,有时候同样至关重要。

1)许可证

由于Apache Kafka使用非常宽松的Apache许可证 2.0,因此每个人,包括云服务提供商在内,都可以使用该框架,来构建内部应用程序、商业产品和云服务。提交者(Committer)和贡献者(Contribution)可以来自不同的公司和个人。

而Redpanda是根据更严格的资源可用性许可证 (Source Available License,BSL) 发布的。其目的是阻止云服务提供商将Redpanda的成果作为服务随意向外提供。虽然其目的是好的,但是它限制了不同社区和供应商更广泛地采用。与Kafka等Apache项目相比,外部贡献者、提交者、以及其他供应商选择该技术的可能性要小得多。当然,这对于其采用曲线而言,也会造成重大的影响。

2)成熟度、社区和生态系统

Kafka有着完善的文档,庞大的专家社区,大量的工具支持。其操作也更为直接。目前,您可以选择包括:在线课程、书籍、聚会和研讨会等形式的本地和在线Kafka资源。

而Redpanda是一个全新的产品和实现,其引擎和操作行为有所不同。由于除了其供应商的基本内容,并无太多的文档,也尚无专家支持,因此请无比仔细检查Redpanda网站给出的功能列表。例如,Redpanda的RBAC(基于角色的访问控制)文档会说:“Redpanda控制台中的RBAC,仅管理控制台用户的访问,而不管理通过Kafka API交互的客户端。若要限制Kafka API的访问,您需要使用Kafka ACL。” 同时,请确保不要像若干年前使用Apache Pulsar的用户那样,陷入产品功能营销方面的误区。

3)总体拥有成本和商业价值

TCO不仅仅包括了产品或云服务的购置成本。众所周知,数据流平台既需要专职的工程师进行运维和集成,也需要昂贵的项目负责人、架构师、以及开发人员,去构建应用程序。

您可能经常听到Redpanda宣传:“C++可以更有效地利用CPU资源。”不过,问题在于Kafka其实很少受到CPU的限制,而更多地受限于I/O。可以说,由于Redpanda与Kafka具有相同的网络和磁盘要求,因此这意味着Redpanda在基础设施的TCO方面与Kafka的差异并不大。

14、何时该选择Redpanda

而非Apache Kafka?

在如下情况下,您可以优先评估和考虑Redpanda,而不是Apache Kafka。

由于您的运营团队无法处理和分析JVM日志,因此需要C++基础设施。不过,请注意,这只涉及消息传递的内核,而不是数据集成、数据处理或Kafka生态系统的其他功能。

细微的性能差异对您来说非常重要,当然您并不需要硬实时性。

在笔记本电脑和自动化测试环境中进行简单、轻量级的开发。

15、小结

本文从技术和非功能性两个角度,和您探讨了该如何在Apache Kafka和Redpanda之间做出选择。总的说来,如果您需要企业级的解决方案、完全托管的云服务、广泛的生态系统(如:各种连接器、以及数据处理能力),并且可以接受10毫秒的延迟、以及几个p99峰值的话,选择Apache Kafka可能要比Redpanda更稳妥一些。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/265014.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware虚拟机系统CentOS镜像的下载

文章目录 阿里云下载官网下载参考文档 一些小版本可能过时或者其他原因已经不能存在了,只有大版本号最新的,或者其他最新版本 阿里云下载 1-百度搜索:阿里云 2-找到开发者社区 3-找到下载,选择镜像 4-选择系统 5-点击镜像地…

成都工业学院Web技术基础(WEB)实验一:HTML5排版标签使用

写在前面 1、基于2022级计算机大类实验指导书 2、代码仅提供参考,前端变化比较大,按照要求,只能做到像,不能做到一模一样 3、图片和文字仅为示例,需要自行替换 4、如果代码不满足你的要求,请寻求其他的…

【JavaWeb学习专栏 | CSS篇】css简单介绍 css常用选择器集锦

个人主页:[兜里有颗棉花糖(https://xiaofeizhu.blog.csdn.net/) 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【JavaWeb学习专栏】【Java系列】 希望本文内容可以帮助到大家,一起加油吧!…

区块链技术的未来,了解去中心化应用的新视角

小编介绍:10年专注商业模式设计及软件开发,擅长企业生态商业模式,商业零售会员增长裂变模式策划、商业闭环模式设计及方案落地;扶持10余个电商平台做到营收过千万,数百个平台达到百万会员,欢迎咨询。 随着…

Wireshark中的http协议包分析

Wireshark可以跟踪网络协议的通讯过程,本节通过http协议,在了解Wireshark使用的基础上,重温http协议的通讯过程。 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的…

【头歌系统数据库实验】实验5 SQL的多表查询-1

目录 第1关:等值连接:求S表和J表城市相同的等值连接(列顺序还是按照S、J表) 第2关:查询供应情况,并显示供应商、零件和工程三者的名称 第3关:找出上海厂商供应的所有零件号码 第4关:找出使用上海产的零…

【LeetCode:1631. 最小体力消耗路径 | BFS + 二分】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

亿道三防平板/手持终端/工业笔记本/车载电脑配件指南,使用高效加倍!

以前我们在选购合适的三防加固计算机时,总是在强调项目的规格参数需求,强调三防平板/手持终端/工业笔记本/车载电脑等终端设备的性能和功能。然而,我们常常忽略了一个重要的维度:用户体验。三防加固计算机作为数字化基础设施和生产…

【Spring教程25】Spring框架实战:从零开始学习SpringMVC 之 SpringMVC入门案例总结与SpringMVC工作流程分析

目录 1.入门案例总结2. 入门案例工作流程分析2.1 启动服务器初始化过程2.2 单次请求过程 欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Mave…

JVM虚拟机系统性学习-类加载子系统

类加载子系统 类加载的时机 类加载的时机主要有 4 个: 遇到 new、getstatic、putstatic、invokestatic 这四条字节码指令时,如果对应的类没有初始化,则要先进行初始化 new 关键字创建对象时读取或设置一个类型的静态字段时(被 …

[AutoSar]一种ECU间CAN通信的优化方法

目录 关键词平台说明一、背景二、问题现象三、原因四、解决办法五、实现5.1 配置5.2 code 关键词 嵌入式、C语言、autosar 平台说明 项目ValueOSautosar OSautosar厂商EB芯片厂商英飞凌 TC397编程语言C,C编译器TASKING 一、背景 在一个项目中,会从多个…

学习 NVIDIA Omniverse 的最基础概念

无用的前言 近两年关于 Omniverse 的宣传一直很多,可我一直没去了解,连它是个啥都不知道。最近正好有契机需要了解它,于是我今天抽时间看了些它的官方介绍,并按照自己的理解梳理在这里。 官方资料索引 Omniverse 官网主页&…