热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

视频流实时计算(实时计算Flink版应用场景与产品介绍)

摘要:本文由阿里巴巴高级产品专家dtdmht老师分享,详细讲解实时计算Flink的具体业务场景并分享实时计算Flink的相关应用案例。内容分为以下四部分:技术原理技术应用应用


摘要:本文由阿里巴巴高级产品专家dtdmht老师分享,详细描述实时计算Flink的具体业务场景,并分享实时计算Flink的相关应用实例。


内容分为以下四个部分。


技术原理技术应用场景行业案例1、技术原理技术原理这一部分介绍,以下主要通过原理,从混淆四个概念、批处理与流程对比、事件触发流程处理四个方面进行介绍。


通晓原理举一反三


从上图所示的实时计算Flink业务体系结构图可以看出,在平时进行业务开发或体系结构设计时,开发者需要熟悉产品背后的技术原理,这样才能避免开发过程中出现不必要的错误对许多架构师来说,只有了解技术背后的原理,才能掌握全球体系结构的嗅觉。


容易混淆的四大概念


下图所示的数据处理时效性的四个概念是从不同的维度描述的,每个概念代表计算的不同特征。 它们称为实时计算、脱机计算、流计算或流处理。 这四个概念其实是从两个维度描述的,横轴上的计算和下的处理,都指向业务的特征。


实时计算描述了快速的计算过程和快速的请求响应。 实时计算描述了计算链路的表达,是实时业务实时计算的需求特征。 离线计算强调了离线的特点,即非实时、非实时的计算过程和非实时的要求响应。 业务的特征是不求特快,只求结果。


因此,横轴上面描述的本质都是业务处理的需要,坐标轴下面描述的是技术需要。


在流计算(流处理)中强调的技术特征是流处理。 流处理具有几个主要特征,如驻留、事件触发和正常实时性。 批处理(也称为批处理计算)强调了计算正被批处理显示处理。 其特点是非常常驻,有外部触发,通常没有实时性。


批处理和流处理的对比


对于批处理,处理分为三个步骤。 第一步是加载数据。第二步是批量计算,系统将此数据加载到存储中并构建相应的元数据和索引等操作。在第三步中,外部发出数据请求并开始计算,然后将计算结果返回给用户。 在流计算中,其方法完全不同。 通常,用户需要预先编写流作业,并将其提交到群集或计算系统。 如上图右侧所示,写入一个数据后,将触发流计算并进行一次运算,然后写入一个结果。 整个过程很短。


