首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

(超清)Flink 从0到1实战实时风控系统

(超清)Flink 从0到1实战实时风控系统

download:https://www.sisuoit.com/itkecheng

Apache Flink 是一个结构和分布式处理引擎,用于在无鸿沟和有鸿沟数据流上进行有状况的核算。Flink 能在一切常见集群环境中运转,并能以内存速度和恣意规模进行核算。

Apache Flink 功能强大,支撑开发和运转多种不同种类的运用程序。它的首要特性包含:批流一体化、精密的状况管理、事情时刻支撑以及准确一次的状况一致性确保等。Flink 不仅能够运转在包含 YARN、 Mesos、Kubernetes 在内的多种资源管理结构上,还支撑在裸机集群上独立布置。在启用高可用选项的情况下,它不存在单点失效问题。事实证明,Flink 已经能够扩展到数千中心,其状况能够到达 TB 等级,且仍能坚持高吞吐、低推迟的特性。世界各地有很多要求苛刻的流处理运用都运转在 Flink 之上。

接下来,咱们来介绍一下Flink中的几个重要概念。

批与流

批处理的特色是有界、耐久、很多,十分适合需求拜访全套记载才能完结的核算作业,一般用于离线核算。

流处理的特色是无界、实时, 无需针对整个数据集履行操作,而是对经过体系传输的每个数据项履行操作,一般用于实时核算。

在Spark的世界观中,一切都是由批次组成的,离线数据是一个大批次,而实时数据是由一个一个无限的小批次组成的。而在Flink的世界观中,一切都是由流组成的,离线数据是有边界的流,实时数据是一个没有边界的流,这就是所谓的有界流和无界流。

无界流:有界说流的开始,但没有界说流的结束。它们会无休止地发生数据。无界流的数据必须持续处理,即数据被吸取后需求马上处理。咱们不能比及一切数据都抵达再处理,因为输入是无限的,在任何时分输入都不会完结。处理无界数据一般要求以特定次序吸取事情,例如事情发生的次序,以便能够揣度成果的完整性。

有界流:有界说流的开始,也有界说流的结束。有界流能够在吸取一切数据后再进行核算。有界流一切数据能够被排序,所以并不需求有序吸取。有界流处理一般被称为批处理。

有界流与无界流

Flink 拿手处理无界和有界数据集 准确的时刻控制和状况化使得Flink的运转时(runtime)能够运转任何处理无界流的运用。有界流则由一些专为固定巨细数据集特殊规划的算法和数据结构进行内部处理,发生了出色的功能。

布置运用到任何地方

Apache Flink 是一个分布式体系,它需求核算资源来履行运用程序。Flink 集成了一切常见的集群资源管理器,例如Hadoop YARN、 Apache Mesos和 Kubernetes,但一起也能够作为独立集群运转。

Flink 被规划为能够很好地作业在上述每个资源管理器中,这是经过资源管理器特定(resource-manager-specific)的布置形式完成的。Flink 能够选用与当时资源管理器相适应的方式进行交互。

布置 Flink 运用程序时,Flink 会依据运用程序装备的并行性主动标识所需的资源,并从资源管理器请求这些资源。在发生毛病的情况下,Flink 经过请求新资源来替换发生毛病的容器。提交或控制运用程序的一切通信都是经过 REST 调用进行的,这能够简化 Flink 与各种环境中的集成。

运用内存功能

有状况的 Flink 程序针对本地状况拜访进行了优化。使命的状况始终保留在内存中,如果状况巨细超过可用内存,则会保存在能高效拜访的磁盘数据结构中。使命经过拜访本地(一般在内存中)状况来进行一切的核算,然后发生十分低的处理推迟。Flink 经过定时和异步地对本地状况进行耐久化存储来确保毛病场景下准确一次的状况一致性。

分层API

Flink 依据抽象程度分层,供给了三种不同的 API。每一种 API 在简洁性和表达力上有着不同的侧重,并且针对不同的运用场景。

Flink分层API

ProcessFunction:能够处理一或两条输入数据流中的单个事情或许归入一个特定窗口内的多个事情。它供给了对于时刻和状况的细粒度控制。开发者能够在其间恣意地修改状况,也能够注册定时器用以在未来的某一时刻触发回调函数。因而,你能够运用ProcessFunction完成许多有状况的事情驱动运用所需求的根据单个事情的杂乱事务逻辑。

DataStream API:为许多通用的流处理操作供给了处理原语。这些操作包含窗口、逐条记载的转化操作,在处理事情时进行外部数据库查询等。DataStream API 支撑 Java 和 Scala 言语,预先界说了例如map()、reduce()、aggregate() 等函数。你能够经过扩展完成预界说接口或运用 Java、Scala 的 lambda 表达式完成自界说的函数。

SQL & Table API:Flink 支撑两种联系型的 API,Table API 和 SQL。这两个 API 都是批处理和流处理统一的 API,这意味着在无鸿沟的实时数据流和有鸿沟的历史记载数据流上,联系型 API 会以相同的语义履行查询,并发生相同的成果。Table API和SQL凭借了 Apache Calcite来进行查询的解析,校验以及优化。它们能够与DataStream和DataSet API无缝集成,并支撑用户自界说的标量函数,聚合函数以及表值函数。Flink 的联系型 API 旨在简化数据剖析、数据流水线和 ETL 运用的界说。

特色

Apache Flink是一个调集众多具有竞争力特性于一身的第三代流处理引擎,它的以下特色使得它能够在同类体系中脱颖而出。

一起支撑高吞吐、低推迟、高功能。

