流式计算概述|学习笔记

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
简介: 快速学习流式计算概述

开发者学堂课程【分布式计算入门流式计算概述】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/375/detail/4709


流式计算概述

内容介绍:

一、增量计算和流式计算

二、增量计算和流式计算的应用场景

一、增量计算和流式计算

流式计算是一种特殊的增量计算

1.流式计算

利用分布式的思想和方法,对海量“流”式数据进行实时处理,源自业务对海量数据,在“时效”价值上的挖掘诉求。

2.实时计算

(1)ad-hoc-computing

计算不可枚举,计算在 query 时发生,提交查询的时候发生。(数据的实时计算)

(2)stream computing

计算可枚举,计算在数据发生变化时发生。(实时数据的计算)

(3)continuous computing

支持在大数据集的在线复杂实时计算。(实时数据的实时计算)

3.增量计算

f(x + delta) = g(f(x),delta)

x 是存量,之前遇到的已经处理过的数据

delta 是本次的新增数据

x + delta 作为整体计算,f = 增量计算的结果,在存量数据上已经计算出来的结果。

g(f(x),delta) 增量计算的结果,增量计算和批量计算之间应该是完全一样

f(x) oldValue状态,在本次 delta 计算前的状态

增量计算、批量计算=有状态计算

batch ==> delta 处理的数据越少,计算的时效性越强,系统的吞吐下降。

增量计算是在系统的时效性、系统的复杂性和系统的性能之间不断的做 tradeoff 。

优势:

大家可以关注到阿里巴巴双十一鸟巢中的实时大屏,这个结果是随着事件不断更新的实时产出。如果是用批量计算或者离线计算,只会是十一月十一日做完了才会得到结果。

即便是相同的计算也可以用增量方法去运算,这也会带来一些好处,比如说计算每天的GMV,用传统的批量计算会等到每天的0点或1点数据全部 ready 的情况下去运算,负载压力:1点→6点,7点→8点出结果,1点→5点特别高,平时很低。

整个集群的规模:受峰值的运算压力所决定。

双十一的流量可能是平时流量的数倍或者数十倍,那么采购机器的时候是需要根据双十一的峰值去采购的,而这些机器在平时是用不到的。

如果将这些运用变成增量计算, delta 数据来一批计算一批,很明显的好处是将时间的负载平摊在每二十四小时里面,平摊在每一分钟里面。

如果把整个计算量看做一个矩形或者一个梯形,它的阴影是整个学校的计算量。那么传统的批量计算,它是会集中在少数时间内把它寄上来,所以整个高度就非常高,也就是说需要的机器的数量会非常大。

那利用增量计算完全可以把这个宽度拉宽,相同面积下,所需要的这个高度(也就说峰值就比较少),那么可以达到大大节省整个集群规模的这么一个作用。

那么我们经常会在计算中发现一个问题,也就是说大规模计算系统,它的 input 、 output 是两个很重要的因素,但是实际上 input 、output 之间会膨胀出很多的中间结果。

我们会在真正的线上会发现有些任务它的中间结果甚至是 input 、output 的几十倍甚至上百倍,也就说它中间结果的膨胀是非常非常厉害的。那么中间结果大量的膨胀导致非常大量 io 的消耗,所以整个延时也会增加。

而增量计算它的好处很明显,中间计算结果在很多情况下是不需要膨胀的。增量计算是个有状态的计算,那么如果把离线计算或者批量计算机进行增量化还有一个好处,是可以把之前的状态保存保留下来,那么在整个任务要进行恢复的时候,它实际上可以从最近一次的状态开始。

所以它的好处很明显是整个容错的速度非常快,不像批量计算,要将整个数据全部进行 recomputing 。

因为增量计算是分批次计算,所以实际上它在真实业务场景中出现大量的数据倾斜的计算情况下,有较好的克服倾斜能力。假设我们的数据有10万倍的倾斜,而这个10万倍也是很普通的,双十一排名前三的店铺的成交额可能就是其他店铺成交额的十几万倍。

如果进行批量计算,不同节点的运算,有些节点可能是其他节点运算量的几千上万倍,而整个系统的性能是受最慢的那台机器所决定的。如果我们将这些数据进行分批次运算,比如说分成一千批,实际上每批的数据倾斜的程度是呈线性降低。

当然,不同批次的运算是可以并行进行,所以它可以大大降低数据倾斜对整个计算性能的退化的影响。

中间计算结果实时产出

平摊计算

中间计算状态不膨胀

有状态的 failover

批次运算

降低数据的倾斜对整个计算性能的退化的影响。


二、增量计算和流式计算的应用场景