因此归纳起来,对于批处理来说,数据加载、数据计算本身是一个完全背离的过程,数据是批量加载,计算也是批量请求。 这就是批处理(它既是一个耗时的计算,也是一个主动开始计算的计算。 积极启动是指用户积极地启动计算请求。 在流量计算中,这正好相反。 流量计算持续,只要有数据输入就持续计算; 另外,低延迟; 这也是由事件引起的计算。


事件触发的流处理


在流处理方面,可以从维基百科中提取三个关键词:事件、流和流程,真名为事件流处理,在工程实践中通常被简化称为流处理和流计算。 3个关键词正确表达了流处理的3个特征:


事件表示流处理由事件触发。 它还具有非常强的时间性,如事件发生时间、事件处理时间和事件进入时间。 流表示事件的流程,也就是上图中说明的“无边界事件的集合”。 对流量计算来说,它的数据是持续的,意味着不断地进入流量计算系统。 也就是说,除非人为中止它,否则数据会不断进入消息队列,最终进入流系统。 所以那本质上是无限的事件流程,我们称之为无界事件的集合。 处理是指流程,流处理作为处理系统也是计算系统,同样也是处理流程系统。 在流计算中,数据进入一个时触发一个,处理并输出一个。 整个过程必须非常快。 也就是说,它是实时在线处理的。流式处理的价值


流媒体处理的价值在于,数据进来生成后,可以快速处理计算,快速获得业务结果。 这就是流媒体计算的价值。 需要流计算的地方一般是数据价值随着时间的推移而迅速下降的场景。


在脱机计算中,保存一个小时、一天或一个月的数据不会影响计算,但在实时计算中,如果数据被及时流传输且没有立即生成结果,数据的价值会随着时间的推移而逐渐降低。


关于流媒体处理的商业价值,可以举出一例。 我相信很多人都熟悉一年一度的双11。 每年双11显示总交易额的实时大屏幕是实时计算的最佳应用。 另一个更有价值的情况是淘宝和天猫卖家通过实时广告流量数据动员和指定广告策略来最大限度地支持他们的实时业务。


2、技术场景Apache Flink官网有三个抽象的技术场景:流分析、流管道、事件驱动应用。 这三个抽象技术场景是我们下面展开的所有业务场景的基础,了解这三个抽象技术场景有助于未来引导其他业务场景和应用案例。


Stream Analytics


目前,中国使用最多的场景是流分析,那就是

对应的是流处理;如上图左侧Batch Analytics对应的是批处理。Batch Analytics大家应该很熟悉了,它是传统批量分析,也就是批处理,基于有限的数据集构建应用来完成事件的批查询或计算,这个过程和上文介绍的批处理流程是一样的。

右边的Stream Analytics正好相反。如图所示,数据流是持续不断的进入query或application计算系统, 并持续的计算结果,结果再写入外部的存储,然后再通过Live Report输出给用户。

以上是批处理和流处理在Analytics这个场景下的延伸介绍,它们的原理式完全一样的。

Stream Analytics的核心优势是它规避了批处理周期性数据导入和计算的高延迟过程。相对于批处理,流处理更快更有效率。

Flink 如何支持数据分析类应用

Flink 最大的特点是它内置了一个符合ANSI标准的SQL接口,可以将批量和流式的语义统一起来。无论是在记录事件的静态数据集上,还是实时事件流上,相同SQL查询都会得到一致的结果。这套系统是阿里云贡献给整个社区的,也是从2015年开始就承接了每年双11实时大屏的工作。历经考验,它是一套非常成熟稳定的系统。

Flink内置的符合ANSI标准的SQL接口,成功地把流式处理的技术平民化,赋能给大量的BI工程师或开发人员。他们只需会写SQLC口或稍微通晓一点 Flink 的流处理语言,就能够做相应的开发。 Flink 所支持的数据分析类应用包括:实时数仓,实时数据中台和实时BI。

Stream Pipelines

如上图,左边是批处理Periodic ETL,右边是实时处理Data Pipeline。从整张图的数据管道来看,流处理相对于批处理来讲,更具有流动性,也就是数据的链路更可以实现实时化。

如上图,对于实时的数据管道,最大的优势是,能够明显降低将数据移动到目的端的延迟,也能够持续消费和发送数据,因此用途更广,支持用例更多。

Flink 如何更好的支持数据管道应用呢? 很多常见的数据转换和增强操作可以利用 Flink 的SQL接口(或Table API)及用户自定义的函数解决。如果数据管道有更高级别的需求,可以选择更通用的DataStream API来实现。

Flink 为多种数据存储系统内置了连接器,如Kafka、Kinesis、Elasticsearch、JDBC数据库等系统。它还提供了文件系统的连续型数据源(Source)及数据汇端(Sink),可用来监控目录变化和以时间分区的方式写入文件。

Stream Pipeline的应用场景有,实时数据清洗、实时搜索构建和实时告警。

Event Driven Application

希望将 Flink打造成流处理界的翘楚,希望达到更加极致的实时化,也就是提供一些更加定制化或个性化的数据处理。达成这样的效果需要围绕Application做到快速的读取和写入等。从坐标来看,希望把 Flink推向另外一个对处理时间要求更极致化的Event-Driven的Application。所以Event-Driven Application满足的是对更极致流的场景需求。

事件驱动型应用的优势是,无需查询远程数据库,本地数据访问使得它具有更高的吞吐和更低的延迟。而由于定期向远程持久化存储的CheckPoint工作可以异步、增量式完成,因此对于正常事件处理的影响甚微。

事件驱动型应用的优势不仅限于本地数据访问,传统分层架构下,通常多个应用会共享同一个数据库,因而任何对数据库自身的更改都需要谨慎协调。而事件驱动型应用,由于只需考虑自身数据,因此在更改数据表示或服务扩容时,所需的协调工作将大大减少。

事件型应用案例包括,反欺诈、异常检测和复杂规则告警,或是其他比较复杂的非二维关系代数模型分析类的应用。

3、应用场景

基于第二部分的技术场景,在上面做叠加和组合,就是以下几个应用场景的介绍。

实时数仓

实时数仓是在当下比较火、综合了Stream Analytics和Pipeline最终形成了实时数仓。它与传统数仓最大的区别是,它能够把前方的业务数据实时进行清洗、汇聚、加工,最后写入实时服务这一层。实时数仓最核心的是把业务的整个链路实时化了,这就极大的满足了一些需要实时看数据等业务需求。

实时风控

实时风控在很多有资损、监察、安全监控等需求的行业应用场景很多。在互联网时代,对于大量的用户访问、数据请求和业务的需求,造就了实时风控系统架构的极致化应用。在互联网初期,大家对时效性没有那么高的要求,很多离线风控系统就可以满足需求,但是现在实时化需求越来越大了。

借助实时风控,当用户在做一些操作的时候,规则引擎在获取数据后会做规则判断,然后反馈结果用户的操作是否合法。

实时机器学习

实时机器学习是一个更宽泛的概念,传统静态的机器学习主要侧重于静态的模型和历史数据进行训练并提供预测。很多时候用户的短期行为,对模型有修正作用,或者说是对业务判断有预测作用。对系统来说,需要采集用户最近的行为并进行特征工程,然后给到实时机器学习系统进行机器学习。如果动态地实施新规则,或是推出新广告,就会有很大的参考价值。

4、行业案例

以上的业务应用案例是不带行业属性的,那么这一部分将结合一些业务场景来看各个行业的案例。主要围绕每个案例产生的背景、需要使用实时计算的痛点、使用实时计算后解决的问题或产生的价值来展开。

金融行业应用

实时计算在金融行业应用比较多是因为金融行业正在面临数据化的转型。转型和变化表现在,从传统到线上,由传统向云上发展,由人决策向机器决策转换等等。这样会带来几个比较大的变化:

第一是它的业务会越来越复杂,以前只有线下业务,现在有了更多不同类型的业务,比如线上业务,终端业务等等;而且服务链条也越来越长,业务的变化也越来越快。第二是数据需要实行一些决策。以前线下业务在柜台,是点对点的业务沟通和服务,对时效性要求不高。但是新增的线上业务或终端业务,就完全需要一个实时数据监控和实时化的决策,对系统实时化需求更高了。这种实时决策的需求同时对数据质量也会越来越高,这样才能避免决策的失误。

第三是传统风控向实时风控的转型。在金融体系中,像信用违约、账户安全、贷款记账等等,以前的线下业务是靠很多人的参与完成决策的,现在全部数字化后,系统的实时风控就能解决。所以实时计算可以实现对系统整个链路数据的实时采集、实时计算和实时实施,最终实时反馈到业务线上。

在线教育行业应用

由于今年疫情的关系,在线教育行业非常火爆,推动了传统教育向在线教育的转型。在线教育行业面临着很大的实时自动化的需求,因为第一是数据量大,用户量暴增造成数据的暴增;第二是延迟,很多推荐场景或是运营场景,对实时化有强烈的诉求。传统教育的报表是以离线时效性给给到老板查阅分析,但随着行业的数据化转型,数据开始产生价值,实时数据能够为一线运营人员提供决策的依据。

第三是复杂,在线教育行业因疫情而爆发增长,属于比较新的行业,那么他们的业务在快速发展的同时,一些BI场景也是处于快速变化中的,而且也比较复杂,因此急需一套完整的实时解决方案,帮助他们完成业务的数据的实时化和AI化的转型。这就需要用到阿里实时计算 Flink 来解决了,它能帮助客户快速使用 Flink SQL
解决业务问题。

内容资讯行业应用

内容资讯行业本身是数据密集型行业,而且已经实现个性化推荐,例如今日头条、抖音等平台。这种个性化的推荐需要大量的数据做实时决策。所以当一个公司,数据量突然猛增,业务发展迅猛,那么就需要实时计算解决方案。

另外,如果业务形态比较复杂也需要实时计算的帮助。有一些资讯平台,不仅有新闻内容,还有UGC、短视频、直播等内容,各种形态千差万别。这就对实时化计算的诉求很强了。第三就是个性化推荐的实现,更是需要实时化计算来助力。它能够实时的把在线业务系统、用户行为等,实现实时抓取并计算,最终服务用户产生个性化推荐。

电商行业应用

实时计算 Flink在阿里首先落地到了电商上,所以应用到电商行业的实时计算应用场景也很多。首先就是上文提到的每年双11的实时巨屏;双11期间淘宝天猫卖家对渠道出货情况的实时了解,广告投放的实时动态等等,以保证能在双11仅仅24小时的窗口期,及时调整销售策略和广告策略,创造最大价值。

广告行业应用

广告行业从诞生之初,都是一个时效性要求非常高的行业。对广告来说大部分的场景或核心场景都对实时化的要求就比较高。广告数据的真实性对企业来讲是非常重要的,那么能够实时地将因广告产生的用户行为数据、索引数据、广告链接点击和检测等等反馈到系统,借助在线反作弊来反馈真实的流量数据,对企业来讲是有价值的。

实时计算 Flink 可以极大减少业务开发人员和架构人员在面临实时计算的各种各样不确定性情况时,做到非常稳定地实现广告业务并保证企业的广告收益。

 

原文链接

本文为阿里云原创内容,未经允许不得转载。


推荐阅读
  • POJ3669题目解析:基于广度优先搜索的详细解答
    POJ3669(http://poj.org/problem?id=3669)是一道典型的广度优先搜索(BFS)问题。由于陨石的降落具有时间属性,导致地图状态会随时间动态变化。因此,可以利用结构体来记录每个陨石的降落时间和位置,从而有效地进行状态更新和路径搜索。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 人人租机作为国内领先的信用免押租赁平台,为企业和个人提供全方位的新租赁服务。通过接入支付宝小程序功能,该平台实现了从零到百的迅猛增长,成为全国首家推出“新租赁小程序”开发服务的阿里巴巴小程序服务商(ISV)。这一创新举措不仅提升了用户体验,还显著增强了平台的市场竞争力。 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • 美团优选推荐系统架构师 L7/L8:算法与工程深度融合 ... [详细]
  • 在Python网络编程中,多线程技术的应用与优化是提升系统性能的关键。线程作为操作系统调度的基本单位,其主要功能是在进程内共享内存空间和资源,实现并行处理任务。当一个进程启动时,操作系统会为其分配内存空间,加载必要的资源和数据,并调度CPU进行执行。每个进程都拥有独立的地址空间,而线程则在此基础上进一步细化了任务的并行处理能力。通过合理设计和优化多线程程序,可以显著提高网络应用的响应速度和处理效率。 ... [详细]
  • 本文深入解析了Elasticsearch写入与查询的底层机制。在数据写入过程中,首先会将数据暂存至内存缓冲区,在此阶段数据尚不可被搜索。同时,为了保证数据的持久性和可靠性,系统会将这些数据同步记录到事务日志(translog)中。当内存缓冲区接近满载时,系统会触发刷新操作,将缓冲区中的数据写入到磁盘上的段文件中,从而使其可被搜索。此外,文章还探讨了查询过程中涉及的索引分片、倒排索引等关键技术,为读者提供了全面的技术理解。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • PHP开发人员薪资水平分析:工程师平均工资概况
    PHP开发人员薪资水平分析:工程师平均工资概况 ... [详细]
  • 在前一篇文章《Hadoop》系列之“踽踽独行”(二)中,我们详细探讨了云计算的核心概念。本章将重点转向物联网技术,全面解析其基本原理、应用场景及未来发展前景。通过深入分析物联网的架构和技术栈,我们将揭示其在智能城市、工业自动化和智能家居等领域的广泛应用潜力。此外,还将讨论物联网面临的挑战,如数据安全和隐私保护等问题,并展望其在未来技术融合中的重要角色。 ... [详细]
  • Hired网站最新发布的开发者调查显示,Python 语言继续受到开发者的广泛欢迎,而 PHP 则被评为最不受欢迎的语言。该报告基于 Hired 数据科学团队对 13 个城市中 9800 名开发者的调查数据,深入分析了当前编程语言的使用趋势和开发者偏好。此外,报告还探讨了其他热门语言如 JavaScript 和 Java 的表现,并提供了对技术招聘市场的洞见。 ... [详细]
  • 字节跳动深圳研发中心安全业务团队正在火热招募人才! ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
author-avatar
mobiledu2502883785
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有