如何扛住流量“洪峰”,是每年“双十一”的技术大考。随着流量的飙升,这一大考无疑变得越来越难。
“双十一”刚过,各大电商纷纷公布当日战绩。从目前公布的数据不难看出,今年“双十一”的订单创建量峰值创下新高,单日数据处理量纪录也再次被刷新。
“双十一”的数据量不仅大,还会实时变化。可以说,每个购物数据都是个性化的、动态的,完成处理它们的工作,需要有强大的计算能力作为支撑。
“今年的数据处理工作,除了批处理(对数据进行批量处理)外,还有流处理,就是实时处理数据。庞大的交易数据每分钟、每秒钟都在变,它们并不是从数据库里面统计出来的,而是系统自动一层层把它们汇集上来的。”阿里巴巴集团首席技术官张建锋表示。他口中的“流处理”就是流计算,即实时计算。对于扛住“双十一”流量“洪峰”,它功不可没。
那么,什么是流计算?它是如何抗住“双十一”流量“洪峰”的?对此,科技日报记者采访了业内专家。
以内存取代硬盘实现快速处理
北京理工大学计算机学院副院长、教授刘驰在接受科技日报记者采访时解释道,流计算指当一条数据被处理完后,立刻被序列化到内存中,然后通过网络传输到下一个节点,由下一个节点继续处理。“这种流式处理技术,是以内存取代硬盘的方式来实现数据快速处理,这是流计算之所以能够高效处理数据的根本原因。”他表示。
据刘驰介绍,流计算具有高性能、海量式、实时性、分布式、易用性、可靠性等多项优势,主要的应用方向有,对金融与科学计算中的数据进行快速运算和分析;对存在于社交网站、电子邮件、视频、电话记录、电子感应器中的数字格式信息流进行快速处理并反馈等。
“流式处理可被用于两种不同的计算场景:事件流和持续计算。”刘驰介绍道,在事件流场景,系统会持续产生大量的数据,这类数据最早出现在银行和股票交易领域,也会在互联网监控、无线通信等领域出现。这些领域的相关业务,需要流计算技术以近乎实时的方式对数据流进行复杂分析。
“而在持续计算场景,比如大型网站,流计算技术可以动态实时地刷新用户访问数据,展示网站实时流量的变化情况,分析每天各小时的流量和用户分布情况。一些需要实时处理数据的场景也能应用到流计算技术,比如对根据用户行为产生的日志文件进行实时分析,对用户进行商品的实时推荐等。”刘驰介绍道。
实时采集、实时计算、实时查询
刘驰向记者介绍道,流计算的处理流程一般包含三个阶段:数据实时采集、数据实时计算和实时查询服务。
首先,后台工作人员会用实时数据集成工具,将数据实时传输到流式数据存储系统。具体过程是,系统将长时间累积的大量数据,平摊到每个计算时间节点,数据会被不停地进行小批量实时传输。此时,数据将会被源源不断地写入流数据存储系统,不需要预先加载的过程。同时,在此过程中,数据是持续流动的,在计算完成后就会被立刻丢弃。
然后,不同于批量计算等待数据集成全部完成后才启动计算作业,流式计算作业是一种常驻计算服务,一旦启动将一直处于等待事件触发的状态,即一有小批量数据进入流式数据存储系统,流计算系统就会立刻计算并得出结果。“同时,部分电商平台的流计算团队,还使用了增量计算模型,将大批量数据分批进行增量计算,进一步减少单次运算规模并有效降低整体运算时延。”刘驰说。
最后,采用数据批处理方式,通常需要等待数据计算结果得出后,才能批量将数据传输到在线系统。而流式处理方式可在每次小批量数据计算工作完成后,就立刻将计算结果写入在线系统。“这样无需等待全部数据计算工作完成,我们就可在流计算数据查询系统中,查询到在线系统的数据处理结果。技术人员也可将实时结果发送给可视化系统,以实现计算结果的实时化展示。”刘驰说。
技术虽强大但仍存在短板
不过,刘驰表示,流计算虽然强大,也存在技术短板。
“如果在系统内存不足的情况下,还要满足多个用户的数据请求,那么每个用户实际被分到的内存就会很少。此时,应用流式处理技术后,由于内存需求量增加,系统会把原来分给多个用户的内存资源,全部分给一个用户。其他需要内存的用户,则会因为没有内存可用,被迫进入等待状态,直到那个占有内存资源用户退出后,其他用户才能使用内存。”刘驰说,同时,实时的计算环境会由于各种各样的原因,比如网络延时等,导致程序到达计算节点的顺序出现变化。