实时计算这个概念是与离线计算相伴相生的,以 Hadoop为例, Hadoop 批处理 job 的执行时间往往需要几十分钟到几个小时(不同的数据量),所以一般数据的处理是按照时间区间处理的,这叫离线计算,但是,从业务场景上来说,离线计算不能满足所有业务的需求。
流计算的产生即来源于对于上述数据加工时效性的严苛需求:数据的业务价值随着时间的流失而迅速降低,因此在数据发生后必须尽快对其进行计算和处理。在许多的业务场景上,比如在实时大数据分析、风控预警、实时预测、金融交易等诸多业务场景领域,以银行的交易系统为例,可靠性要达到 4个 9,甚至 5个 9的地步,而流计算作为一类针对流数据的实时计算模型,可有效地缩短全链路数据流时延、实时化计算逻辑、平摊计算成本,最终有效满足实时处理大数据的业务需求。
2015 年是流计算百花齐放的时代,各个流计算框架层出不穷。Storm, JStorm, Heron, Flink, Spark Streaming, Google Dataflow (后来的 Beam) 等等。其中 Flink 的一致性语义和最接近 Dataflow 模型的开源实现,使其成为流计算框架中最耀眼的一颗。也许这也是阿里看中 Flink的原因,并决心投入重金去研究基于 Flink的 Blink框架。
如果问是基于什么具体的原因使得阿里选择了 Flink框架,阿里巴巴的高级技术专家大沙曾言,他们是在 2015年开始调研新一代流计算引擎的,当时的目标就是要设计一款低延迟、exactly once、流和批统一的,能够支撑足够大体量的复杂计算的引擎。
Spark streaming的本质还是一款基于 microbatch计算的引擎。这种引擎一个天生的缺点就是每个 microbatch的调度开销比较大。Kafka streaming是从一个日志系统做起来的,它的设计目标是足够轻量,足够简洁易用。这一点很难满足对大体量的复杂计算的需求。Storm是一个没有批处理能力的数据流处理器,除此之外 Storm只提供了非常底层的 API,用户需要自己实现很多复杂的逻辑。
有别于 FLink,Blink主要在以下几个方面做了改进:
优化了集群调度策略使得 Blink能够更好更合理地利用集群资源;
优化了 checkpoint机制,使得 Blink能够很高效地处理拥有很大状态的 job;
优化了 failover的策略,使得 job在异常的时候能够更快恢复,从而对业务延迟造成更少的影响;
设计了异步算子,使得 Blink能够在即使被读取外部数据阻塞的同时还能继续处理其他 event,从而获得整体非常高的吞吐率。
以前,MySQL+Linux+PHP可以免费的构建一个小型的网站,也许不久,类似 Flume + Kafka + Blink,也会成为实时流计算一套完整的解决方案。实时计算必然是未来的主流趋势。
如果你也对实时计算感兴趣,请关注 2018年 4月 23日到 24日,我们在北京国际会议中心举办的 QCon深度培训。在会上,阿里巴巴的高级技术专家王绍翾和邓小勇将为大家带来 阿里巴巴 Blink流计算平台介绍与实践,详细的介绍 Blink的前世今生,现在报名立享 8折优惠,点击“阅读原文”即可了解更多详情。或添加 chenxi988625咨询。