导读:实时数据处理技术正在发生变化。让我们一起了解实时数据处理的细节以及明年情况将如何发生变化。
数据分析技术正在发生变化。数据批量处理已经落伍,实时时代已然到来。随着这种转变,数据工程师必须掌握新的思维方式、新的工具与新的术语。
我们已经跨过了 2023 年的“驼峰”,随着下半年的临近,实时数据处理的重要性和采用率都在不断增长。它的价值不容低估,数据工程和数据平台团队正在转向可以帮助他们实现这一目标的技术和工具。
在这篇文章中,我将解释什么是实时数据处理,为什么它不是你想象的那样,并提供一些有用的参考架构来帮助你规划、管理和构建实时数据处理引擎。
了解实时数据处理
实时数据处理只是实时数据和实时分析机制中的一个齿轮。
实时数据处理正好位于实时数据摄取和实时可视化(或实时数据自动化!)之间,将实时数据列车的引擎和车厢连接起来。
全部登上实时列车
但不要仅仅因为它是实时数据系列中的中间子系统就认为它应该被你和你的团队忽视。
抛开混合的比喻不谈,在实时流数据架构中实现实时数据处理的系统和工具很快就会成为瓶颈。他们的任务是在处理越来越大的“大数据”时保持传入数据的新鲜度、超低查询延迟与高用户并发性。
如果你正在构建一个实时分析仪表板,需要为数千个并发用户显示毫秒级的数据和毫秒级的查询延迟,那么你的数据处理基础设施就能够更好地进行扩展。
什么是实时数据?
实时数据具有以下 3 个特质:
很新鲜。实时数据应在创建后几秒(如果不是毫秒)内提供给下游用例和消费者。这有时也称为“端到端延迟”。
它非常快。实时数据查询必须具有以毫秒为单位的“查询响应延迟”,无论其复杂程度如何。当你构建实时分析时,过滤器、聚合和联接都在表中,复杂的查询不会减慢速度。为什么?因为实时分析通常与面向用户的产品集成,而需要几秒钟或更长时间的查询将极大地降低用户体验。
它的并发性很高。实时数据几乎总是会被许多用户同时访问。我们不会为少数浏览 Looker 仪表板的高管构建数据管道。我们正在构建产品内分析、实时个性化、实时欺诈检测以及更多面向用户的功能。实时数据面向大众,因此需要扩展。
什么是实时数据处理?
实时数据处理是对流数据进行过滤、聚合、丰富和以其他方式转换,并在摄取后将其快速发送给下游消费者的实践。
如果实时数据处理系统一端连接到每秒产生数百万个事件的流数据平台,另一端连接到包含数千个活跃用户的庞大用户群,那么它必须能够处理其间的所有转换没有错过任何一个节拍。
实时与批量数据处理有何不同?
实时数据处理和批处理数据属于根本的不同方式。实时数据处理尽快处理数据,一旦产生新的数据事件就摄取、转换和公开数据产品。
相比之下,批处理按一定的周期计划处理数据,使用 ETL/ELT 工作流程偶尔从源系统中提取数据,对其进行转换,然后将其加载到云数据仓库等内容中。
实时分析和批量分析使用不同的数据处理方法实时数据处理和批量数据处理之间的区别,我们从名称上就可以明显看出:一个是“实时”处理,另一个是“批量”处理。除了它们的名字之外,一些重要的观点在两者之间划出了一条粗线:
数据摄取。实时数据处理和批处理使用非常不同的数据摄取模式。实时数据处理遵循事件驱动的架构模式。一旦事件产生,就会触发数据处理。实时数据处理系统尽可能避免在上游系统中临时存储事件数据的数据摄取模式(尽管实时变更数据捕获工作流程有时可能是一个独特的例外)。另一方面,批量数据处理通常需要将事件放置在上游数据库、数据仓库或对象存储系统中。有时会按计划检索与处理这些数据。
数据工具。实时数据处理和批处理使用非常不同的工具集来实现其目标。实时数据处理依赖于Apache Kafka和Confluence等事件流平台、AWS Lambdas 等无服务器功能,或用于数据摄取和触发处理工作流程的实时变更数据捕获。他们利用Apache Flink(或其衍生产品,例如Decodable )等流处理引擎来处理动态数据和/或实时数据库(特别是那些支持实时物化视图的数据库),如ClickHouse以最小的延迟执行复杂的过滤、聚合和丰富数据。而另一方面,批量数据处理使用Airflow、Dagster或Prefect等编排器或调度器偶尔运行从源系统检索数据的 Python 代码或 Spark 作业(有时效率较低下),将数据加载到云数据仓库中,并使用dbt等工具在仓库中对其进行转换。
访问方式。实时数据处理和批量数据处理针对不同的用户有不同目的,向下游消费者暴露数据的方式也有很大的不同。实时数据处理通常支持面向用户的功能,这些功能要求许多并发用户进行低延迟数据访问。它专为运营决策、实时可视化、实时分析和自动化而设计。批处理支持长时间运行的分析查询,不需要低延迟,并且必须只为少数商业智能或数据科学消费者提供服务。它专为战略决策和长期预测而设计。
实时数据处理和流处理一样吗?
不,实时处理和流处理也不一样。流处理是实时数据处理的一个子集,处理有限的状态和短时间窗口。实时数据处理包括使用支持高频摄取、增量物化视图和低延迟查询的实时数据库在无限时间窗口内进行大状态的数据处理。
实时数据处理和流处理之间的核心区别在于,实时数据处理针对长时间存储的大量数据进行了优化。Apache Flink 或 ksqlDB 等流处理引擎很难在无限时间窗口或高基数上转换数据。实时数据处理利用完整的 OLAP 在无限时间窗口上对具有许多潜在高基数字段的数据运行转换。
流式分析利用流处理引擎,而实时分析利用完整的 OLAP
实时数据处理利用实时数据库在物化视图中实时存储转换,或者维护可在查询时访问的原始数据集的长期历史记录。选择高度优化的列式 OLAP 存储即使对于大量数据的复杂分析也能实现低查询延迟。
实时数据处理的用例有哪些?
实时欺诈检测是实时数据处理的一个非常好的例子。实时欺诈检测引擎摄取金融交易事件,将交易元数据与历史数据进行比较(有时使用在线机器学习)以做出欺诈判断,并在几毫秒内将其判断结果公开给销售点或 ATM机器。
实时欺诈检测是实时数据处理的一个很好的例子。
这显然是一个实时数据处理示例,因为它需要维护状态。实时欺诈检测系统必须维护交易数据的长期历史记录,这些数据用于训练和更新在线特征存储或启发式模型,这些模型在交易流入时执行实时数据处理。它们支持流数据摄取和低延迟、高并发访问。
实时数据处理的真实用例
实时数据处理在许多行业得到广泛采用。实时数据处理的一些示例可以在以下行业和场景找到:
-
电子商务网站的实时个性化
-
物流公司的实时运营分析仪表盘
-
SaaS 中面向用户的分析仪表盘
-
零售业的智能库存管理
-
服务器管理中的异常检测
还能举出还有更多这样的用例,各位可以集思广益。
电子商务中的实时个性化
实时个性化是一种根据实时收集的数据(包括当前浏览会话的数据)定制用户在线体验的方法。
一个典型的实时个性化示例,其涉及电商网站在浏览或结帐期间向访问者展示定制优惠。定制的优惠可能包括与访问者查看或添加到购物车的商品密切匹配的产品。
实现此用例需要实时数据处理。必须实时捕获和处理来自用户浏览会话的数据,以确定在活动会话期间将哪些类型的个性化优惠放回到Web应用程序中。
整个实时个性化过程最多只需要几秒钟——从摄取到个性化的整个过程最多只需要几秒钟。物流运营分析
假设一家航空公司希望在飞机、机场以及机场之间的网络中追踪行李。实时数据平台可以使用实时数据处理来分析来自物联网传感器和“箱包上的标签”的流数据。
这些数据用于更新实时仪表板,帮助航空公司工作人员跟踪行李、处理乘客卸载事件或登机口变更,以及繁忙机场航站楼的其他最后一刻的要求。
SaaS 中面向用户的分析
实时数据处理最常见的应用之一是面向用户的分析,有时称为“产品内分析”。
SaaS 的企业通常希望分析自己和团队如何使用该软件,而面向用户的分析仪表板可以提供该信息。
如果数据是过时的,用户体验就会受到影响。实时数据处理使 SaaS 用户能够实时获取最新的使用情况分析。
零售业的智能库存管理
与实时个性化相关,智能库存管理涉及就如何适当地安排产品库存以满足消费者需求做出更快、更好的决策(甚至可能是自动化决策)。
零售商希望避免缺货情况——用户想要购买的产品缺货。使用实时数据处理,零售商可以实时监控需求和供应,并帮助预测需要新库存的地方。
这可以带来更好的购物体验(例如,仅显示肯定有库存的产品),同时还允许零售商将库存重新路由到需求最高的区域分销中心。
服务器管理中的异常检测
直接拒绝服务 (DDos) 攻击可能会瞬间导致服务器瘫痪。运营托管服务的公司(从云提供商到 SaaS 构建商)的需求是能够尽快检测和解决 DDoS 攻击,以避免其应用程序服务器崩溃。
通过实时数据处理,人们可以监控服务器资源和实时请求,通过实时异常检测快速识别 DDoS 攻击(或其它相关问题),并通过自动化控制系统阻止潜在的攻击者。
实时数据处理的参考架构
如果你正在尝试构建实时数据平台,实时数据处理将发挥重要作用。
每个实时数据处理架构都不可避免地包含实时数据摄取,这通常通过使用 Kafka 等事件流平台来进行。此外,某种形式的流处理引擎或实时数据库将用于实时转换数据。最后,低延迟 API 层将用于以各种格式公开数据,并支持面向用户的分析、自动化和实时可视化。
在下面找到一些用于实时数据处理的常见参考架构。
面向用户的分析架构
在此参考架构中,事件通过事件总线(例如 Apache Kafka)捕获并摄取到实时数据库中,该数据库负责实时数据处理。应用程序用户使用低延迟、高并发 API 与数据库生成的实时分析进行交互。
面向用户的分析依赖于实时数据库中的实时数据处理运营分析架构
在此参考架构中,通过与上述相同的方法捕获事件并将其存储在实时数据库中。但是在此示例中,不是用户通过 API 访问实时分析,而是操作自动化系统利用实时数据处理来启动软件功能,无需人工干预。实时数据库的使用方式也与流处理功能类似(尽管不相同),为数据仓库中的批处理准备数据。
有时,实时数据处理服务于自动化,而不是可视化。实时数据平台架构
在此架构中,事件流和事实表被引入实时数据平台,该平台将实时数据引入(通过本机数据连接器)、实时数据库和实时 API 层集成到单个功能接口中。
同时,数据仓库支持BI商业智能和数据科学工作的批量数据处理。
实时数据平台可以简化实时数据处理工作量
实时数据处理的常用工具
如上所述,实时数据处理涉及事件流、流处理、实时数据库、实时 API 和实时数据平台的某种组合。
事件流平台
如果没有实时数据摄取,就无法进行实时数据处理,而事件流平台是这里的首选技术。
事件流平台的一些示例包括:
-
Apache·Kafka
-
Stream Cloud
-
Pandas
-
谷歌发布/订阅
-
AWS
流处理引擎
流处理引擎可能也不会用于实时数据处理。在没有实时数据库的情况下,可以使用流处理引擎来转换和处理动态数据。
流处理引擎能够维护一定量的状态,但它们无法像实时数据库那样利用完整的 OLAP。
无论有没有实时数据库,它们都可以成为实时数据处理实现的重要组成部分。
流处理引擎的一些产品包括:
-
Apache Flink
-
Apache Spark
-
Kafka Stream
-
ksql数据库
实时数据库
实时数据库可以在无限的时间窗口内进行实时数据处理。它们通常支持增量物化视图。它们支持高写入频率、过滤聚合上的低延迟读取和连接(不同程度的复杂性)。
实时数据库的一些示例包括:
-
ClickHouse
-
Apache Doris
-
Apache Kylin
实时API层
实时数据处理器必须向下游消费者公开做转换。在理想的情况下,这是通过实时 API 层实现的,该层使各种消费者能够同时访问和利用数据。
实时数据平台
实时数据平台通常结合了实时数据处理引擎的部分或全部组件。
例如,Tinybird是一个实时数据平台,支持通过其HTTP 流端点或本机 Kafka 连接器进行实时数据摄取,通过其优化的 ClickHouse 实现进行实时数据处理,以及基于 SQL 的实时 API 层用于向消费者展示实时数据产品。
实时数据处理有何变化?
以数据为导向的团队正在越来越多地采用流技术和实时数据摄取的好处。
在此基础上,Uber、Cloudflare、AirBnB、FanDuel 等大型科技公司已为面向用户的应用程序采用了实时数据处理引擎。这些早期采用者为中小型公司实施经过验证的模式和最佳工具来解决实时数据处理挑战铺平了道路。
特别是,像 ClickHouse 这样的开源实时 OLAP 数据库使得扩展到流处理引擎之外并实时处理数十亿行事件数据成为可能。
像Tinybird这样的实时数据平台利用这些实时数据库,并通过提供本机流数据摄取连接器和实时 API 层来简化开发过程。
实时数据库越来越受欢迎和支持,实时数据平台正在利用它们来实现从摄取到可视化的端到端实时数据产品。
随着实时数据处理领域的这些新来者,数据和工程团队发现可以更快、更轻松、更安全且更具成本效益地在其数据管道中采用和部署实时数据处理方法。
编译:场长
参考:
https://www.tinybird.co/blog-posts/real-time-data-processing
本文为 @ 场长 创作并授权21CTO发布,未经许可,请勿转载。
内容授权事宜请您联系 info@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。