暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

重新评估Kafka:实时性的问题和替代方案

IT大咖说 2021-10-11
2979

Kafka的挑战让许多工程师在成功的数据流道路上疲于奔命。如果有一个更简单的方法呢?

图片来源:Mohamed Hassan 来自Pixabay

与大多数使用Apache Kafka的数据工程师交谈,他们会有很多话要说。他们会列出关于这个平台的所有让他们感到沮丧的东西,但最后会说他们喜欢这个平台。

发生了什么?

Apache Kafka是现代数据基础设施的一个基石。在很多方面,它都很耀眼,但它也伴随着一些复杂的问题,对一些用户的影响比其他用户更大。在过去的十几年里,我们已经把Kafka看作是同类产品中的唯一选择,我们也接受了它将不可避免地挑战我们的想法。

但随着数据领域的迅速扩大,我们不应该继续认为这是理所当然的。可行的、用户友好的替代品正在出现。为了节省时间和精力,值得重新评估像Kafka这样的传统系统是否是你组织的最佳选择。

◆ 什么是Apache Kafka,它是做什么的?

Apache Kafka是一个业界领先的开源事件流平台。它由LinkedIn员工在2010年创办,后来捐赠给了Apache基金会。Kafka被称赞为是一个极其强大的平台,为成千上万的公司提供了数据基础设施基础,其中包括Netflix、Airbnb和Twitter等大公司。

Kafka被作为一个事件总线使用。应用程序产生的事件--或消息--进入Kafka,Kafka将它们记录在一个有序的消息历史中。其他应用程序按顺序消费这些消息,并在产生新的消息时得到实时通知。与传统的数据库相比,Kafka非常适用于针对当前状态的查询和更新,而对于那些必须对导致当前状态的各种变化迅速采取行动的应用程序来说,Kafka是最出色的。

Kafka是在一个容错服务器集群上运行的。被称为生产者的客户端系统向Kafka服务器发布,或写入事件。另一组客户称为消费者,他们订阅或读取这些事件。消息包含在主题中,可以进一步划分。

Kafka在一些重要的方面为老式的消息传递队列--如RabbitMQ--提供了一个替代方案,主要是。

  • 它可以很容易地进行横向扩展,通过在集群中增加更多的节点和对单个主题的分区来实现。

  •  它可以将信息保存一段可配置的时间,而不是在信息到达消费者时立即删除。

◆ Kafka有什么用?

正如我们所看到的,Kafka是第一个同类的事件流平台,现在已经有超过十年的成熟度和巨大的用户群。随着对管理良好、低延迟的数据流的需求越来越明显,即使是最传统的公司也开始注意到了这一点--并且经常转向Kafka。

对于像Netflix这样建立大型、高度定制化的数据管道的巨大企业,Kafka可以提供一个骨干。许多其他开源项目都是建立在Kafka之上的。如果你有一个工程师团队专门负责Kafka,或者你有大量的时间,你可以在各种各样的用例中获得很好的效果。

简而言之:Kafka快速、高效、可定制、功能强大,如果管理得当,还非常可靠。

◆ Kafka的问题是什么?

作为一个中小型组织的业务领导,你可能会看到Kafka在2010年取得的突破,以及随后世界上Netflix-es的成功,并感到兴奋。Kafka--开源且维护良好--能不能成为解决孤岛数据和延迟问题的答案?

不一定。

Kafka本身就很难实施和维护,以至于很多组织都无法达到他们的目标。作为数据基础设施的骨干,Kafka本身就是一个庞大而复杂的系统。除此之外,在与客户系统集成时,它还会带来额外的复杂性。

这些特征性的挑战造成了较高的进入门槛和令人头痛的持续维护。让我们更详细地了解一下。

操作Kafka部署是一项庞大而复杂的工作。从本质上讲,你的Kafka部署几乎可以保证是一个大规模的项目。想象一下,操作一个同样大规模的MySQL数据库,它被多个关键的应用程序所使用。你几乎肯定需要雇佣一个数据库管理员(或者一整个团队)来管理它。Kafka也不例外。它是一个大型的、复杂的系统,往往被多个客户应用所共享。当然,它也不容易操作!

Kafka管理员必须从一开始就回答硬性设计问题。这包括定义消息如何存储在分区主题中,保留,以及团队或应用配额。我们不会在这里讨论细节,但是你可以把这项任务看作是设计一个数据库模式,但是增加了时间的维度,这使得复杂性倍增。你需要考虑每条消息代表什么,如何确保它将以适当的顺序被消费,在哪里以及如何进行有状态的转换,以及更多--所有这些都要极其精确。

Kafka是一个低级别的工具。就像MySQL或其他数据库一样,Kafka是一个开放式的工具,它不提供一个单一的、简单的成功路径。就其本身而言,它对解决实际的业务问题毫无帮助。

为了从Kafka中获得任何价值,你需要客户端应用程序来读取和写入数据。Kafka本身并不关心如何做到这一点。相反,它优先考虑的是处理许多不同用例的灵活性。这是Kafka强大的部分原因,但是为了让Kafka集群做任何有用的事情,你的客户应用需要对如何使用这些灵活的API提出自己的意见。

你可能听说过 "流处理很难 "这句话,而这正是原因。

Kafka可能是开源的,但其固有的难度导致了大量的公司只为管理它而存在--包括Confluent,它是由创建Kafka的工程团队创立。它的设计根本不适合由专门的工程师团队来处理。

