流式处理简介
了解流式处理的概念,以及实时处理与批处理之间的区别。
概述
流式数据以持续不断、永不终止的方式生成并传输,且数据到达速率是可变的。流式数据可分为两种类型:入站 或 出站。
入站流式数据可能以极快的速度产生,并且数据量巨大,以至于存储它们既无意义、不值得,或根本不可行。我们几乎无法控制其结构、数据完整性,也无法调控数据的生成速度和数量。
这意味着,我们的应用程序必须在数据到达的瞬间就从中提取有价值的信息。换句话说,在大数据流处理中,速度至关重要,因为若不能及时处理,数据的价值会随着时间推移而迅速下降。
流式处理
流式处理 是一种用于实时处理和分析动态数据的技术。
由于数据流可能是无限的,且规模不定,我们无法确定它是否能完全容纳在现有内存中。为解决这一问题,我们采用 时间滑动窗口 技术。我们始终关注最近 N 秒内到达的数据。
当然,我们必须确保第一级处理足够快速。如果初始处理速度过慢,导致错过了滑动窗口中 80% 的数据,用户体验将严重受损。若无法满足此要求,则需通过缓存等技术手段确保后续能够追上处理进度。
流式处理与批处理对比
有些人容易混淆流式处理与批处理。两者的目标都是尽快从大量数据中获取知识。
批处理方法要求先将数据以批次形式下载完毕,再进行处理、存储或分析。相比之下,流式数据是持续不断地流入,能够在生成的瞬间即被实时处理。
如果你需要了解组织的周销售额,那么每小时运行一次批处理,或使用流式处理都没有必要。批处理可以每周运行一次,最好安排在周日,以便周一早上就能获得结果。
另一方面,流式处理始终是实时的,数据就在当下。如前所述,我们通常无法承受存储这些数据,也不允许延迟处理。
真的是实时吗?
实时系统还可进一步分为 硬实时 和 软实时 系统:
- 硬实时系统:这类系统必须严格遵守特定的时间响应要求。一旦未能满足,后果可能非常严重。例如,医疗设备中的心脏起搏器,或防御系统中的反导弹防护系统。
- 软实时系统:这类系统需要对触发事件立即响应,但并不限定在特定的时间窗口内完成。
这并不意味着没有服务等级协议(SLA)。违反 SLA 虽不会危及生命,但通常会被视为用户体验或性能下降的问题。
即使未按时完成任务,SLA 仍可正常运作,唯一的影响只是性能下降。
流式数据的应用示例
- 设备监控:边缘云中的所有设备每隔几毫秒发送一次心跳信号。接收端实时处理数据流,若发现过去一分钟的心跳次数减少,则触发告警。
- 欺诈检测:每秒钟发生的每一笔在线支付都会立即进行欺诈检查分析。系统一旦发现可疑交易,即刻发出告警。
- 股票价格监控:客户设定卖出指令,当某只股票价格达到特定数值时自动执行。流分析器持续监控价格波动流,在价格匹配时立即采取行动。
- 热门文章追踪:我们运营一个新闻网站,有一个机器人会自动推送数据库中标记为“热门”的文章到社交媒体。系统在实时浏览数据流上运行算法,当文章的访问速率超过某个阈值时,即标记为“热门”。
Quiz
请选择所有适用项。在以下哪些使用场景中,你应该使用流处理?