Flink是现在开源社区中唯一一套集高吞吐、低推迟、高功能三者于一身的分布式流式处理结构。像Apache Spark也只能兼顾高吞吐和高功能特性,首要因为在Spark Streaming流式核算中无法做到低推迟确保;而流式核算结构Apache Storm只能支撑低推迟和高功能特性,但是无法满意高吞吐的要求。

一起支撑事情时刻和处理时刻语义。

在流式核算范畴中,窗口核算的地位举足轻重,但现在大多数结构窗口核算选用的都是处理时刻,也就是事情传输到核算结构处理时体系主机的当时时刻。Flink能够支撑根据事情时刻语义进行窗口核算,也就是运用事情发生的时刻,这种根据事情驱动的机制使得事情即便乱序抵达,流体系也能够核算出准确的成果,确保了事情本来的时序性。

支撑有状况核算,并供给准确一次的状况一致性确保。

所谓状况就是在流式核算进程中将算子的中间成果数据保存着内存或许文件体系中,等下一个事情进入算子后能够从之前的状况中获取中间成果中核算当时的成果,然后不须每次都根据悉数的原始数据来核算成果,这种方式极大地提升了体系的功能,并下降了数据核算进程的资源消耗。

根据轻量级分布式快照完成的容错机制。

Flink能够分布式运转在上千个节点上,将一个大型核算使命的流程拆解成小的核算进程,然后将Task分布到并行节点上进行处理。在使命履行进程中,能够主动发现事情处理进程中的错误而导致的数据不一致问题,在这种情况下,经过根据分布式快照技能的Checkpoints,将履行进程中的状况信息进行耐久化存储,一旦使命出现异常停止,Flink就能够从Checkpoints中进行使命的主动恢复,以确保数据中处理进程中的一致性。

确保了高可用,动态扩展,完成7 * 24小时全天候运转。

支撑高可用性装备(无单点失效),和Kubernetes、YARN、Apache Mesos紧密集成,快速毛病恢复,动态扩缩容作业等。根据上述特色,它能够7 X 24小时运转流式运用,简直无须停机。当需求动态更新或许快速恢复时,Flink经过Savepoints技能将使命履行的快照保存在存储介质上,当使命重启的时分能够直接从事前保存的Savepoints恢复原有的核算状况,使得使命继续按照停机之前的状况运转。

支撑高度灵敏的窗口操作。

Flink将窗口划分为根据Time、Count、Session,以及Data-driven等类型的窗口操作,窗口能够用灵敏的触发条件定制化来到达对杂乱流传输形式的支撑,用户能够界说不同的窗口触发机制来满意不同的需求。

运用场景

在实践出产的进程中,很多数据在不断地发生,例如金融买卖数据、互联网订单数据、GPS定位数据、传感器信号、移动终端发生的数据、通信信号数据等,以及咱们了解的网络流量监控、服务器发生的日志数据,这些数据最大的共同点就是实时从不同的数据源中发生,然后再传输到下流的剖析体系。

针对这些数据类型首要包含以下场景,Flink对这些场景都有十分好的支撑。

实时智能引荐

运用Flink流核算协助用户构建愈加实时的智能引荐体系,对用户行为目标进行实时核算,对模型进行实时更新,对用户目标进行实时猜测,并将猜测的信息推送给Web/App端,协助用户获取想要的商品信息,另一方面也协助企业提高销售额,创造更大的商业价值。

杂乱事情处理

例如工业范畴的杂乱事情处理,这些事务类型的数据量十分大,且对数据的时效性要求较高。咱们能够运用Flink供给的CEP(杂乱事情处理)进行事情形式的抽取,一起运用Flink的SQL进行事情数据的转化,在流式体系中构建实时规则引擎。

实时诈骗检测

在金融范畴的事务中,常常出现各种类型的诈骗行为。运用Flink流式核算技能能够在毫秒内就完结对诈骗判别行为目标的核算,然后实时对买卖流水进行规则判别或许模型猜测,这样一旦检测出买卖中存在诈骗嫌疑,则直接对买卖进行实时拦截,防止因为处理不及时而导致的经济损失

实时数仓与ETL

结合离线数仓,经过运用流核算等诸多优势和SQL灵敏的加工能力,对流式数据进行实时清洗、归并、结构化处理,为离线数仓进行弥补和优化。另一方面结合实时数据ETL处理能力,运用有状况流式核算技能,能够尽可能下降企业因为在离线数据核算进程中调度逻辑的杂乱度,高效快速地处理企业需求的核算成果,协助企业更好的运用实时数据所剖析出来的成果。

流数据剖析

实时核算各类数据目标,并运用实时成果及时调整在线体系相关策略,在各类投进、无线智能推送范畴有很多的运用。流式核算技能将数据剖析场景实时化,协助企业做到实时化剖析Web运用或许App运用的各种目标。

实时报表剖析

实时报表剖析说近年来很多公司选用的报表核算计划之一,其间最首要的运用就是实时大屏展示。运用流式核算实时得出的成果直接被推送到前段运用,实时显示出重要的目标变换,最典型的事例就是淘宝的双十一实时战报。

Flink VS Spark Streaming

数据模型

Flink基本数据模型是数据流,以及事情序列。

Spark选用RDD模型,Spark Streaming的DStream实践上也就是一组组小批

数据RDD的调集。

运转时架构

Flink是规范的流履行形式,一个事情在一个节点处理完后能够直接发往下一个节

点进行处理。

Spark是批核算,将DAG划分为不同的Stage,一个完结后才能够核算下一个。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OLIuPLrzuVYRLOXA0eBYWyZA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券