双11背后的黑科技:大数据实时计算如何为你量身定制? (2)

分布式实时计算面临的挑战包括很多方面。数据从采集、到计算、到输出整个过程必须做到低延迟,除了计算节点本身采用“增量计算”的模型,还要求上游数据传输模块具有很高的吞吐能力,并且具备数据缓存的能力,在大流量场景下可以起到缓冲的作用,下游输出模块也需要做数据压缩、批量输出等优化,以保证输出结果的实时性。低延迟这个大前提对实时计算系统的其他特性提出了更高的要求。比如双11凌晨0点的时候,大量消费者在同一时刻下单支付,这是涌进实时计算系统的瞬时数据量是巨大的,系统需要有强大的并行处理数据的能力,将大量瞬时流量合理分配到成百上千个计算节点,并将这些节点的计算结果汇聚到一起计算出一个总体的结果,在高吞吐的情况下仍保证低延迟。

双11背后的黑科技:大数据实时计算如何为你量身定制?

  从“批量计算”到“增量计算”,最具挑战的是准确性和易用性

和低延迟同样关键的挑战是准确性。“增量计算”模型和传统“批量计算”模型是有区别的,所以不能照搬过往的技术经验,否则就会有准确性方面的问题。需要考虑清楚新进入的数据如何叠加到老的计算结果上,有些场景下甚至要支持从老的计算结果中撤除部分计算值,以保证最终结果的准确性。

分布式系统中的某个节点出现故障是很常见的,实时流计算系统的故障恢复能力也相当重要,因为当故障发生时,系统必须快速恢复,否则系统的输出更新可能就停滞了,实时性也就无从谈起。同时故障发生也不能破坏“增量计算”这个模型,否则退化到“批量计算”的模型就又得不到实时的计算结果了,而且结果准确性也难以保证。

事实上网易大数据在实现自研流计算平台Sloth的过程中,遇到并克服了上述技术难点。网易流计算平台Sloth作为一个平台化的产品,在产品易用性、多租户隔离方面做了大量的工作。就实时计算而言,易用性是一个比较值得讨论的方面。

双11背后的黑科技:大数据实时计算如何为你量身定制?

对于开发人员而言,写一个分布式程序比写单机程序会困难一些,而写一个分布式实时计算程序,会更难。好在业界有一些开源的流计算引擎帮助完成了不少工作,开发人员可以使用这些流计算引擎完成流计算任务的开发,他们可能不再需要关心计算任务如何分发到多个计算节点上、数据在计算节点间如何传输等问题,只需要专注于计算逻辑的开发、控制好不同计算阶段的计算并行度。

以计算一篇文章的单词数为例,一个分布式计算程序的内容可能包括三个部分,首先是用几个计算节点共同把每一行文本拆分成一个一个的单词;第二步是用另外一些计算节点去统计单词的个数(考虑到数据量巨大的情况,这里有必要用多个节点去做计算);第三步是由一个计算节点把上游各各节点算出的部分计数汇聚成一个总的计数。这样一个最简单的场景,需要开发的代码量大约是200行。实际业务场景下,数据流经的计算节点远远不止3个,计算类型也比基础的求和复杂很多,所以即使有了流计算引擎,分布式实时计算程序的开发仍然是比较困难的。再进一步看,即使开发完成了,还需要把大量的时间投入到调试、计算框架维护等方面,一旦计算需求发生变化,所有的工作都需要重新迭代一遍,这是个比较痛苦的过程。如何让流式计算程序更易编写,是实时计算平台需要去完成的挑战。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzsds.html