论文部分内容阅读
流式数据处理和复杂事件处理技术在金融大数据的实时分析、互联网和物联网应用等场景中有广泛应用。在云平台架构上实现的流式数据处理应用需要开发人员进行大量繁杂的环境配置工作,并且对整个系统的状态监测、运维也提出了较高的要求。因此如何以平台服务的方式为流式数据处理应用开发者提供一套应用开发解决方案,帮助提高应用开发效率、降低运维复杂度成为了一个迫切需要解决的问题。针对上述问题,本文以实验室承担的实际项目为背景,在对Docker、Kubernetes、Kafka、Storm和Esper等相关技术深入研究分析的基础上,构建了基于容器云的流式数据处理平台服务(Stream Data Processing Platform Service,后面简称SDPPS)。该系统包括流式数据处理应用构建模块、平台服务管理模块、流式应用运行模块、平台服务运行实例状态监测模块和运行实例扩容模块。通过实验测试和实例运行表明该系统是可行及有效的。本文的工作要点如下:1)基于SDPPS的应用开发机制。流式数据处理应用开发需要开发者进行环境安装配置等工作,内容繁琐影响实际业务逻辑开发。本文提出了基于容器云的SDPPS应用模型,基于该模型,应用开发者可通过应用定制模块构建应用后生成应用描述文件,应用执行引擎根据描述文件进行平台服务和应用的实例化,生成可执行的流数据处理应用。通过测试及实例验证该应用开发机制可行且有效。2)SDPPS运行实例的运行状态监测。应用开发者需要掌握平台服务运行状态信息,但容器云状态信息获取和服务实例运行状态信息获取方式分散,部分需要通过命令行工具查看,使得平台服务运行状态监测难度增加。SDPPS中通过统一的接口封装不同服务的任务状态信息,以主动监测和被动接收监测信息的方式收集状态信息,便于开发者通过管理界面实时监测SDPPS实例运行状态。实验证明,该监测服务对被监测平台服务实例的CPU性能影响小于1%,对内存使用影响小于5%。3)基于流式处理应用中数据流量感知的SDPPS服务运行实例扩展。流式数据处理实际应用中数据的流量随时间变化明显,为避免容器云环境下流式数据处理应用实例平行度在初始设定后,无法感知负载变化进行动态扩展,而造成系统在面对突增流量时的延迟甚至数据丢失等问题,本文在集群资源充足的情况下提出了一套基于流量预测的水平扩展的机制,该机制主要通过LMS算法计算现在集群处理任务时延和未来一段时间内流量来得出需要扩展的实例数量,并使用Kubernetes接口对服务实例进行水平扩容。通过实验得到的流量预测算法的标准均方误差(NMSE)指标为0.51,扩展机制有效。