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

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

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

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

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

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

  技术虽强大但仍存在短板

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

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

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


推荐阅读