● 摘要
随着大数据时代的到来,一些新型应用中出现的数据呈现出超大规模、持续到达而且速率不定、需要实时处理以及网络分布等特点。传统的数据仓库技术和数据库管理技术已不能适应这种数据处理的需求。近年来出现的分布式流处理技术,为解决这类问题提供了一个良好途径。分布式流处理技术通过将数据流的处理分散到网络中的资源节点运行来提升处理的性能和可靠性。由于分布式流处理在提升应用运行可靠性、改善性能方面的优势,它已被广泛应用在金融、医学、军事等领域,而且越来越多的专家开始研究分布式流处理技术。 输入数据的特点以及运行过程的分布性决定了可用性对分布式流处理具有重要意义。本文主要针对分布式流处理应用的可用性进行研究,保障应用的每一个模块在运行过程中不会出错或者出错后能尽快回复。为了实现这个目标,本文从应用部署和故障检测恢复两个方面提出了解决方案。 分布式流处理应用由多个处理单元PE组合而成,其运行时必须把各个PE部署到网络上的资源节点。为使应用运行更加高效同时产生的资源代价尽可能小,本文提出了一种保证资源代价不超过一定上限值下使应用可用性尽可能大的应用部署策略。首先分析集群中的可用资源节点,根据节点的处理能力计算得出一个最佳节点集合,然后从集合中依次为PE和对应的副本选取满足资源需求同时与上游节点延时最小的节点。这样,可保证PE之间数据交互、网络连接各方面都处于最优状态。 应用部署到实际运行的服务器上后,随着输入数据的到来,处理单元开始执行相应的功能。由于应用运行过程中可能出现各种故障,所以首先要检测出应用发生了故障,然后利用相应的机制恢复应用。本文基于被动备份的方式实现分布式流处理应用的容错机制,PE定期给自己的副本发送检查点信息,故障发生时副本通过这些信息恢复应用,保障应用能继续运行。 基于上述两个方面,本文设计并实现了一个分布式流处理应用平台。通过实例证明用户把应用提交给平台后,平台确实能保证应用正常运行,并且在运行过程中为应用能提供可用性的保障。