开题报告:
论文题目:基于容器集群的自动化性能测试工具
课题研究目的和意义(含国内外研究现状综述):
容器集群的web应用是指使用软件引擎如Docker在服务器集群的操作系统上部署软件容器,再在其中部署web应用程序的开发方案,它最初是由Docker公司在2013年设计开发的。由于Docker引擎提供了一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制,使得web应用的部署兼备灵活性和便携性,于是使用Docker容器集群的web应用逐渐成为业界的热门方案。
为了使容器集群的web应用能够承载海量的数据和服务并发量,达到较高的可用性和可靠性,开发设计人员必须尽可能地使容器中的应用充分利用服务器资源。但是在实际操作中,开发设计人员由于需要通过繁琐的操作进行手动管理,往往难以观察到容器集群的实时性能,进而影响了负载不均问题的解决。所以,解决以上问题的最好办法是实现一个基于容器集群的web应用性能的自动化分布式测试工具来处理容器集群的性能问题。
通过查阅国内外文献可知,目前国内对于容器集群的性能、web应用和自动化测试方面有一定的研究,但是并没有结合这三者进行研究。例如华中科技大学的阮博文提出了共享云环境下的容器化应用的性能干扰检测模型。浙江大学的仇臣实现了Docker容器的性能监控系统。南京航空航天大学的张熙实现了web应用性能评测和测试框架的研究。清华大学的王鑫等研究了web应用性能评测。电子科技大学的文丽实现了分布式自动化测试框架。
由国外文献的查阅也可知,国外学者对容器集群在特定应用的性能有一定的研究,但是还缺乏结合web应用和自动化测试两个方面的研究。比如Miguel G. Xavier对基于容器的HPC和MapReduce两种场景的虚拟化进行深入的性能评估。
国外的学者还提出多种检测性能检测的方法。比如Google公司Xiao Zhang等人的提出了通过硬件性能计数器来获取虚拟机中每条指令的运行周期的历史数据和自动学习来确定虚拟机性能。华盛顿大学的Chiang等人则提出通过虚拟机的CPU利用率和I/O吞吐率建模成一个二次函数,并通过历史数据来预测应用是否会受到性能干扰。弗吉尼亚大学的Mars等人通过定义Bubble来测试和模拟内存系统在不同压力下的性能,从而量化实际环境中应用性能下降的幅度。宾夕法尼亚州立大学Govindan等人提出一种预测共享环境下由 Cache 导致应用性能下降的方法。
由此看来,进行基于容器集群web应用的实时负载性能的测试,并对测试功能进行封装,使用户可以实现自动化分布式测试有很高的可行性和一定的研究基础。这一研究也可以提高企业开发中容器管理系统的高效性和易用性,同时对于国内容器集群的性能、web应用和自动化测试方面的研究也有一定帮助。
课题研究内容:
研究内容包括:容器集群应用的部署和测试工具、web应用性能的检测、性能数据的可视化表示。
Docker容器集群的应用有其独特的体系架构,课题需要研究Kubernetes集群配置的过程和原理,比如包括部署Ectd集群、Kucectl命令行工具、Flannel 网络等,并优化部署分配模块,优化测试页面结构,使用户可以通过简易操作实现自动化分布式部署和测试。
对于web应用性能结果的检测,针对不同的场景,为了得到有意义、有价值的反馈数据,实施不同的加压策略来估算性能,包括但不限于以下策略:
子系统
|
加压策略
|
得到的数据指标
|
内存
|
强制限制最大内存使用量
|
总内存用量占满的所需时间变化率
|
内存
|
强制限制任务获取的最大内存使用量
|
挨饿任务数变化率
|
内存和磁盘
|
强制限制最大内存与swap区之和的用量
|
swap用量的时间变化率
|
I/0
|
施加大量只占用I/O的进程
|
响应速度
|
I/0
|
强制限制数据带宽
|
数据传输变化率
|
网络
|
基于Server-Client模式,服务器发出大量请求
|
数据传输变化率
|
网络
|
基于Server-Client模式,消费者发出大量请求
|
数据传输变化率
|
最后,实现集群部署和测试工具的用户交互界面,性能数据导出后生成可视化界面,提供直观形象的集群性能反馈。
研究方法和研究思路(技术路线):
研究项目拟使用Go语言和Python语言共同进行开发。
后端结构如下图:
后端具体技术如下:
1.读入用户配置代码和配置文件框架,进行解析,生成Yaml配置文件;
2.用Yaml配置文件,在Docker中部署Kubernetes集群;
3.部署后,输出部署结果;
4.读入用户测试代码和配置文件框架,采用Tsung工具向Kubernetes集群加压;
5.将得到的测试数据进行整理,以可视化形式输出。
前端结构如下图:
前端具体技术如下:
1.用户设定部署选项,生成用户配置代码;
2.生成用户配置代码后,调用后端程序进行部署;
3.用户设定测试选项,生成用户测试代码;
4.生成用户配置代码后,调用后端程序进行测试;
5.显示部署或测试的结果
预期研究结果:(可选填)
1、对于容器集群的web应用,设计自动化分布式部署和测试工具,使用户可以通过简易操作实现自动化分布式部署和测试。
2、 对于web应用性能结果的准确性问题,针对不同的场景,实施不同的加压策略来估算性能,以得到有意义、有价值的反馈数据。
3、 对于使用Kubernetes进行集群管理和数据导出界面不友好的问题,设计和实现集群部署和测试工具的用户交互平台,使用户通过简易操作管理集群,并得到直观形象的集群性能反馈。
计划进度安排:
1、1月14日-2月14日:对于容器集群的web应用,通过进行需求分析、设计、编码、测试,实现自动化分布式部署和测试工具,使用户可以通过简易操作实现自动化分布式部署和测试。
2、2月15日-3月28日:对于web应用性能结果的准确性问题,针对不同的场景,实施不同的加压策略来估算性能,以得到有意义、有价值的反馈数据。
3、3月29日-4月12日:对于使用Kubernetes进行集群管理和数据导出界面不友好的问题,通过进行需求分析、设计、编码、测试,实现集群部署和测试工具的用户交互平台,使用户通过简易操作管理集群,并得到直观形象的集群性能反馈。
4、4月13日-5月5日:完善系统,撰写毕业设计论文初稿。
5、5月6日-5月25日:完善系统,撰写毕业设计论文终稿。