除了逻辑上的困难之外,Kafka还有一些其他的限制,使得它在某些用例上不太理想。

  • 即时转换是一个挑战。Kafka提供了一个消费者框架,可用于在运行时内为流处理应用程序提供动力,但其中的具体细节要靠你自己。KsqlDB或Confluent可以提供帮助,但自己做起来就不太直观了。

  • 对历史数据有一个限制。虽然Kafka的优势之一是可以持久化事件,但扩展可能会成为挑战,并受到可用磁盘空间、服务器和持续的数据迁移的限制。Kafka最初是为内部存储而设计的,所以在云上部署它(在那里存储几乎不是问题)需要额外的工作和持续的妥协。一个公司应该使用较慢但可扩展的网络连接持久性磁盘,还是使用较快但短暂的固态硬盘,这可能需要更多的数据迁移?

  •  Kafka不是为批量数据 设计的。实时数据为很多新的工作流程提供动力,但批处理模式远未过时。Kafka在处理批处理时,必须要有一定的黑客技术,而且用户必须特别注意不要让他们的经纪人在大规模的批读中超载--这些经纪人负责记录他们新的实时数据

◆ 用新眼光评估Kafka

想象一下,经过漫长的过程和克服无数令人沮丧的路障,你已经成功地部署了Kafka作为你的组织的数据管道的核心元素。你也想好了由谁来管理这个系统的不同方面,以及如何管理组成这个新团队的人。

你觉得很有成就感--而且是理所当然的。你做了一些具有挑战性的事情,建立了一个有价值的系统。现在,你和Kafka已经一起经历了很多,你可以可靠地识别和安抚它的大部分怪癖。

但这种情况下有几个假设支撑着。

  • Kafka是解决你的数据基础设施问题的唯一方案

  • 你的系统的价值是值得大量(时间和精力)成本的

我们已经接受了Kafka的现状,因为多年来它提供了同类产品中唯一的解决方案。如果获得一个快速、强大、可扩展的流媒体管道需要一些麻烦,那就这样吧。这只是我们必须要付出的代价。

在某种程度上,这很有意义。我们都有条件地认为,提供高价值的东西一定也会有高成本。对于Kafka的部署来说,这种成本是以时间和精力的形式出现的--对于一个公司来说,时间和精力基本上是和金钱一样的东西。

对于实物商品,制造的进步和竞争的加剧使成本逐渐降低。就技术而言,一个特定的解决方案所需的时间和努力也同样减少。当涉及到创建可扩展的实时数据管道时,可能是时候重新评估价值和成本了。

在类似上述的情况下,也许我们可以重新定义我们的成功理念:不是战胜一个系统固有的复杂问题,而是选择一个能以最少的时间和精力满足我们需求的解决方案。

◆ 重新思考数据管道的成本和价值

许多技术系统,包括用于数据基础设施和分析的系统,正处于类似于工业革命的增长期。

我们创建复杂系统的能力有了很大的提高,我们对数据基础设施可以和应该是什么的想法也发生了变化。初创公司正在为高级分析和数据存储创造新的产品和服务。也许更重要的是,他们正在使数据整合变得更加简单,正如Bessemer Venture Partners在这篇文章中描述的那样。

作为这些初创企业之一--Estuary--的员工,我们很容易看到这种转变在未来几年将产生的影响。

但这对你来说意味着什么呢?这意味着你可以比以往更自由地评估Kafka(或任何其他大牌数据平台)是否适合你。你可以定义是什么让一个系统对你的组织有价值,并以此来评估你越来越多的选择。

对于Kafka,一些替代方案包括Apache Pulsar、Redpanda、StreamSets和Estuary的新产品Flow。

你现在可以公平地期望系统提供可扩展性和灵活性,并减少努力和混乱。随着技术的飞速发展,从你的数据基础设施中期待更多的东西是合理的!

因此,要问自己一些问题,比如说。

  • 什么对你来说更重要:成熟度和用户社区,还是易用性和新的附加值?

  •  Kafka的具体架构 是否与你的业务目标完全一致,以至于物流挑战是值得的?

  • 或者你只是在寻找一个灵活、可靠、实时的数据管道--不一定是Kafka?

  • 如果你已经有一个Kafka部署,你的团队目前花在管理上的一些时间和精力是否可以用在其他项目上?

经过这一切,Kafka很可能是你的组织的最佳选择;你可能会发现在时间和精力上的成本值得它的好处。新的替代方案虽然发展迅速,但对你的组织来说可能仍处于早期阶段。

无论怎样,实时数据基础设施领域是一个值得以客观的心态不断重新评估的领域。直接的、无摩擦的数据基础设施可能的,由于数据在我们的现代世界中的重要性,我们不应该期望什么。

来源:

https://www.toutiao.com/a7011911825407443493/?log_from=3d2706ed289fa_1633916306665

“IT大咖说”欢迎广大技术人员投稿,投稿邮箱:aliang@itdks.com





来都来了,走啥走,留个言呗~



 IT大咖说  |  关于版权 

由“IT大咖说(ID:itdakashuo)”原创的文章,转载时请注明作者、出处及微信公众号。投稿、约稿、转载请:ITDKS10(备注:投稿),茉莉小姐姐会及时与您联系!

感谢您对IT大咖说的热心支持!





文章转载自IT大咖说,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论