实时数据流计算 (程序员如何学习数据算法)

实时流计算

两千多年以前,孔老夫子站在大河边,望着奔流而去的河水,不禁感叹:“逝者如斯夫,不舍昼夜。”老夫子是在叹惜着韶华白首,时光易逝!

两千多年以后的今天,当你我抱着手机读书、追剧、抢票、“剁手”、刷小视频、发红包的时候,一道道信息流正在以光速在世界范围内传递和传播。自从互联网和物联网诞生以来,人与人、人与物、物与物之间的互联和互动愈加紧密与频繁,大量各式各样的数据在互联和互动的过程中产生。海量的数据洪流将我们的时间和空间越占越满,以至于让我们开始疲于奔命,鲜有时间和能力再去感受与思考那些一瞬间的百万种可能。

大数据时代的新挑战:实时流计算

社会需求和科技进步是螺旋式相互促进和提升的。“大数据”一词最早由Roger Mougalas在2005年提出,所以我们姑且认为2005年是大数据时代的元年吧。

大数据技术之所以出现,是因为社会发展的程度已经开始要求我们具备处理海量数据的能力。

之后,大数据技术逐渐发展和日趋完善的过程又反过来进一步促进社会产生更多、更丰富的数据。随着大数据技术的普及,IBM公司为我们总结了大数据的五大特点(也称为5V特点),即Volume(大量)、Velocity(快速)、Variety(多样)、Veracity(真实)和Value(价值),如图1-1所示。

程序员数据可视化技巧,程序员怎么提高数据分析能力

图1-1 大数据的五大特点

大数据时代为人们带来了丰富多彩的生活方式,让人们充分享受着从大数据中挖掘而来的价值。但也正因为大数据产生得太多太快,让我们开始疲于对正在发生的事情做出及时反应。就像火灾已经爆发后才知道救火,交通已经阻塞后才知道疏通,羊毛已经被“羊毛*党**”薅光后才知道堵上漏洞,股价已经拉升后才知道后悔……为什么我们不能在这些事情发生之前,或者至少是刚刚发生的时候就提前收到预警和通知,并且及时采取应对措施呢?

是的,面对无穷无尽的数据洪流,我们急需一种手段来帮助我们抓住并思考那些一闪而逝的瞬间。在这样的背景下,实时流计算技术应运而生。虽然不能像电影《超体》中女主角直接用手抓住并分析电磁波信息那样,但至少实时流计算技术能够帮助我们抓住数据流的瞬间,分析并挖掘出数据的实时价值。千万不要小瞧了数据的实时价值。据说在很久以前的欧洲战场上,每次最先知道战争结果的不是后方的政府机构,而是股票交易所里的那些股票投资者。俗话说,时间就是金钱,效率就是生命。所有实时流计算的目的都是为了获得数据的实时价值。如果数据没有实时价值,那么实时流计算也就失去了它存在的意义。

1.2 实时流计算使用场景

话说有一句至理名言:“天下武功,无坚不摧,唯快不破!”由此足可见“快”的重要性。更快、更完整地获取数据,更快、更充分地挖掘出数据价值,已成为大数据时代各行各业的共识。在线系统监控、移动数据和物联网、金融风控、推荐系统等,虽然行业各不相同,但是它们有个共同点——实时流计算技术在这些领域发挥着越来越重要的作用。

1.在线系统监控

互联网行业蓬勃发展的背后,是各家企业机房里成千上万的服务器。服务器在7×24小时(传说中的007工作制)的作业过程中产生大量监控数据。这些数据包含着服务器本身的健康状况,如硬件状态、资源使用情况和负载压力等。第一时间知道服务器的健康状况是非常重要的,可以避免因为一台服务器宕机而后续造成的各种雪崩效应。除了服务器本身以外,复杂的线上业务系统产生着更多的数据。

