一种实现运行环境动态伸缩的方法技术

技术编号:14697867 阅读:144 留言:0更新日期:2017-02-24 03:23
本发明专利技术公开了一种实现运行环境动态伸缩的方法,所述方法通过java定时器调用cloud foundry的API获取所有应用运行环境的CPU使用信息,并根据CPU的使用率与阀值比较,采用标签化形式存入堆内存或内存数据库;利用java定时器获取堆内存或内存数据库的信息,根据规则来监测应用环境是否达到伸缩标准,并以之增加或减少实例个数,从而实现扩容/减容,总体实例数控制在最小‑最大个数之间。本发明专利技术实现了应用运行环境实例的弹性扩缩容,能够对于使用开源Paas产品cloud foundry的客户,快速高效提供了一种实例弹性解决方案,提高了资源利用率,也可做为开源产品的一个有益补充。

【技术实现步骤摘要】

本专利技术涉及PAAS运维监控
,具体涉及一种实现运行环境动态伸缩的方法,针对使用Paas平台cloudfoundry进行应用运行环境使用及应用部署,实现运行环境的高可用,提高资源利用率。
技术介绍
CloudFoundry是VMware推出的业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题.由于它是开源的云计算Paas平台,灵活性高,横向扩展能力强,对外API比较丰富,因此在企业内作为应用运行环境支撑普遍受到欢迎,但是由于它是在运行实例弹性上面没有明确完善的解决思路,反而在Pivotal公司在自己商业化产品PCF中提供了弹性的策略,但由于商业化产品价格比较高,对于中小型企业无法承受,因此急需要一种性价比比较高的解决方案,来实现应用运行环境实例的弹性扩缩容,来保证应用的高可用,服务器资源的高利用。
技术实现思路
本专利技术要解决的技术问题是:本专利技术针对以上问题,提供一种实现运行环境动态伸缩的方法,来实现应用运行环境实例的弹性扩缩容,提高了资源利用率,对用户透明并保证运行环境的正常使用。本专利技术所采用的技术方案为:一种实现运行环境动态伸缩的方法,所述方法通过java定时器调用cloudfoundry的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则调用cloudfoundry接口增加一个实例,实现扩容;同理如果读到Map中某个key的value状态码为12位全“L”,则说明一分钟该应用都处于低额状态,这时定时器B则调用cloudfoundry接口减少一个实例,实现减容。所述方法ConcurrentHashMap类型作为全局Map写入内存时,停止运行的应用及时释放内存,防止内存占用不断增大。本专利技术的有益效果为:本专利技术实现了应用运行环境实例的弹性扩缩容,能够对于使用开源Paas产品cloudfoundry的客户,快速高效提供了一种实例弹性解决方案,提高了资源利用率,也可做为开源产品的一个有益补充。附图说明图1为本专利技术方法示意图。具体实施方式下面结合附图,根据具体实施方式对本专利技术进一步说明:实施例1:一种实现运行环境动态伸缩的方法,所述方法通过java定时器调用cloudfoundry的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则调用cloudfoundry接口增加一个实例,实现扩容;同理如果读到Map中某个key的value状态码为12位全“L”,则说明一分钟该应用都处于低额状态,这时定时器B则调用cloudfoundry接口减少一个实例,实现减容。实施例3在实施例2的基础上,本实施例所述方法ConcurrentHashMap类型作为全局Map写入内存时,停止运行的应用及时释放内存,防止内存占用不断增大。实施方式仅用于说明本专利技术,而并非对本专利技术的限制,有关
的普通技术人员,在不脱离本专利技术的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本专利技术的范畴,本专利技术的专利保护范围应由权利要求限定。本文档来自技高网
...
一种实现运行环境动态伸缩的方法

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

【技术特征摘要】
1.一种实现运行环境动态伸缩的方法,其特征在于:所述方法通过java定时器调用cloudfoundry的API获取所有应用运行环境的CPU使用信息,并根据CPU的使用率与阀值比较,采用标签化形式存入堆内存或内存数据库;利用java定时器获取堆内存或内存数据库的信息,根据规则来监测应用环境是否达到伸缩标准,并以之增加或减少实例个数,从而实现扩容/减容,总体实例数控制在最小-最大个数之间。2.根据权利要求1所述的一种实现运行环境动态伸缩的方法,其特征在于,所述方法实现过程如下:采用java堆内存,采用ConcurrentHashMap类型作为全局Map<应用Context名,12位状态码>写入内存,12位状态码初始为“000000000000”;设置定时器A和定时器B:定时器A,使用Maxflag和Minflag分别作为在内存中写入超额H和低额L的触发标识,每10秒钟,Maxflag检测是否某应用下所有实例CPU使用率都达...

【专利技术属性】
技术研发人员:周庆勇
申请(专利权)人:浪潮软件股份有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1