如何使用 Apache 软件处理实时数据
创始人
2024-03-02 08:42:52
0

开源以丰富的项目画布引领着处理实时事件的方向。

在“永不下线”的未来,入网设备规模可能会达到数十亿。存储原始数据,日后再进行分析的方案将不再能满足需求,因为用户需要实时且准确的响应。要对故障等对环境敏感的状况进行预测,实时处理数据也必不可少 —— 数据到达数据库后再处理肯定是来不及的。

有人可能会说,“云可扩展性”能够满足实时处理流数据的需求,但一些简单的例子就能表明它永远无法满足对无界数据流进行实时响应的需求。从移动设备到物联网,都需要一种新的范式来满足需求。尽管云计算依赖于对大数据“先存储后分析”的方案,但也迫切需要一种能够处理持续、杂乱和海量数据流的软件框架,并在数据流到达时立即对其进行处理,以保证实时的响应、预测和对数据的洞悉。

例如,在加利福尼亚州的帕洛阿尔托市,每天从基础交通设施产生的流数据比 Twitter Firehose 还要多。这是很大的数据量。为 Uber、Lyft 和 FedEx 等消费者预测城市交通需要实时的分析、学习和预测。云处理不可避免地导致每个事件大约会有半秒的延迟。

我们需要一个简单而强大的编程范式,让应用程序在类似下面的情况时能够动态处理无界数据流:

  • 数据量巨大,或原始数据的移动成本很高。
  • 数据由广泛分布的资产(例如移动设备)生成。
  • 数据具有转瞬即逝的价值,即时分析迫在眉睫。
  • 需要始终洞悉最新数据情况,外推法行不通。

发布和订阅

事件驱动系统领域中有一个关键架构模式: 发布/订阅 publish/subscribe 消息传递模式。这是一种异步通信方法,其中消息会从 发布者(数据产生方)传递到 订阅者(处理数据的应用程序)。发布/订阅模式可以将消息发送者与消费者分离开来。

在发布/订阅模式中,消息源会 发布 针对某个 主题 topic 的 事件 event 至 服务端 broker ,后者按接收顺序存储它们。应用程序可以 订阅 一个或多个 主题,然后 服务端 会转发匹配的事件。 Apache Kafka 和 Pulsar 以及 CNCF NATS 是发布/订阅系统。 发布/订阅的云服务包括 Google Pub/Sub、AWS Kinesis、Azure Service Bus、Confluent Cloud 等。(LCTT 译注:本段部分术语英文名称更为泛用,针对这些术语,采用了中英文标注。)

发布/订阅系统不会 运行 订阅者应用程序,它们只是 传递 数据给相应主题的订阅者。

流数据通常包含应用程序或基础架构状态更新的事件。在选择架构来处理数据时,发布/订阅框架等数据分发系统的作用是有限的。消费者应用程序的“处理方式”超出了发布/订阅系统的范围。这让开发人员的管理变得极具复杂性。所谓的流处理器是一种特殊的订阅者,可以动态分析数据并将结果返回给同一个服务端。

Apache Spark

Apache Spark 是用于大规模数据处理的统一分析引擎。通常将 Apache Spark Streaming 用作流处理器,例如给机器学习模型提供新数据。Spark Streaming 将数据分成小批量,每个小批量都由 Spark 模型或其他系统独立分析。事件流可以被分组成小批量以进行分析,但流处理器本身必须具有弹性:

  • 流处理器必须能够根据数据速率进行扩展,甚至要能够跨越服务器和云,并且还可以跨实例实现负载均衡,以确保弹性和其他应用层的需求。
  • 它必须能够分析来自不同来源的数据,这些数据源的报告速率可能相差很大。这意味着它必须是有状态的,或者将状态存储在数据库中。当使用 Spark Streaming 作为流处理器时,通常会使用后一种方法,这种方法在需要超低延迟响应时可能会存在性能问题。

相关项目 Apache Samza 也提供了一种处理实时事件流的方法,并使用 Hadoop YarnApache Mesos 来管理计算资源,以便进行弹性扩展。

解决数据扩展问题

需要注意的是,即使是 Samza 也不能完全减轻开发人员的数据处理需求。扩展数据规模意味着处理事件的任务需要跨多个实例进行负载均衡,而使用数据库是实例间共享结果应用层状态的唯一方法。然而,当应用程序任务之间的状态协调转移到数据库时,对性能会产生不可避免的连锁反应。此外,数据库的选择也至关重要。随着系统的扩展,数据库的集群管理会成为下一个潜在的瓶颈。

