Cloud foundry中warden框架的设计与实现
南京大学 徐铖
本文介绍了在平台即服务层面上的产品cloud foundry中所使用的warden框架。Cloud foundry是一个平台即服务的产品,用户通过cloud foundry提供的命令行工具将自己已经完成的项目部署到cloud foundry上面,而不需要对项目进行修改,这样可以简化部署过程,降低运维成本。开发人员可以在这个平台上面部署自己的应用而不用考虑太多的运行环境问题。对于cloud foundry,模块众多,如果对应用所消耗的系统资源不加以限制就可能发生因为特定模块或应用过度占用资源使得整个系统奔溃的情形。而warden框架就是为了解决资源分配不均衡,隔离系统资源的问题。Warden框架主要使用了linux的cgroup技术将系统的资源进行隔离,优化系统的负载,避免了过载等问题。 本文首先介绍cloud foundry项目的背景以及warden框架出现的原因和warden基本信息,介绍了虚拟化领域,然后介绍了本文主要工作,接着介绍了该项目涉及到的技术背景,包括了Event machine技术,ruby on rails技术以及control group技术,同时还涵盖了PaaS, IaaS和SaaS等基本概念。接下来介绍warden框架的分析与设计,包括了产品的功能需求分析,涉众分析,同时阐明了项目的解决方案,介绍了构建结构等,接着分析介绍了warden client, warden protocol, warden server和em warden client模块。最后介绍了warden框架的实现,重点介绍了warden server的iomux, wsh, oom和repquota等功能的具体实现。 Warden client模块实现了一个瘦客户端,提供了与服务器交互的基本功能实现;em-warden client模块则主要对warden client模块进行了增强,提供了event machine机制,从而实现多线程网络编程;warden protocol模块是client和server相互理解的一个协议簇,主要是基于ruby的beefcake,他们是可以通过socket传输的protobuf文件;warden server则是基本功能实现的主体,它提供了对容器的处理和进程的分发,容器状态的维护,还包括了对系统的Cpu,内存,IO,带宽等资源进行控制与隔离的机制。
Cloud foundry中warden框架的设计与实现