课程目的
实时计算
流计算
风控
扩大需求
扩大it人员对flink的掌握
让更多大数据人员接触flink
定义
框架:意味着只需要编写业务逻辑
分布式计算
有状态计算
数据流
application
1. 基础语义
{1} stream
离线处理一般都会将数据抽象为一个集合,但实时计算,将数据抽象为流,不断地产生、传输、处理。
有界:有始有终,有大小
无界:由此产生了很多额外的概念,比如trigger
{2} state
支持有状态计算
stateless
采集一条、传输一条、处理一条。数据不需要留存在系统中,而是保存在上下游。比如一个web项目,数据都存在数据库。
stateful
比如聚合操作,比如count、机器学习、pv、uv,处理数据时需要cap之前的数据。需要把之前的数据也要缓存在计算系统中。
还有excently once,需要把状态写入到状态持久化存储。
{3} time
实时处理的基础,用时间来控制实时的窗口。
度量实时处理的进度,因为实时处理是没有结束时间的。比如通过eventTime,可以比较eventTime和当前时间,就可以确定实时处理的延迟、滞后性。
事件发生时间:比如日志产生的时间,也就是业务时间
数据进入flink,也就是source的时间。
算子开始处理时间:也就是flink开始处理数据的时间
2. 多层次api
越往下越灵活、越底层、抽象能力越小
Architecture
把状态存到本地,不需要额外的hbase或redis,减少网络IO。但为了failover,会定期把本地状态写到远程。
Operation
高可用
一致性checkpoint
监控
webUI:DAG图,metric
Scenario
1. ETL
实时数仓的etl
实时创建搜索引擎的index索引,比如卖家上线一个商品,前天实时能搜索到。
2. 实时报表
3. data Driven
本质上所有流处理都是数据驱动的,这里特指风控,根据业务规则监控数据。其实也是逐条处理