一种实现运行环境动态伸缩的方法与流程

文档序号:12270899阅读:470来源:国知局

本发明涉及PAAS运维监控技术领域,具体涉及一种实现运行环境动态伸缩的方法,针对使用Paas平台cloud foundry进行应用运行环境使用及应用部署,实现运行环境的高可用,提高资源利用率。



背景技术:

Cloud Foundry是VMware推出的业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题.

由于它是开源的云计算Paas平台,灵活性高,横向扩展能力强,对外API比较丰富,因此在企业内作为应用运行环境支撑普遍受到欢迎,但是由于它是在运行实例弹性上面没有明确完善的解决思路,反而在Pivotal公司在自己商业化产品PCF中提供了弹性的策略,但由于商业化产品价格比较高,对于中小型企业无法承受,因此急需要一种性价比比较高的解决方案,来实现应用运行环境实例的弹性扩缩容,来保证应用的高可用,服务器资源的高利用。



技术实现要素:

本发明要解决的技术问题是:本发明针对以上问题,提供一种实现运行环境动态伸缩的方法,来实现应用运行环境实例的弹性扩缩容,提高了资源利用率,对用户透明并保证运行环境的正常使用。

本发明所采用的技术方案为:

一种实现运行环境动态伸缩的方法,所述方法通过java定时器调用cloud foundry的API获取所有应用运行环境的CPU使用信息,并根据CPU的使用率与阀值比较,采用标签化形式存入堆内存或内存数据库;利用java定时器获取堆内存或内存数据库的信息,根据规则来监测应用环境是否达到伸缩标准,并以之增加或减少实例个数,从而实现扩容/减容,总体实例数控制在最小-最大个数之间。

所述方法实现过程如下:

采用java堆内存,采用支持高并发、高吞吐量、线程安全的ConcurrentHashMap类型作为全局Map<应用Context名,12位状态码>写入内存, 12位状态码初始为“000000000000”即12位全0;设置定时器A和定时器B:

定时器A,使用Maxflag和Minflag分别作为在内存中写入H(超额)和L(低额)的触发标识,

每10秒钟,Maxflag检测是否某应用下所有实例CPU使用率都达到80%以上,满足条件进行数据打标签,用“H”写入状态码最后一位进行占位;

Minflag检测是否某应用下所有实例CPU使用率都达到20%以上且实例数超过2个,满足条件进行数据打标签,用“L”写入状态码最后一位进行占位;不超额也不低额则用“0”进行占位;

定时器B,不间断循环读取内存ConcurrentHashMap中的成员,如果读到Map中某个key的value状态码为12位全“H”,则说明一分钟该应用都处于超额状态,这时定时器B则调用cloud foundry接口增加一个实例,实现扩容;同理如果读到Map中某个key的value状态码为12位全“L”,则说明一分钟该应用都处于低额状态,这时定时器B则调用cloud foundry接口减少一个实例,实现减容。

所述方法ConcurrentHashMap类型作为全局Map写入内存时,停止运行的应用及时释放内存,防止内存占用不断增大。

本发明的有益效果为:

本发明实现了应用运行环境实例的弹性扩缩容,能够对于使用开源Paas产品cloud foundry的客户,快速高效提供了一种实例弹性解决方案,提高了资源利用率,也可做为开源产品的一个有益补充。

附图说明

图1为本发明方法示意图。

具体实施方式

下面结合附图,根据具体实施方式对本发明进一步说明:

实施例1:

一种实现运行环境动态伸缩的方法,所述方法通过java定时器调用cloud foundry的API获取所有应用运行环境的CPU使用信息,并根据CPU的使用率与阀值比较,采用标签化形式存入堆内存或内存数据库;利用java定时器获取堆内存或内存数据库的信息,根据规则来监测应用环境是否达到伸缩标准,并以之增加或减少实例个数,从而实现扩容/减容,总体实例数控制在最小-最大个数之间。

实施例2

如图1所示,在实施例1的基础上,本实施例所述方法实现过程如下:

采用java堆内存,采用支持高并发、高吞吐量、线程安全的ConcurrentHashMap类型作为全局Map<应用Context名,12位状态码>写入内存, 12位状态码初始为“000000000000”即12位全0;设置定时器A和定时器B:

定时器A,使用Maxflag和Minflag分别作为在内存中写入H(超额)和L(低额)的触发标识,

每10秒钟,Maxflag检测是否某应用下所有实例CPU使用率都达到80%以上,满足条件进行数据打标签,用“H”写入状态码最后一位进行占位;

Minflag检测是否某应用下所有实例CPU使用率都达到20%以上且实例数超过2个,满足条件进行数据打标签,用“L”写入状态码最后一位进行占位;不超额也不低额则用“0”进行占位;

定时器B,不间断循环读取内存ConcurrentHashMap中的成员,如果读到Map中某个key的value状态码为12位全“H”,则说明一分钟该应用都处于超额状态,这时定时器B则调用cloud foundry接口增加一个实例,实现扩容;同理如果读到Map中某个key的value状态码为12位全“L”,则说明一分钟该应用都处于低额状态,这时定时器B则调用cloud foundry接口减少一个实例,实现减容。

实施例3

在实施例2的基础上,本实施例所述方法ConcurrentHashMap类型作为全局Map写入内存时,停止运行的应用及时释放内存,防止内存占用不断增大。

实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1