「科技日报」“双十一”流量大考过关 流计算功不可没

  “双十一”流量大考过关 流计算功不可没

  本报采访人员 崔 爽

  如何扛住流量“洪峰” , 是每年“双十一”的技术大考 。 随着流量的飙升 , 这一大考无疑变得越来越难 。

  “双十一”刚过 , 各大电商纷纷公布当日战绩 。 从目前公布的数据不难看出 , 今年“双十一”的订单创建量峰值创下新高 , 单日数据处理量纪录也再次被刷新 。

  “双十一”的数据量不仅大 , 还会实时变化 。 可以说 , 每个购物数据都是个性化的、动态的 , 完成处理它们的工作 , 需要有强大的计算能力作为支撑 。

  “今年的数据处理工作 , 除了批处理(对数据进行批量处理)外 , 还有流处理 , 就是实时处理数据 。 庞大的交易数据每分钟、每秒钟都在变 , 它们并不是从数据库里面统计出来的 , 而是系统自动一层层把它们汇集上来的 。 ”阿里巴巴集团首席技术官张建锋表示 。 他口中的“流处理”就是流计算 , 即实时计算 。 对于扛住“双十一”流量“洪峰” , 它功不可没 。

  那么 , 什么是流计算?它是如何抗住“双十一”流量“洪峰”的?对此 , 科技日报采访人员采访了业内专家 。

  以内存取代硬盘实现快速处理

  北京理工大学计算机学院副院长、教授刘驰在接受科技日报采访人员采访时解释道 , 流计算指当一条数据被处理完后 , 立刻被序列化到内存中 , 然后通过网络传输到下一个节点 , 由下一个节点继续处理 。 “这种流式处理技术 , 是以内存取代硬盘的方式来实现数据快速处理 , 这是流计算之所以能够高效处理数据的根本原因 。 ”他表示 。

  据刘驰介绍 , 流计算具有高性能、海量式、实时性、分布式、易用性、可靠性等多项优势 , 主要的应用方向有 , 对金融与科学计算中的数据进行快速运算和分析;对存在于社交网站、电子邮件、视频、电话记录、电子感应器中的数字格式信息流进行快速处理并反馈等 。

  “流式处理可被用于两种不同的计算场景:事件流和持续计算 。 ”刘驰介绍道 , 在事件流场景 , 系统会持续产生大量的数据 , 这类数据最早出现在银行和股票交易领域 , 也会在互联网监控、无线通信等领域出现 。 这些领域的相关业务 , 需要流计算技术以近乎实时的方式对数据流进行复杂分析 。

  “而在持续计算场景 , 比如大型网站 , 流计算技术可以动态实时地刷新用户访问数据 , 展示网站实时流量的变化情况 , 分析每天各小时的流量和用户分布情况 。 一些需要实时处理数据的场景也能应用到流计算技术 , 比如对根据用户行为产生的日志文件进行实时分析 , 对用户进行商品的实时推荐等 。 ”刘驰介绍道 。

  实时采集、实时计算、实时查询

  刘驰向采访人员介绍道 , 流计算的处理流程一般包含三个阶段:数据实时采集、数据实时计算和实时查询服务 。

  首先 , 后台工作人员会用实时数据集成工具 , 将数据实时传输到流式数据存储系统 。 具体过程是 , 系统将长时间累积的大量数据 , 平摊到每个计算时间节点 , 数据会被不停地进行小批量实时传输 。 此时 , 数据将会被源源不断地写入流数据存储系统 , 不需要预先加载的过程 。 同时 , 在此过程中 , 数据是持续流动的 , 在计算完成后就会被立刻丢弃 。

  然后 , 不同于批量计算等待数据集成全部完成后才启动计算作业 , 流式计算作业是一种常驻计算服务 , 一旦启动将一直处于等待事件触发的状态 , 即一有小批量数据进入流式数据存储系统 , 流计算系统就会立刻计算并得出结果 。 “同时 , 部分电商平台的流计算团队 , 还使用了增量计算模型 , 将大批量数据分批进行增量计算 , 进一步减少单次运算规模并有效降低整体运算时延 。 ”刘驰说 。

  最后 , 采用数据批处理方式 , 通常需要等待数据计算结果得出后 , 才能批量将数据传输到在线系统 。 而流式处理方式可在每次小批量数据计算工作完成后 , 就立刻将计算结果写入在线系统 。 “这样无需等待全部数据计算工作完成 , 我们就可在流计算数据查询系统中 , 查询到在线系统的数据处理结果 。 技术人员也可将实时结果发送给可视化系统 , 以实现计算结果的实时化展示 。 ”刘驰说 。

  技术虽强大但仍存在短板

  不过 , 刘驰表示 , 流计算虽然强大 , 也存在技术短板 。

  “如果在系统内存不足的情况下 , 还要满足多个用户的数据请求 , 那么每个用户实际被分到的内存就会很少 。 此时 , 应用流式处理技术后 , 由于内存需求量增加 , 系统会把原来分给多个用户的内存资源 , 全部分给一个用户 。 其他需要内存的用户 , 则会因为没有内存可用 , 被迫进入等待状态 , 直到那个占有内存资源用户退出后 , 其他用户才能使用内存 。 ”刘驰说 , 同时 , 实时的计算环境会由于各种各样的原因 , 比如网络延时等 , 导致程序到达计算节点的顺序出现变化 。

  “此外 , 流计算技术面对的是源源不断涌入的数据 , 而如果还像批处理那样来计算数据的话 , 就可能会导致计算根本无法结束 , 或随着时间的推移需要保存的数据越来越多 , 给内存造成巨大压力 。 ”刘驰补充道 , “数据不断产生 , 就需要计算持续进行 。 但计算时间一长 , 出问题的概率就会大大增加 。 一旦出现问题 , 一些在计算过程中缓存下来的数据该被怎么长期保存、怎么恢复就会成为比较大的问题 。 ”


    推荐阅读