如今一个每天亿万级别访问量的系统已经司空见惯,产品花样更是层出不穷。业务系统产生日志的数量级由GB变TB,再由TB变PB。将线上日志导入实时流计算系统,我们可以实现一系列有实时价值的功能。

最基本的功能是监控业务是否运营正常,如监控业务关键指标、发现故障模式等。高级些的功能是最大程度优化业务使用服务器的成本,如根据CPU、内存和I/O等资源的使用率动态扩展或缩减业务使用的服务器数量。更高级的功能是挖掘和探索新的业务模式,如CEP(Complex Event Processing,复杂事件处理)和在线统计学习或机器学习模型的各种运用等。通过实时流计算技术,实时展现业务系统的健康状况,提前避免可能的业务故障,最大程度优化业务使用服务器的成本,抢先发现新的业务模式和商机……这些都是实时流计算技术在在线系统监控领域价值的体现。

2.移动数据和物联网

移动终端、智能交通、共享单车、5G、工业4.0……如今在我们生活的时代,一波又一波的新名词层出不穷。“移动”和“物联”让数据变得随时随地可得。数据越来越多,单位数据自身的价值却越来越小。

实时处理海量数据洪流,已成为移动和物联网领域的当务之急。例如,对于智能交通系统,传统智能交通系统采用离线方式对交通数据做分析,交通决策不能及时做出;而通过对交通数据流进行实时分析,实时展现交通热点路段、优化信号灯配时、指导行车线路,可实实在在减轻当前热点路段压力、缩减平均行车时间,如图1-2所示。像智能交通这样,优化生活环境,正是实时流计算技术在移动数据和物联网领域体现的价值之一。

程序员数据可视化技巧,程序员怎么提高数据分析能力

图1-2 基于Spar.Streaming的Uber交通热点路段分析及可视化系统[1]

3.金融风控

金融风控 是实时流计算技术又一常用领域,如图1-3所示。通常针对*款贷**的风控,可以分为贷前、贷中和贷后。在贷中和贷后,大多采用离线数据分析和数据可视化技术来实现风险控制。但是在贷前,特别是在许多现金贷产品中,为了给用户带来更好的产品体验,必须在很短的时间内对用户的信用、还款能力和还款意愿等做出评估。除了针对用户本身的信用风险作分析外,还需要防止金融欺诈问题,如“薅羊毛”和多头借贷。通过实时流计算技术,在秒级甚至亚秒级,对用户信用和欺诈风险做出判定,在保证可控风险的同时,提供良好的用户体验,进一步提高现金贷产品整体的竞争力。

程序员数据可视化技巧,程序员怎么提高数据分析能力

图1-3 基于Flink的实时欺诈检测平台[2]

4.实时推荐

实时推荐是实时流计算技术的另一个常见应用场景。如今手机几乎成为每一个年轻人的必备品。打开手机,听音乐、浏览新闻、阅读小说、看到心仪的东西买买买……有一天你突然发现,手机应用越来越了解自己。它们知道推荐什么样的音乐、新闻、小说和商品,并且推荐的东西大抵还是你所喜欢的。现代推荐系统(见图1-4)背后越来越多地出现了实时流计算技术的影子,通过实时分析从用户手机上收集而来的行为数据,发掘用户的兴趣、偏好,给用户推荐可能感兴趣的内容或商品。或许很多人并不喜欢这种被机器引导的感觉,但是我们还是不可避免地越来越多地被它们所影响。

程序员数据可视化技巧,程序员怎么提高数据分析能力

图1-4 基于Spar.Streaming的实时零售推荐系统[3]

这里只是简单地列举了几个流计算技术使用的场景。其实在越来越多的行业,很多传统上用离线批处理技术完成的事情也逐渐转变为采用实时流计算技术完成。所以,读者不妨大胆发挥想象力,试着将实时流计算技术运用到生活的各个方面去,挖掘实时信息的潜在价值,说不定就会获得一份惊喜。

本篇文章给大家讲解的内容是实时流计算

下篇文章给大家讲解的内容是数据采集!