这个问题可以通过有状态、有弹性的替代方案来解决,并且这样的解决方案可以用来代替流处理器。在应用程序级别(容器或实例内),这些解决方案依据流的更新,动态构建并发、互连的“web 代理”的有状态模型。代理是并发的“微服务”,它们消费单一来源的原始数据并维护它们的状态。基于数据中发现的源之间的真实关系(如包含和临近),代理实现互连以共享状态。代理也因此形成了一个并发服务图,可以分析它们自己的状态和链接到的代理的状态。数据源将原始数据转换为状态,并根据自身及其链接子图的变化进行分析、学习和预测,每个代理都为单个这样的数据源提供微服务。

这些解决方案允许大量的代理(真实数据源的数字类比)分布,甚至还有在应用层使代理互连的分布式图,从而简化了应用架构。这是因为代理之间互连的本质,是映射到解决方案的当前运行时执行实例和代理本身的 URL。通过这种方式,应用程序可以跨实例无缝扩展,而无需担心 DevOps 问题。代理消费数据并维护状态,还会计算自己和其他代理的状态。由于代理是有状态的,因此不需要数据库,并且数据洞察是以内存速度计算的。

使用开源阅读数据世界

我们查看数据的方式正在发生翻天覆地的变化:不再将数据库用作记录系统,取而代之的是现实世界,现实世界事物的数字类比可以不断地传输它们的状态。幸运的是,开源社区在处理实时事件的项目丰富度方面处于领先地位。从发布/订阅模式(其中最活跃的社区是 Apache Kafka、Pulsar 和 CNCF NATS)到持续处理流数据的分析框架,包括 Apache Spark、FlinkBeam、Samza,以及 Apache 许可的 SwimOSHazelcast,对开发人员来说,可选择项目非常之多。可以说,没有什么地方比开源社区的专有软件框架更多了。试看软件的未来,必是开源的天下。


via: https://opensource.com/article/20/2/real-time-data-processing

作者:Simon Crosby 选题:lujun9972 译者:unigeorge 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

4月13日石大胜华涨5.1...
证券之星消息,4月13日石大胜华(603026)涨5.17%,收盘...
2026-04-13 21:49:25
奥克股份等成立新公司,含A...
公开资料显示,近日,江苏极拓奥克能源科技有限公司成立,经营范围包含...
2026-04-13 14:02:40
全球“AI贸易”,中国出口...
AI贸易驱动的存储芯片出口让2025年中国出口额外增速提高了1.2...
2026-04-12 20:17:32
Token之战:连续五周,...
©️新博弈 文丨桨声 根据全球知名大模型API调用平台OpenRo...
2026-04-11 03:50:45
Google Financ...
AIPress.com.cn报道 4月9日消息,谷歌宣布,其升级版...
2026-04-09 23:42:27
AI人工智能ETF平安(5...
截至2026年4月8日 13:01,中证人工智能主题指数(9307...
2026-04-09 15:08:20

热门资讯

值得收藏的 27 个机器学习的... 机器学习 ( Machine Learning ) 有很多方面,当我开始研究学习它时,我发现了各种各...
PHP最佳实践(译) 简介PHP是一门复杂的语言,经过多年折腾,使其不同版本之间高度不一致,有时还有些bug。 每个版本都...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
硬核观察 #885 苹果 AR... 苹果 AR 眼镜被无限期推迟据报道,由于技术上的挑战,苹果公司已经无限期推迟了其轻型增强现实(AR)...
2020 年的 GitHub ... 距离 2020 年结束只剩下区区 24 天,我们即将结束魔幻的 2020 ,迎来新的一年,新的一年或...
开源新闻速递:openSUSE... 今日关注openSUSE 项目组的 Dominique Leuenberger 在他的周报中说:“这...
8 个提升你的隐私防护的开源密... 使用一些顶级开源密码管理器,确保你的登录凭证安全无虞。密码管理器是一项非常有用的实用程序。在你想寻找...
为什么计量 IT 的生产力如此... 在某些行业里,人们可以根据一些测量标准判定一个人的生产力。比如,如果你是一个零件制造商,可以通过一个...
KDE4.11 Beta1 正...   KDE 项目工作组刚刚发布了 KDE Software Compilation 4.11 Bet...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...