CN106445512A - 一种实现运行环境动态伸缩的方法 - Google Patents
一种实现运行环境动态伸缩的方法 Download PDFInfo
- Publication number
- CN106445512A CN106445512A CN201610816688.XA CN201610816688A CN106445512A CN 106445512 A CN106445512 A CN 106445512A CN 201610816688 A CN201610816688 A CN 201610816688A CN 106445512 A CN106445512 A CN 106445512A
- Authority
- CN
- China
- Prior art keywords
- timer
- application
- memory
- cpu
- java
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种实现运行环境动态伸缩的方法,所述方法通过java定时器调用cloud foundry的API获取所有应用运行环境的CPU使用信息,并根据CPU的使用率与阀值比较,采用标签化形式存入堆内存或内存数据库;利用java定时器获取堆内存或内存数据库的信息,根据规则来监测应用环境是否达到伸缩标准,并以之增加或减少实例个数,从而实现扩容/减容,总体实例数控制在最小‑最大个数之间。本发明实现了应用运行环境实例的弹性扩缩容,能够对于使用开源Paas产品cloud foundry的客户,快速高效提供了一种实例弹性解决方案,提高了资源利用率,也可做为开源产品的一个有益补充。
Description
技术领域
本发明涉及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产品cloudfoundry的客户,快速高效提供了一种实例弹性解决方案,提高了资源利用率,也可做为开源产品的一个有益补充。
附图说明
图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写入内存时,停止运行的应用及时释放内存,防止内存占用不断增大。
实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
Claims (3)
1.一种实现运行环境动态伸缩的方法,其特征在于:所述方法通过java定时器调用cloud foundry的API获取所有应用运行环境的CPU使用信息,并根据CPU的使用率与阀值比较,采用标签化形式存入堆内存或内存数据库;利用java定时器获取堆内存或内存数据库的信息,根据规则来监测应用环境是否达到伸缩标准,并以之增加或减少实例个数,从而实现扩容/减容,总体实例数控制在最小-最大个数之间。
2.根据权利要求1所述的一种实现运行环境动态伸缩的方法,其特征在于,所述方法实现过程如下:
采用java堆内存,采用ConcurrentHashMap类型作为全局Map<应用Context名,12位状态码>写入内存,12位状态码初始为“000000000000”;设置定时器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写入内存时,停止运行的应用及时释放内存,防止内存占用不断增大。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610816688.XA CN106445512B (zh) | 2016-09-12 | 2016-09-12 | 一种实现运行环境动态伸缩的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610816688.XA CN106445512B (zh) | 2016-09-12 | 2016-09-12 | 一种实现运行环境动态伸缩的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106445512A true CN106445512A (zh) | 2017-02-22 |
CN106445512B CN106445512B (zh) | 2019-07-02 |
Family
ID=58169290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610816688.XA Active CN106445512B (zh) | 2016-09-12 | 2016-09-12 | 一种实现运行环境动态伸缩的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106445512B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107171877A (zh) * | 2017-07-26 | 2017-09-15 | 郑州云海信息技术有限公司 | 一种创建cf服务实例的方法及装置 |
CN108958824A (zh) * | 2017-05-18 | 2018-12-07 | 龙芯中科技术有限公司 | 应用程序的启动方法、装置、电子设备及存储介质 |
CN109783577A (zh) * | 2019-01-05 | 2019-05-21 | 咪付(广西)网络技术有限公司 | 一种基于策略的云端数据库弹性伸缩方法 |
CN112087326A (zh) * | 2020-08-24 | 2020-12-15 | 烽火通信科技股份有限公司 | 一种多实例动态部署收发方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050198285A1 (en) * | 2004-01-27 | 2005-09-08 | Sun Microsystems, Inc. | Overload management in an application-based server |
CN103916396A (zh) * | 2014-04-10 | 2014-07-09 | 电子科技大学 | 一种基于负载自适应的云平台应用实例自动伸缩方法 |
CN104954478A (zh) * | 2015-06-23 | 2015-09-30 | 普元信息技术股份有限公司 | 云计算平台中实现服务器自动纵向伸缩的系统及方法 |
-
2016
- 2016-09-12 CN CN201610816688.XA patent/CN106445512B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050198285A1 (en) * | 2004-01-27 | 2005-09-08 | Sun Microsystems, Inc. | Overload management in an application-based server |
CN103916396A (zh) * | 2014-04-10 | 2014-07-09 | 电子科技大学 | 一种基于负载自适应的云平台应用实例自动伸缩方法 |
CN104954478A (zh) * | 2015-06-23 | 2015-09-30 | 普元信息技术股份有限公司 | 云计算平台中实现服务器自动纵向伸缩的系统及方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958824A (zh) * | 2017-05-18 | 2018-12-07 | 龙芯中科技术有限公司 | 应用程序的启动方法、装置、电子设备及存储介质 |
CN107171877A (zh) * | 2017-07-26 | 2017-09-15 | 郑州云海信息技术有限公司 | 一种创建cf服务实例的方法及装置 |
CN109783577A (zh) * | 2019-01-05 | 2019-05-21 | 咪付(广西)网络技术有限公司 | 一种基于策略的云端数据库弹性伸缩方法 |
CN109783577B (zh) * | 2019-01-05 | 2021-10-08 | 咪付(广西)网络技术有限公司 | 一种基于策略的云端数据库弹性伸缩方法 |
CN112087326A (zh) * | 2020-08-24 | 2020-12-15 | 烽火通信科技股份有限公司 | 一种多实例动态部署收发方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106445512B (zh) | 2019-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106445512A (zh) | 一种实现运行环境动态伸缩的方法 | |
Bonabeau | The perils of the imitation age. | |
US20070016893A1 (en) | Tracking resource usage by applications | |
US9123010B2 (en) | Ledger-based resource tracking | |
CN104541242A (zh) | 代码执行的灵活加速 | |
WO2007130367A3 (en) | System and method for allocating and deallocating memory within transactional code | |
US20200202126A1 (en) | Recognizing carbon-saving behaviors from images | |
CN102831068A (zh) | 一种内存操作记录的处理方法及装置 | |
CN109033359A (zh) | 一种多进程安全访问sqlite的方法 | |
CN109196476A (zh) | 共享垃圾收集器的不同类型图之间的无缝高性能互操作性 | |
CN111383106B (zh) | 授信处理方法、装置、设备及系统 | |
CN107193598A (zh) | 一种应用启动方法、移动终端及计算机可读存储介质 | |
CN101789944B (zh) | 多功能电能表通信协议栈的开发系统 | |
CN103440279A (zh) | 一种数据采集过程中的数据适配器及其数据适配方法 | |
EP3146426A1 (en) | High-performance computing framework for cloud computing environments | |
CN109614270A (zh) | 基于Hbase的数据读写方法、装置、设备及存储介质 | |
CN108491736A (zh) | 篡改监测方法及装置 | |
Stijn et al. | Organizational memory and the completeness of process modeling in ERP systems: Some concerns, methods and directions for future research | |
KR102443171B1 (ko) | 이기종 컴퓨팅 환경에서 데이터 타입 변환을 지원하기 위한 시스템 및 방법 | |
WO2020223742A3 (en) | Generation and operation of artificial intelligence based conversation systems | |
US7386647B2 (en) | System and method for processing an interrupt in a processor supporting multithread execution | |
US20120233623A1 (en) | Using a yield indicator in a hierarchical scheduler | |
EP2756396B1 (en) | Simulation of static members and parameterized constructors on an interface-based api | |
CN109981580A (zh) | 一种防止cmsp被动态跟踪的安全方法和系统 | |
CN102779076A (zh) | 一种浏览器中进程间通信的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |