天猫数据在哪里看 天猫实时数据在哪看


阿里巴巴资深技术专家莫问在2017年12月20日云栖大会北京峰会上做了题为“Apache Flink技术进阶”的主题演讲 。Apache Flink作为流式计算引擎,支持了“双十一对的”实时计算,已经被国内外的公司使用 。其中关于“Flink的技术特点”、“阿里巴巴的Flink版本——Blink”以及“Blink在实际场景中的应用” 等经验首次对外详细剖析,很有价值 。
以下为视频内容整理:
Apache Flink介绍Flink是Storm之后出现的第二个纯流式计算引擎,其特点是支持毫秒级的延迟,同时支持 “至少一次”语义的保证 。目前在阿里巴巴的“双十一”上面支持了每秒四亿次的计算 。

天猫数据在哪里看 天猫实时数据在哪看

文章插图
Flink提供了不同的抽象级别来开发流/批处理应用程序:
  1. 最下面一层是有状态的分布式流式执行引擎 。
  2. 第二层是core APIs,包括DataStream/DataSet API 。DataStream API是针对流式的输入,比如队列、日志等;DataSet API是针对有长度的数据源,比如一个文件 。
  3. 第三层提供了基于DSL的table API 。这层把所有的数据源都抽象成table,支持类SQL的开发语言,可以用Java来编写 。
  4. 第四层是高级SQL语言 。
    Flink相对于Storm来说有许多特性 。Flink第一个特性是支持有状态的计算 。Flink内置了状态管理,可以保证高性能计算和数据的一致性 。有了状态之后,Flink就可以提供“恰好一次”语义 。如果业务场景接受,也可以支持“至少一次”语义 。state也支持checkpoint,recovery,Upgrade,version等 。
最下面一层是有状态的分布式流式执行引擎 。
第二层是core APIs,包括DataStream/DataSet API 。DataStream API是针对流式的输入,比如队列、日志等;DataSet API是针对有长度的数据源,比如一个文件 。
第三层提供了基于DSL的table API 。这层把所有的数据源都抽象成table,支持类SQL的开发语言,可以用Java来编写 。
第四层是高级SQL语言 。
Flink相对于Storm来说有许多特性 。Flink第一个特性是支持有状态的计算 。Flink内置了状态管理,可以保证高性能计算和数据的一致性 。有了状态之后,Flink就可以提供“恰好一次”语义 。如果业务场景接受,也可以支持“至少一次”语义 。state也支持checkpoint,recovery,Upgrade,version等 。

天猫数据在哪里看 天猫实时数据在哪看

文章插图
Flink的第二个特性就是在流里面加window 。因为流是一条一条来处理记录,但是在很多场景上是远远不够的 。因为业务可能需要把最近一段时间的数据攒起来做一次聚合,并做全局性的判断才能得到结论 。window功能很好的解决了这个问题 。Flink支持两种类型的window 。一种是时间驱动,比如最近30秒或者每隔30秒取一次数据 。一种是数据驱动,比如最近1000条或者是每隔1000条取一次 。常见的Window有三种类型:Sliding window(没有重叠),Tumbling window(有重叠),Session window(基于session)

天猫数据在哪里看 天猫实时数据在哪看

文章插图
使用window之后,在分布式系统中就很难保证所有的数据在源头产生数据的顺序和接收数据的顺序保持一致,会出现乱序的问题 。Flink采用了标准的乱序处理方案——watermark技术 。这个技术是在源头定期发送watermark,保证之前的数据顺利到达 。watermark到达之后就触发window,进行window的计算 。有了watermark和window,可以在流计算里面根据时序关系,实施更为复杂的计算 。

天猫数据在哪里看 天猫实时数据在哪看


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。