什么是数据流?
数据流是传输连续的数据流(也称为流)的过程,通常会输入流处理软件以获取有价值的洞见。数据流由一系列按时间排序的数据元素组成。数据代表 “事件” 或业务中发生的状态变化,供企业了解和分析非常有用,通常是实时的。数据流的一些示例包括传感器数据、来自网络浏览器的活动日志和财务事务日志。数据流可以看作一条环形传送带,承载数据元素并不断将其送入数据处理器。
随着物联网 (IoT) 的发展和客户期望的增长,数据流和流处理的重要性也随之提高。个人健康监视器和家庭安全系统是数据流源的两个示例。家庭安全系统包括多个运动传感器,用于监视房屋的不同区域。这些传感器会生成连续传输到处理基础设施的数据流,该基础设施可以实时监视任何意外活动,或者保存数据以供日后分析更难检测到的模式。健康监测器是包括心跳、血压或氧气监测器在内的数据流源的另一个示例。这些设备不断生成数据。及时分析这些数据至关重要,因为事关人身安全。
数据流的一般特征是什么?
来自传感器,网络浏览器和其他监控系统的流数据具有某些特征,使其有别于传统的历史数据。以下是流数据的一些关键特征:
时间敏感性
数据流中的每个元素都带有时间戳。数据流对时间敏感,经过一定时间后会失去意义。例如,应在短时间内对来自家庭安全系统的数据进行分析和处理,以保持相关性。
连续性
流数据没有开始或结束。数据流是连续的,并且是实时发生的,但根据系统要求,它们并不总是每分每秒都在操作。
异构性
流数据通常来自数千个可能地理位置相距遥远的不同来源。由于源的差异,流数据杂糅了不同的格式。
不完美性
由于其来源的多样性和不同的数据传输机制,数据流可能有缺失或损坏的数据元素。此外,流中的数据元素可能会不按顺序到达。
易失且不可复制
由于数据流是实时进行的,因此重复传输流非常困难。尽管有重新传输的规定,但新数据可能与上次的数据不同。这使得数据流非常不稳定。但是,许多现代系统都会保留其数据流的记录,因此即使您目前无法访问它,也可以在以后对其进行分析。

数据流对企业的意义是什么?
在当今环境下,流格式的数据非常重要。众多物联网设备和互联网用户每秒都会生成大量连续的实时数据。实时处理这些数据对组织来说既是挑战,也是机遇。
不断变化的数据性质
以往,组织会在一段时间内收集数据,将其存储在数据仓库中,然后分批处理。这样可以节省稀缺的计算能力。近年来,数据结构和处理技术发生了巨大变化。物联网引入了各种生成流数据的传感器。信用卡和在线金融交易还会生成需要分析和验证的实时数据。网络浏览器会生成在线交易和活动日志。数据流和流处理对于处理这些类型的数据至关重要。
海量数据
每秒生成的数据量太大,以至于无法存储在任何数据仓库中。因此,通常会立即评估流数据,以确定它是否是实时数据的关键部分或不是必需的。因此,系统可以流式传输数据并立即对其进行分析,以决定哪些数据存储和哪些不存储,从而帮助组织减少数据丢失和数据存储,并节省基础架构成本。
数据流示例
物联网:物联网包括大量使用传感器收集数据并将其实时传输到数据处理器的设备。物联网数据生成流数据。手表、家庭安全系统、交通监控系统、生物识别扫描仪、联网家电、网络安全和隐私系统等可穿戴式健康监视器实时生成和流式传输数据。
实时股票市场监控器:实时财务数据通常以流格式传输。处理和分析财务数据(如股票价格和市场趋势)可帮助组织快速做出关键决策。
活动和交易日志:互联网也是实时流数据的主要来源。当人们访问网站或点击链接时,网络浏览器会生成活动日志。在线金融交易(如信用卡购买)也会生成时间要求严格的数据,这些数据可以流式传输和处理以进行实时操作。
过程监控器:每家公司都从其内部系统生成数十亿个数据点。通过流式传输这些数据并进行实时处理,企业能够监控系统的运行状况并在情况变严重之前采取行动。例如,制造公司通常拥有用于监控装配线运行状况和检测故障以评估生产风险的设备。这些设备还可以流式传输对时间要求严格的数据,以监控中断,甚至防止中断。
流处理定义和工作原理
为了处理流式处理或实时数据,您需要一个与传统批处理完全不同的流程。流处理器收集、分析和可视化连续的数据流。当然,要进行处理,您需要从数据流开始。数据流是流处理的开端。流处理用于接收数据流并从中获取洞见,通常是实时的。由于流数据的独特性,流处理器需要满足以下要求:
低延迟
流处理器应该能够快速处理连续的数据流。处理速度是头等大事,原因有两个。第一,数据以连续流的形式进入,如果处理器运行缓慢而丢失数据,则无法追溯。其次,流数据在很短时间内就失去了相关性。任何处理延迟都会导致数据价值下降。
可扩展性
流数据并不总是具有相同的容量。例如,传感器通常会生成少量数据,但偶尔会出现数据峰值。由于数据量是不可预测的,如果需要,处理器应扩大规模以处理大量数据。
可用性
流处理器无法承受长时间的停机时间。流数据是连续的,并且是实时到达的。处理器必须具有容错能力,这意味着即使某些组件出现故障,它也应该能够继续工作。流处理器还应该能够收集、处理洞见并立即将其传递给上层进行提交。
流处理器的主要组件是什么?
一般来说,流处理有两种用例:
数据流管理
在数据流管理中,流处理的目标是创建传入数据的摘要或构建模型。例如,从连续的面部数据流中,流处理器可能能够创建面部特征列表。此用例的另一个示例是互联网活动日志。从持续不断的用户点击数据流中,流处理器会尝试计算用户的偏好和喜好。
复杂事件处理
复杂事件处理是适用于大多数物联网数据流的用例。在此用例中,数据流由事件流组成。流处理器的工作是提取重要事件,获得有意义的洞见,然后将信息快速传递到更高层,以便实时采取及时行动。
一些流处理器只处理上述用例中的一个,而一些高级处理器则可以同时处理两个用例。无论使用情况如何,流处理器的端到端架构都应具有以下功能:
数据生成
数据生成系统表示原始数据的各种来源,例如传感器、事务监视器和网络浏览器。它们不断生成数据供流处理系统使用。
数据收集和汇总
上述每个数据生成源都与一个客户端关联,客户端从源接收数据。这些被称为源客户端。聚合器整理来自多个源客户端的数据,将动态数据发送到集中的数据缓冲区。
消息传递缓冲
消息缓冲区从聚合代理获取流数据,并在传递到逻辑处理器之前将其临时存储。消息缓冲区主要有两种类型:基于主题和基于队列。在基于主题的缓冲区中,传入的数据以称为主题的记录形式存储。主题可以有一个或多个数据创建者的数据。基于队列的消息缓冲区更像是一个点对点缓冲系统,从单个创建器读取数据并传送给单个数据使用者。
消息代理
数据收集、聚合和消息缓冲系统共同构成一个消息代理系统。消息代理的功能是聚合来自各种来源的流数据,对其进行格式化,然后将其传递给连续逻辑处理系统。
连续逻辑处理
这是流处理架构的核心。连续逻辑处理子系统对传入的数据流运行各种预定义查询,以获得有用的洞见。查询可能与存储在 XML 文件中的查询一样简单。这些查询会在传入的数据上持续运行。该子系统可以定义一种声明式命令语言,以便用户轻松创建这些查询。连续逻辑处理系统通常在分布式机器上运行,以实现可扩展性和容错性。多年来,逻辑处理系统已经发展为支持动态修改查询和编程 API,以便于查询。
存储和展示
这是流处理中的两个支持系统。存储系统会保存输入数据流的摘要,以备将来参考。它还存储在连续数据流上运行的查询结果。展示系统用于将数据展示给消费者。展示系统可以包括更高级别的分析系统或对终端用户的警报。
流处理与批量处理
传统上,组织会从各种来源(如销售记录、客户互动和评论)收集数据,并将其存储在数据仓库中。然后在数据分析系统中批量处理这些数据。批处理通常适用于历史数据,时间无关紧要。尽管历史数据很重要,但它并不能提供许多组织当前迫切想要的实时洞见。流处理可提供对实时数据的洞见,需要快速处理。
通过批处理,您可以灵活地在方便时存储和处理数据,而流处理则需要实时或接近实时的操作。批处理可以处理对时间无关紧要的数据,也不需要像流处理那样快速。与流处理相比,批处理通常需要更大的基础架构来存储等待分析的数据。但是,大多数组织需要将流处理和批处理相结合才能在当今市场上取得成功。

