课程介绍
课程来自于 21讲吃透实时流计算视频课程
这几年,随着越来越多的业务对数据的实时性提出了高要求,实时流计算技术变得越来越火,阿里、字节、京东等互联网大厂都在用它来处理用户兴趣分析,实时异常检测、在线反欺诈和金融风控等实时业务。
如何解决实时流计算问题?
既然明确了问题,接下来我们应该怎样克服呢?我认为可以从系统架构和实时算法两个方面来突破。
系统架构
从架构师的角度看,要为产品设计一个好的实现方案,既要有足够的技术储备,也要充分理解具体的业务问题。通过分析各类实时业务场景,我们可以发现,大多数方案都是基于 “流计算” 技术的。
“流计算”本质上是一种 “异步” 编程方法。业务数据像 “流水” 一样,通过“管道”,也就是“队列”,持续不断地流到各个环节的子系统中,然后由各个环节的子系统独立处理。所以,为了更快地处理“流”,可以通过增加管道的数量,来提高流计算系统的并行处理能力。
目前,开源的流计算框架虽然有许多(比如 Storm、Spark Streaming、Samza 和 Flink),但其实这些主流框架背后,都有着一套类似的设计思路和架构模式。它们都涉及流数据状态、流信息状态、反向压力、消息可靠性等概念。先行理解这套设计思路和架构模式,可以帮助你快速掌握,所有主流流计算框架的工作原理。
实时算法
系统架构提供了整体的计算框架,但要实现具体的业务功能,还需要针对 “流数据” 设计合适的算法。 毕竟,与传统 “块数据” 相比,“流数据”需要连续不断并且实时地进行处理。
对于实时流计算中的算法,最最核心的问题,在于解决 “大数据量” 和“实时计算”之间的矛盾。数据量一大,几乎所有事情都会变得复杂和缓慢。“大数据量”的问题,集中在四个方面:时间窗口很长、业务请求量很大、内存受限、数据跨网络访问。
为了实现 “实时计算” 的效果,需要你针对算法做非常精心的设计。所幸的是,这些算法的设计和实现也是有规律可循的。 你只需要掌握几种特定类型的算法,比如计数、求和、均值、方差、直方图、分位数、HyperLogLog 等。而对于更加复杂的算法,如果不能直接进行实时计算,那我们可以通过 Lambda 架构来解决!
课程设计思路
本课程就是从 “系统架构” 和 “实时算法” 这两个方面,来带你理解实时流计算系统。为此,我为你设计了以下学习路径。(注意,模块三为 “实时算法” 部分,其余模块为 “系统架构” 相关。)
模块一,实时流计算入门。我将介绍流计算系统的整体架构和使用场景,以及入门流计算前,需掌握的编程基础,比如 NIO 和异步编程,以及异步系统中的 OOM 和反向压力问题。
借此,你会对实时流计算系统有个整体的认识,并对 “流” 的本质有个初步理解。
模块二,自己动手做一个流计算框架。 我将介绍如何从 JDK 里最基础的工具类,一步步开发出一个分布式流计算框架。
通过这种自己动手的方式,希望帮助你理解流计算系统的核心概念及实现原理。
模块三,核心技术篇。我将详细讲解流计算能够解决哪些类型的问题,包括流数据操作、时间维度聚合计算、关联图谱分析、事件序列分析、模型学习和预测等。此外,还将讨论流计算过程中非常重要的状态管理问题,并带你思考如何最终将前面的流计算框架扩展为分布式系统。
借此,你会掌握实时流计算中涉及的各种算法,这些算法会有助于你解决各种实时业务场景中的问题。
模块四,开源流计算框架原理解析及实战。 我将详细对比和分析,各种开源流计算框架的具体实现,来巩固你对流计算核心概念和技术的理解,并带你正确理解这些框架的 API 设计,以便你在各种业务场景下,能够灵活地使用它们,最终实现各种复杂的业务逻辑。
此外,我还会通过两个案例,也就是实时风控和实时数据同步,来带你理解如何将开源流计算框架,运用到具体的业务场景中。
文件目录
21讲吃透实时流计算.rar
声明:本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理,邮箱:502212423@qq.com。