开发者学堂课程【实时计算 Flink 实战课程:应用场景与实时计算 Flink 版产品介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/330/detail/3705
应用场景与实时计算 Flink 版产品介绍
内容介绍:
一、技术原理
二、技术场景
三、应用场景
四、行业案例
五、总结
一、技术原理
1.通晓原理举一反三
通晓产品背后技术原理,开发架构设计举一反三
对于数据开发人员,提升效率避免踩坑
对于数据架构人员,培养全局架构嗅觉
2.数据处理时效性的四大概念
(1)实时计算
强调计算实时特征
指计算过程快速、请求响应快速
描述的是业务实时需求特征:出结果一定要快
(2)离线计算
强调计算离线特征(非实时)
计算过程离线(非实时)、请求响应离线(非实时)业务离线需求特征:不要求快,最终出结果就行
(3)流计算(流处理)
强调计算是流式处理的
常驻、事件触发、通常具备实时性
技术特征,而非业务特征
(4)批处理
强调计算是批式处理的
非常驻,外界触发、通常不具备实时性技术特征,而非业务特征
实时计算与离线计算和流计算与批处理两个维度,实时计算、离线计算描述业务特征,处理业务需求;流计算与批处理强调技术需求。
3.数据处理两大门派
批处理分为三步,第一步为数据装载,装载到存储系统中,第二步批量计算系统将数据加载到存储中,可能进行一部分处理,第三步外界发起数据请求或计算请求,计算出结果,返回给用户。本质是装载、存储、计算。
流处理它的使用的方式完全不一样,用户通常会把一个流作业提前写好,提交到集群或者提交到计算系统里面,数据写入一条,就会触发一条流式计算的运算,可以理解为数据写入一条,流式计算就会触发一次,运算一次,并最终写出一个结果。
本质是事件触发的一个计算。转数据来一条计算一条,输出一条,这个过程非常的短。批处理,流处理描述的是这个数据处理的两大门派,是截然相反的两种处理模式。
4.流式处理特征
(1) Event 时间属性的事件
由事件触发的计算,Event 是计算的触发源,强调与时间相关。
(2) Stream 无界的事件集合
对于流计算,数据是源源不断的进入流计算系统,数据源不进行人为的干扰,数据会源源不断的进入消息队列,最终进入流式处理系统。
(3) Process 实时的在线处理
5.流式处理的业务价值
数据的价值随着时间流逝会迅速降低
案例:
实时化的价值:电商营销活动提升成交金额
二、技术场景
1. Stream Analytics
传统的分析方式通常是利用批查询,或将事件记录下来并基于此有限数据集构建应用来完成。为了得到最新数据的分析结果,必须先将它们加入分析数据集并重新执行查询或运行应用,随后将结果写入存储系统或生成报告。
流式查询应用会接入实时事件流,并随着事件消费持续产生和更新结果。
这些结果数据可能会写入外部数据库系统或以内部状态的形式维护。仪表展示应用可以相应地从外部数据库读取数据或直接查询应用的内部状态。
流式分析应用的优势
和批呈分析相比,由于流式分析省掉了周期性的数据导入和查询过程,因此从事件中获取指标的延迟更低。不仅如此,批量查询必须处理那些由定期导入和输入有界性导致的人工数据边界,而流式查询则无须考虑该问题。
Flink 如何支持数据分析类应用
Flink 内置了一个符合 ANSI 标准的 SQL 接口,将批、流查询的语义统一起来。无论是在记录事件的静态数据集上还是实时事件流上,相同SQL查询都会得到一致的结果。
同时 Flink 还支持丰富的用户自定义函数,允许在SQL中执行定制化代码。如果还需进—步定制逻辑,可以利用 Flink DataStream API和 DataSet API 进行更低层次的控制
应用场景:
实时数仓、实时数据中台、实时BI
2.Stream Pipelines
数据管道和ETL作业的用途相似,都可以转换、丰富数据,并将其从某个存储系统移动到另一个。
但数据管道是以持续流模式运行,而非周期性触发。因此它支持从一个不断生成数据的源头读取记录,并将它们以低延迟移动到终点。例如:数据管道可以用来监控文件系统目录中的新文件,并将其数据写入事件日志;另一个应用可能会将事件流物化到数据库或增量构建和优化查询索引。
数据管道的优势
和周期性 ETL 作业相比,持续数据管道可以明显降低将数据移动到目的端的延迟。此外,由于它能够持续消费和发送数据,因此用途更广,支持用例更多。
Flink 如何支持数据管道应用
很多常见的数据转换和增强操作可以利用Flink的SQL接口《或Table API)及用户自定义函数解决。如果数据管道有更高级的需求,可以选择更通用的 DataStream API 来实现。 Flink 为多种数据存储系统(如: Kafka、Kinesis.Elasticsearch、JDBC 数据库系统等)内置了连接器。
同时它还提供了文件系统的连续型数据源及数据汇,可用来监控目录变化和以时间分区的方式写入文件
应用场景:
实时数据清洗、实时索引构建、实施警告
3.Event-Driven Application
事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新或其他外部动作。事件驱动型应用是基于状态化流处理来完成。
在该设计中,数据和计算不会分离,应用只需访问本地(内存或磁盘)即可获取数据。系统容错性的实现依赖于定期向远程持久化存储写入checkpoint。下图描述了传统应用和事件驱动型应用架构的区别。
事件驱动型应用的优势
事件驱动型应用无须查询远程数据库,本地数据访问使得它具有更高的吞吐和更低的延迟。
而由于定期向远程持久化存储的 checkpoint 工作可以异步、塔量式完成,因此对于正常事件处理的影响甚微。事件驱动型应用的优势不仅限于本地数据访问。传统分层架构下,通常多个应用会共享同一个数据库,因而任何对数据库自身的更改(例如:由应用更新或服务扩容导致数据布局发生改变)都需要谨慎协调。反观事件驱动型应用,由于只需考虑自身数据,因此在更改数据表示或服务扩容时所需的协调工作将大大减少。
Flink 如何支持事件驱动型应用
事件驱动型应用会受制于底层流处理系统对时间和状态的把控能力,Flink 诸多优秀特质都是围绕这些方面来设计的。它提供了一系列丰富的状态操作原语,允许以精确一次的一致性语义合并海量规模〔TB级别)的状态数据。
此外,Flink 还支持事件时间和自由度极高的定制化窗口逻辑,而且它内置的 ProcessFunction 支持细粒度时间控制,方便实现一些高级业务逻辑。
同时,Flink 还拥有一个复杂事件处理( CEP )类库,可以用来检测数据流中的模式。
应用场景:
反欺诈、异常检测、复杂规则告警
三、应用场景
1.实时数仓
(1)实时数仓
传统意义上将数据汇总到离线计算引擎,通过N+1天生成数据报表的模式已经不能满足快速增长的业务需求,互联网的在线特性也将业务需求推向了实时化,随时根据当前客户行为而调整策略变得越来越常见,传统数仓开始向实时数仓转型。
(2)客户价值
快速响应业务需求
秒级返回业务指标,快速进行多维分析节省用户成本
业务结果实时数据化,协助用户及时调整方向,减少无用投入
2.实时风控
(1)实时风控
风控是用户业务中的核心功能,应用范围非常广泛,包括内容风控、金融风控、营销风控等几大类型。互联网时代的到来产生大量的数据、访问、请求,新的业务需求促使传统的风控系统需要向大数据场景转型
(2)客户价值
①实时性强
大数据场景下高吞吐、低延时,毫秒级报警拦截
②独有事件规则支持
实时计算 Flink 独有的 CEP 语法天然支持规则设定,完美适配风控场景
3.实时机器学习
(1)实时机器学习
机器学习作为大数据的重要场景在越来越多的行业得到应用,但传统的算法,主要侧重于使用静态模型和历史数据进行训练并提供预测,如何针对用户短期的行为进行准确的、个性化的预测,从而动态实施决策就成为新的难题
(2)客户价值
①运营精细化
可支持对百万级客户快速画像,精准定位用户特性,个性化运营提高客户成交量与留存率
②低门槛
无缝集成实时计算学习算法平台,一站式完成数据开发、模型训练、场景预测全流程
四、行业案例
1.金融行业应用
长链路且快速变化的业务︰从业务需求出发,需要分析用户的行为轨迹和交易记录,以应对业务的快速变化。
越来越多的实时数据需求:目前需要更多的实时数据来支持业务决策。比如需要依据流量监控、销售情况等,对不同的资源位做出相应调整;同时部分活动也需要实时数据来增强与用户的互动,尤其在金融产品营销活动中需要实时针对用户行为调整策略。
越来越高的数据质量要求:数据的结果会直接影响业务决策和线上运营活动的效果,数据质量也决定了计算结果是否可以作为判断的依据。越来越多的实时风控需求:传统风控系统需要完成从依赖专家规则到智能风控的实时化转变,如信用违约、账户安全、贷款欺诈等典型场景
2.在线教育行业应用
在线教育行业实时化和智能化转型的过程中,对实时数据处理面临很多问题:
(1)数据量大:包括日志、数据库、业务集群数据等均有实时分析需求。
(2)低延时:很多场景对低延时需求非常迫切。
(3)使用角色多样化:公司中各个角色,包括Bl分析师、其他技术人员、业务运营人员等对实时报表都有需求。
(4)需求复杂:在线教育行业业务模型复杂,一些实时B场景逻辑也非常复杂,需要平台有完善的 SQL 支持.
3.内容资讯行业应用
在日益激烈的行业竞争态势下,各个主流内容资讯提供商都在探索AI+大数据的解决方案,来进行精细化运营,助力业务发展新模式,从业务需求上来讲,在大数据方面遇到的挑战如下:
(1)数据量大,增速迅猛:主流内容分享平台在新增用户数、日均 UV/PV 等核心指标上,产品初期每年都会有翻倍的增长。
(2)业务形态复杂:大量内容分享产品的母公司都在探索新的内容输出方式,如新闻类、短视频类、直播类等。各种业务形态差异大,对平台的通用化要求高。
(3)实时性要求高:内容分享平台的核心系统有个性化推荐、广告计费、风控等业务,业务上要实现精细化运营,对数据的实时性要求更高。
4.实时计算电商行业应用
在大数据时代,所有服务抢夺的关键是用户的剩余时间,用户在某个平台可能停留的时间以分钟为单位统计,传统离线T+1的分析统计已经远远不能够满足业务上的实时需求,而且用户每一天的需求都可能发生变化,用前一天的数据预测用户今天的变化显然也是不合理的,因此实时计算在电商行业的重要性越发突出。
5. 实时计算在广告行业应用
(1)在线反作弊:互联网广告的核心是流量,流量作假将直接影响收益。据ANA统计,大约有37%的在线广告点击存在作弊,可见在线反作弊模块的重要性,处理不当可能造成巨大的资金浪费。
(2)在线计费:很多广告系统是程序化交易(如 DSP),每次点击都会扣除广告主相应的费用,这要求系统能够快速完成结算、扣除费用,并下线费用不足的广告。并且计费需要扣除作弊流量,维护广告主的权益。
(3)在线受众定向:受众定向主要是计算用户的各种标签,有时用户短期内的行为更有参考价值,产出的短期标签更有效,比如受众突然看到某篇文章进而对某类产品产生了兴趣。这在效果类广告上更加明显。
(4)在线点击反馈:可以根据用户在线点击情况去调整CTR模型以更好的预估点击率。
(5)实时索引:广告是一种商业行为,广告主会根据当前广告的效果调整广告策略,每次调整后都需要尽快生效,否则将造成资金浪费,因此需要实时把广告的更新或发布都建到广告索引中去。
(6)实时广告链接检测:根据访问日志快速判断某些广告链接是否失效,如果失效则快速将其下线,防止资损。
五、总结
1.技术原理
从计算四大分类到批处理、流处理以及处理的具体特点,引出流计算的业务价值,通过天猫双11举例阐释。
2.技术场景
三个技术场景,所有的业务的场景和案例都是基于三个技术场景做叠加、转化、包装出来的结果。
3. 业务场景
三个不带行业属性的业务场景。
4. 行业案例
五个行业案例是三个技术场景、三个业务场景在不同行业落地的最佳实践,行业中遇到的问题以及如何解决。