文章插图
Flink中保证状态一致性是使用的chandy-lamport算法,这个算法核心的思想就是:定期对流进行检查,并将计算状态持久化到存储里面 。当系统奔溃的时候,会从最近一次检查点中根据状态来恢复,达到最终的结果 。这个过程是在流里面插入一个barrier(特殊消息),并在源数据处开始广播,每个节点收到上游的barrier,会对barrier对齐并对做状态持久化,然后将barrier继续往下广播 。当流把barrier从源头广播到最后节点的时候,就完成了checkpoint和状态持久化 。
同步执行checkpoint会阻碍流的计算,所以采用异步checkpoint,这样也加快了checkpoint的对齐 。对checkpoint的增量做持久化,就会减少对I/O的使用 。由于 Storm 会对每条消息进行ACK,Flink 是基于一批消息做的检查点,这样可以保证对数据有一个更好的吞吐和更好的时延 。这也是Flink和Storm最大的区别 。

文章插图
Flink的典型作业场景是处理实时数据 。源头是一个kafka队列,包含所有的实时的数据流 。Flink有三种算子角色,数据流分别在这三种算子中进行运算 。第一种是Source(负责输入数据,记录kafka里面的offset并做持久化);第二个就是中间的算子就是operator,一是就做map,二是根据同key做聚合,并产生counter 。Offset和counter会存储到状态里面 。第三个是sink,是负责输出并做快照 。
阿里巴巴对Flink的贡献Blink(alibaba Flink version)是依托阿里巴巴大规模生产环境和实际需求对Flink架构进行多项改进以及更多的扩展功能的版本 。Blink全面兼容Flink的API与开源社区无缝对接 。Blink团队目前向Flink社区共享了超过300个issue,对多项关键架构和SQL改进 。团队培养出了5名在社区具备良好影响力的Flink committer 。Blink团队连续两年赞助Flink forward大会,并且每次都会在现场分享 。
Blink基于Flink进行了5个重大改造:
1. 对Flink部署和进程模型的改造
以前Flink是一个Standalone部署的架构,它的进程模型和分布式模型比较小 。Blink团队按照分布式进程模型的调度,也使其能继续在Yarn和Mesos上面运行,对其计算和资源的调度进行了解耦,改进了Flink单master规模受限的架构 。
2. 采用异步的I/O模型设计
在流式计算过程中,如果一个流被卡住,那么整个流式计算就会被卡住,这是分布式、高并发场景中的障碍 。引入异步I/O的模型,使得所有Flink的算子,都可以异步访问外部的MySQL 。短暂的抖动,也不会影响整个流的运行,可以大幅提升CPU的利用率 。
3. 改善checkpoint机制
因为checkpoint是Flink的最大的一个特点,所以checkpoint的性能尤为关键 。如果它的做的不好,就会影响主流程的处理 。虽然数据规模非常大,但是每分钟更新的数据只有百分之一,做增量checkpoint,会大大减少开销 。
4. failover的优化
在大规模场景下,实时计算的一个作业会有上千个并发,所以一旦failover,恢复需要很大成本 。Blink对其做了改善 。
5. 在网络层的优化
在流式计算中,网络层的性能非常关键 。上下流的计算,都需要网络层去shuffle 。Blink优化了shuffle的性能,使网络性能大大提升 。
阿里巴巴对Flink的SQL也做了很多的贡献,使用的是流式SQL,不是传统的bash SQL 。
Flink在阿里巴巴的应用

文章插图
Flink流式计算架构几乎支持了阿里巴巴的所有场景,包括天猫,淘宝,飞猪,菜鸟,搜索广告,安全等等 。
Flink在淘宝中的应用案例:
天猫双11成交额实时统计
- 佳能800d参数在哪里设置 佳能相机800d价格
- 苹果密码怎么设置四位数的 苹果密码设置在哪里设置的
- 铁树放在哪里好 铁树放在哪里风水最好
- 淘宝卖家店小二在哪里找 淘宝店小二入口
- 造梦西游3火龙岛掉什么 造梦西游3火龙岛在哪里
- mysql中如何创建表 cmd命令怎么打开mysql数据库
- 天猫有苹果官方旗舰店吗 苹果天猫旗舰店是官方直营吗
- 苹果手机怎样设置悬浮球双击截图 苹果手机取消悬浮球在哪里
- 家国梦官网礼包 家国梦礼包兑换
- 元大都遗址位于现在哪里 元朝大都是现在哪个地方
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
