本文整理自闵万里博士在Flink Forward China 2018上的演讲。

城市中,像上图空中小麻雀一样的摄像头遍布各地,地面上的车流川流不息,高德地图等APP通过技术手段采集了越来越多的摄像头、车流的数据。但空中与地面这两条平行的河流,似乎永远没有交汇的时刻。越来越多的摄像头采集数据,但道路却越来越拥堵,这恰恰反映出智慧的缺失。

三年前,当我们重新审视“智慧城市”这个概念的时候想到:在这个数据量很大,上下游特别多的典型场景,能否用最新的技术,重新在技术上把它往前推进一步?于是城市大脑应运而生。而今天,城市大脑不仅走进城市,还走进了各个垂直产业,如:制造业、零售业。这些行业都有一个鲜明的特点:拥有相当密集的数据流。

Date Flow Intensive如果需要做到更加智慧,首先需要非常强大的Computational power;第二是需要更加智能的算法处理实时数据流。当这两种能力放在一起的时候,数据不仅仅可以用来做事后分析追责,而且拥有了实时解决当下问题的能力,甚至可以把未来可能出现的问题做预先介入,提前化解。这个过程中离不开优秀的计算引擎,因此,今天, Apache Flink 技术有非常具体的可以落地的实战的场景,而且是可以量化价值的场景。

接下来给大家一 一介绍几个场景,带领各位更有体感地了解:代码,是怎么给老百姓创造价值的?

首先,我们要了解的问题是如何衡量技术的价值?无论多么领先的技术,最终要回归到上图这个公式当中,公式右边的三个要素分别为:行业知识、技术和已经沉淀的数据(包括正在发生的数据),这三个要素带来的是左边可以量化的价值。

今天,城市大脑要做的事就是把包括 Flink 在内最先进的技术填到这个公式当中。找准行业,找到痛点,然后去产生左边可量化的价值增量,而非价值存量。现在,我们推出了一系列的ET大脑,它们究竟是如何运行的?如何从流计算的角度把它从一个理想的 Design 变成了一个在生产过程当中可以用起来的System ?接下来,我们将一一为大家解答。

在这个架构图中大家可以看到 ET 大脑底层有各式混合调度等基础技术系统,中间层是用Flink的方式对结构化、非结构化甚至半结构化的数据,做混合的双流、多种流的实时Join。

上图是2018年9月份正式公布的杭州城市大脑2.0,今天,在杭州420平方公里的土地上,有着近1300个的路口,无论是天上的摄像头,还是地下传感器的线圈,产生的数据都是通过实时流计算的方式收集到城市大脑当中,并进行实时的处理。某种程度上来说,我们把城市想象为一个生命体,通过每一个毛细血管(传感器)传递来的实时流数据,我们得以精准地了解这个智慧体的每一次脉搏,而这背后就是计算的威力。

这张图从左往右看,从最外场的卡口摄像头以及传感器用于采集过车速度、车牌类型等数据,这些数据实时进入Flink计算引擎之后在RDS当中Dim Table 进行汇总,汇总后我们可以得到一个移动的时间窗口(Hop Window)。这个时间窗口的长度大概是15分钟,每隔两分钟我们就把它往未来移动一次,因此,你会发现这个时间窗口每两分钟就会产生一次过去15分钟内所统计到的数据。

这是一个典型的Batch 和 Streaming结合的案例,通过这些 Table 的 join后,我们可以得到在每一个路段上过去几分钟内,过车通行量、过车速度以及道路占有率、饱和度等等,这些都是交通工程中相当重要的参数。过去只能通过传感器来获取。而现在,摄像头、传感器、高德APP的数据将全部进行汇总计算,单一渠道带来的数据不确定性问题,通过三流合一得到了有效弥补。

现在在杭州交警指挥中心所收到的报警当中,95%的来源并非人工,是城市大脑从海量流数据当中混合调度任务进行计算,并实时同步给交警指挥中心而来的。

这个过程中有各种各样的 Group Aggregation、Window Aggregation,我们设定了一个移动的窗口,它有固定的长度,但是在不断地移动,相当于扫描系统,在扫各个流上面的事件。甚至是几个流合一之后的事件流,我们看上下两个点位(摄像头)、上下三个点位,上下四个点位之间是否形成了某一辆车的特定事件,比如持续的闯红灯、持续超速等等,这些都要实时计算出结果并立刻同步,而这些数据 Join 到最后会得到什么呢?假设我们在某一个匝道上开车,出现了大面积的排队现象,现在通过城市大脑同步到指挥中心,基本可以实现全部自动化的处理,再也不需要靠过去靠指挥中心呼叫机的方式来处理。 所以,流对流之间不再是对牛弹琴,取而代之的是无缝的握手衔接,实现整体系统效率的提升。系统效率提升之后带来了什么好处?给大家看下面这一个案例:

2018年7月份,城市大脑落地马来西亚吉隆坡,通过城市大脑,救护车的行驶时间压缩了48.9%。通过上图你会看到,在这个案例当中,既要把救护车司机的位置信息,一秒内上传一次,也要跟周边信号灯之间的车流速度、车队速度、排队长度进行对比。精准地判断几点几分几秒,救护车将会到达哪个路口,然后去计算所经路口变成绿灯的时间点。在这种模式下,再也不需要像过去一样让交警鸣笛开道。

有时候一秒的时间对急救车来说就是生与死的差别。缩短48.9%的时间,就是公式最左边可以量化的价值。当有一天我们可能要坐上救护车的时候,就会体会到这个无法用金钱衡量的价值。这时候,技术也不再那么骨感,那么枯燥,老百姓可以真正感知到它的普惠。

今天我们做的这些探索,包括团队在过去几年做的ET大脑的探索,在开始的时候其实是很艰难的。团队中有些人懂 Flink ,有些人懂其他技术,内部也有过技术的争论。但大家都有一个共同的目标:选择最合适的技术、最合适的场景,去迅速拿到结果。

现在,还有很多有价值的场景等待我们开发,但是我们人数有限,因此,我们希望能与更多的开发者们一起参与到这件事情当中来,成为生态的一部分,成为25万开发者中的一个(25万是我们建的一个大数据人才、大数据开发者、大数据科学家,来自全球93个国家的开发者生态)。

我们的团队用Flink取得了上述的成果。如果你也相信数据力量,欢迎大家一起参与到这件事当中来,成为25万中的一份子,把25万发展成250万,做出更多48.9%的价值!


欢迎转载,敬请在正文中标注并保留文章来源、原文链接、作者/译者等信息。

浙公网安备 33010802010061号 浙ICP备19028187号