1. 日志采集与在线分析

2. 大数据的预处理

3. 风险监测与告警

对交易业务的虚假交易进行实时监测与分析。

4.网站与移动应用统计分析

双11运营、淘宝量子统计等各类统计业务分析中,提供实时的业务统计分析报表。

5.网络安全检测

实时监控、实时分析、实时监测、实施对抗

6.在线服务计量与计费管理系统

假设一个广告系统,如果一个广告组充了1000块钱,买了这个镜架,单次点击100块钱。(当然搜广告搜索它的算法不仅根据价格,还有经过根据内容来排序。)

假设花了这个钱排序相对比较靠前,那么实际上大量的流量可能把今天给的预算例如说就是5000块钱,一下就点击光了。但是如果这个广告平台的计费是小时,乃至像之前以天为计算单位,那实际上尽管充值的钱被消耗光了,但实际上它没有统计。也就是说广告位可能还是比较靠前,那这样对平台来说其实是损失非常大。

所以实际上现在业界的一些广告系统都已经引入了实时的计量计费的监测。

7.工业4.0

8.物联网

像从去年比较火的工业4.0、IoT互联网这些场景下数据本身的实时性和计算的时间要求就非常高,那么我相信在今年乃至明年,在工业4.0和物联网实时计算、流式计算将会大行其道。

相关文章
|
4月前
|
存储 传感器 安全
数据不是“铁打的”,从出生到销毁它也有生命周期
数据不是“铁打的”,从出生到销毁它也有生命周期
326 1
|
负载均衡 网络协议 安全
负载均衡4层和7层区别
所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡
|
存储 Java 测试技术
阿里巴巴java开发手册
这篇文章是关于阿里巴巴Java开发手册的整理,内容包括编程规约、异常日志、单元测试、安全规约、MySQL数据库使用以及工程结构等方面的详细规范和建议,旨在帮助开发者编写更加规范、高效和安全的代码。
|
9月前
|
人工智能 API
MMedAgent:专为医疗领域设计的多模态 AI 智能体,支持医学影像处理、报告生成等多种医疗任务
MMedAgent 是专为医疗领域设计的多模态AI智能体,支持多种医疗任务,包括医学影像处理、报告生成等,性能优于现有开源方法。
507 19
MMedAgent:专为医疗领域设计的多模态 AI 智能体,支持医学影像处理、报告生成等多种医疗任务
|
7月前
|
JavaScript 前端开发
TypeScript 定义同步方法
本文详细介绍了在TypeScript中定义同步方法的多种方式,包括使用类、接口、泛型和复杂的数据操作示例。通过理解这些方法,你可以在实际项目中有效地组织和管理你的代码,提高代码的可读性和维护性。
123 19
|
9月前
|
数据采集 监控 数据可视化
优锘科技携手逐际动力,共创数字孪生与具身智能机器人新未来
近日,优锘科技与逐际动力正式宣布达成战略合作,双方将在业务和技术领域展开深度协作,共同探索数字孪生与具身智能机器人的融合应用。这一合作无疑将为智能科技领域注入全新动力,推动行业智能化转型迈向更高水平。
|
11月前
|
存储 Java 数据库连接
南大通用GBase 8s大对象类型clob和text的比较说明
本文探讨了GBase数据库中用于存储大对象数据的字段类型,包括TEXT、CLOB、BYTE和BLOB,分析了它们的特点、适用场景及在实际应用中的最佳实践。重点介绍了不同数据大小对应的字段类型选择,以及在数据库工具和程序中操作这些类型的方法,强调了合理选择字段类型对提升数据库性能的重要性。
|
12月前
|
存储 安全 API
单元化架构,分布式系统的新王!
【10月更文挑战第9天】
663 0
单元化架构,分布式系统的新王!
|
机器学习/深度学习 数据采集 PyTorch
构建高效 PyTorch 模型:内存管理和优化技巧
【8月更文第27天】PyTorch 是一个强大的深度学习框架,被广泛用于构建复杂的神经网络模型。然而,在处理大规模数据集或使用高性能 GPU 进行训练时,有效的内存管理对于提升模型训练效率至关重要。本文将探讨如何在 PyTorch 中有效地管理内存,并提供一些优化技巧及代码示例。
1304 1
|
传感器 大数据 数据处理
大数据处理中的流计算技术:实现实时数据处理与分析
【7月更文挑战第30天】随着分布式系统、云原生技术、数据安全与隐私保护技术的不断发展,流计算技术将在更多领域得到应用和推广,为大数据处理和分析提供更加高效、智能的解决方案。
1110 3