数据流和处理的好处
流处理和高回报
总体而言,组织可以从数据中获得巨大的价值。实时流处理技术通过分析时间敏感型数据,帮助组织获得优势,以便他们能够对潜在问题做出快速反应和响应。例如,流分析可帮助金融机构监控实时股票价格并做出时间紧迫的决策。它可以帮助他们了解实时市场趋势。强大的可视化系统以及实时流处理基础设施使组织能够提高对关键事件的响应时间。
降低基础架构成本
在传统的数据处理中,数据通常大量存储在数据仓库中。这些存储系统和硬件的成本通常是组织的负担。如果采用流处理,数据就不会大量存储,因此处理系统的硬件成本更低。
减少可预防的损失
实时数据流使组织能够持续监控其业务生态系统。组织得以了解可能存在的安全漏洞、制造问题、客户不满、财务危机或即将发生的社会形象受损。通过持续的数据流和处理,组织可以避免此类可预防的问题。
提高竞争力和客户满意度
通过实时数据处理,组织可以在可能的问题出现之前主动进行解决。这为他们提供了超越竞争对手的时间和优势。数据流和处理还可以提高客户满意度,因为客户问题可以实时解决。有了持续、实时的数据处理,就不会因仓库中等待处理的数据而造成延迟。
数据流和处理面临的挑战
数据流和处理系统处理高度不稳定、实时和连续的数据。流数据通常是异构且不完整的。流数据的本质给数据流和处理带来了许多挑战。
数据量和多样性
数据流处理大量连续的实时数据。数据丢失和数据包损坏是数据流中的常见挑战。流数据通常是异构的,来自不同的地理位置和应用程序。由于数据本身的性质,对于数据流和处理应用程序来说,处理这些数据是一项挑战。
及时性
随着时间的推移,流数据的相关性会逐渐降低。数据流和处理系统应该足够快,以便在数据仍然相关的情况下对其进行分析。流数据的这种时间紧迫性需要有一个高性能、容错的系统。
灵活性
流数据量每天都在增加。为了保持一定水平的服务质量,流处理系统需要动态适应负载。流数据源可能并不总是传输大量数据。在这种情况下,处理系统只能使用最少的资源。当需求增加时,系统应动态分配更多资源。这种对弹性的需求是流处理系统的另一个挑战。
容错性
流处理持续实时进行。流式传输的数据无法重复或准确无误地重新传输。因此,流处理系统无法承受停机时间。与传统的批处理系统相反,数据收集和处理之间没差太多时间。系统必须始终可供利用,并且应始终运行。如果系统的任何部分出现故障,则不应影响处理系统的其余部分。