二、老当益壮的Flink
上图是一些主流开源及闭源大数据工具的起源时间,可以看到Flink(欧洲)和Spark(美国)虽然都发轫于2009年,但Flink其实是比Spark稍早一点的,不过从当前发展形势看,Spark意欲一统大数据天下,已经对Flink以及其他大数据工具形成了碾压态势,Flink可谓“起个大早赶个晚集”,这很大程度上也和欧洲及美国的商业化环境有关。尽管如此,Flink仍能够倔强成长,一方面是大家不希望看到Spark一家独大,需要保持平衡;另一方面则是Flink着实有自己的独门绝技,否则早被Spark拍死了。
上图左边是Spark技术栈,右边是Flink技术栈,不难发现,二者使命相同,都是要提供“One Stack To Rule Them All”的一站式大数据分析解决方案(涵盖批处理、流计算、机器学习、图计算等)。除了开源社区,Spark背后有DataBricks商业公司在运作,Flink背后有DataArtisans商业公司在运作,由于生态环境不同,因此愿景稍有差异。不过最大的差异在于二者的价值观:Spark以批处理为主,认为流计算是批处理的特例,使用微批处理(Micro-Batch)来应对流计算;Flink以流计算为主,认为批处理是流计算的特例,使用一段时间内的有限数据集来应对批处理。打个比方,Spark和Flink一起吃面包,Spark正常情况下是一口一个面包的吃,遇到流计算时,把面包切片了,一口一个面包片的吃;Flink正常情况下一口一个面包片的吃,遇到批处理时,几个面包片一起吃,也能一口吃一个面包了。从长远来看,Flink的设计理念更契合流计算的标准模型及本质特征,除Google闭源工具外,它是第一个真正实现乱序数据处理的开源流计算引擎,下面简要看一下Flink的关键技术点。
五、All In Flink
笔者认为,“老当益壮”的Flink作为“新一代”冉冉升起的真正流计算引擎,将会长期与Spark并驾齐驱,并逐步扩大其应用范围。我们也会将其逐步应用到实时预警、实时全链路分析、风控管理、用户行为分析,并逐步探索基于Flink的机器学习、监控数据突变分析,希望能在监控预警方面取得进一步突破,为云平台的稳定运行保驾护航。