Apache Flink,流计算?不仅仅是流计算!

通过以上两种经典场景可以看出阿里巴巴实时业务场景在各方面的挑战都很大,直接将Flink社区版本在阿里上线使用是不现实的,因此阿里巴巴实时计算团队这两年也对Flink进行了全面的优化、改进和功能扩展,其中有些功能和改进已经推回到了Flink社区。

在FlinkRuntime领域,阿里巴巴贡献了:

全新的分布式系统架构:一方面对Flink的Job调度和资源管理进行了解耦,使得Flink可以原生运行在YARN,K8S之上;另一方面将Flink的Job调度从集中式转为了分布式,使得Flink集群规模可以更大的扩展。

完善的容错机制:Flink默认在任何task和master失败后,都会整个Job重启,阿里巴巴提出的region-basedfailover策略以及jobmanagerfailover/ha机制,让Flink可以运行地更加可靠稳定;

大量的性能优化:Flink早期只提供全量Checkpoint机制,这在阿里巴巴大规模State场景下无法正常运行,阿里巴巴提出了增量Checkpoint机制,让Flink即使在TB级State场景下也可以高效运行;FlinkJob经常在内部算子或者UDF中访问外部存储系统,例如:mysql,hbase,redis等,一旦出现个别query被卡住,整个task就被卡住,并通过反压影响到整个job,阿里巴巴提出了asyncIO机制,大幅降低了同步IO访问带来的影响。

此外,阿里巴巴贡献了credit-based的全新网络流控机制,使得Flink网络数据传输性能得到了显著提升。

在FlinkSQL领域,阿里巴巴贡献了全新的StreamingSQL语义和功能。


About the Author:

亚博电竞提款快