flink理论干货笔记(2)

101. 滴滴的流计算平台有三种开发方式,web ide、本地ide、streamSql ide,降低了用户开发使用流计算的门槛。平台包含任务监控(延迟、吞吐量、自定义指标)和告警(钉钉/电话),任务诊断系统(任务日志采集接入ES) 。滴滴的流计算业务有以下四种:实时ETL、实时数据报表、实时业务监控、CEP在线业务。实时网关日志监控主要用到kafka-flink的streaming-es这三个组件

102. streamsql是滴滴内部的flink sql项目,目的是支持DDL(多格式多数据源)、DML(比如插入流数据到某一张sink表)、常用核心功能点(如group agg、window agg、join、udf、udtf、udaf),其中join包括双流的no-window join,流和维度表的join

103. 滴滴的streamsql支持分流,比如同时写入hbase和kafka,其中stream sql join,对于维度表,只支持当前表,不支持历史表。stream sql未来会承担90%的流计算任务,另外CEP也会融入stream sql体系。还将进行算子级别的扩容。

104. 字节经历了Jstorm任务迁移到flink的过程。借鉴了flink-storm,实现了flink-jstorm,支持将jstorm topology 结构转化为flink job

105. flink在异常容错方面是很苛刻的,因为要保证exactly-once,因此JobManager可能就是个瓶颈,同时也会是单点问题,所以要做HA。相比而言,storm只需要保证at-least-once,因此重启作业即可

106. 在flink读取kafka时,由于kafka容易出现节点故障或数据均衡时导致leader切换,因此需要做一些优化 

107. 还需要做一些容灾,比如一个机房的所有节点都挂掉,虽然概率不大,要做多机房部署,以及流热备 

108. flink1.0.0加入了state api,即ValueState、ReducingState、ListState等,是一个里程碑,用户能像使用java集合那样使用flink state,自动享受到状态的一致性保证。 

109. flink1.1.0加入了Session Window,且能正确处理乱序的迟到数据,保证结果正确 

110. flink1.2.0加入了ProcessFunction,一个lower level api,用于实现高级且复杂的功能,包括注册各种State,以及注册定时器(基于事件时间或处理时间),用于开发基于时间的应用程序 

111. flink1.3.0加入了side output功能,支持多种输出,即除了主流输出外,还包括如异常数据、迟到数据、侧边流等 

112. flink1.5.0加入了broadcastState,是对state api的扩展,用来存储上游被广播过来的数据。基于这种state能很好解决CEP中的动态规则功能,以及sql中不等值join的场景 

113. flink1.6.0加入了state ttl功能,以及datastream interval join功能。state ttl实现在申请某个state时可以指定一个生命周期参数(TTL),指定该state过了多久需要被系统自动清除,而不再需要使用ProcessFunction注册Timer来清除了,基于ttl的方式更原生解决该问题。datastream interval join使区间join成为可能。 

114. 在高层api方面,flink1.0.0加入了table api和cep api,其中table api支持java和scala,类似spark的dataframe api,同时它与sql很像,可以共用。后来在flink1.1.0中对table模块做了重构,同时支持table api和sql,以及代码共用。 

115. flink1.2.0在table api和sql上支持丰富的内置窗口操作,如Tumbling window、Sliding Window、Session Window 

116. flink1.3.0提出Dynamic Table概念,使的流批互相转换。流可以是表,表可以是流。Retraction机制是Dynamic Table的基础之一,通过它能实现多级aggregate、多级join,从而保证流式sql的语义和结果正确。同时该版本支持了cep算子的可伸缩性(即改变并发) 

117. flink1.5.0在table api和sql上支持了join,包括无限流的join和带窗口的join。还添加了sql cli支持,用于交互式查询。 

118. 在检查点和故障恢复方面,flink1.0.0提供了RocksDB支持,把状态从内存转移到磁盘,避免了fullgc和oom 

119. flink1.1.0支持RocksDB快照的异步化,避免了阻塞主数据流的处理,提高了吞吐量 

120. flink1.2.0引入了KeyGroup机制,支持了KeydState和OperatorState的可扩缩性,支持了对带状态的流计算任务改变并发的功能 

121. flink1.3.0支持了增量检查点功能。标志着flink流计算正式达到生产就绪状态。同时引入细粒度的故障恢复功能,只恢复失败节点的联通子图,不用对整个job进行恢复 

122. flink1.5.0引入了本地状态恢复机制。该机制会提前将状态文件在本地也备份一份,故障发生时,可以直接在本地恢复,而不用从远程hdfs重新下载,提高了恢复效率 

123. 在flink runtime方面࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值