CN106445512B - 一种实现运行环境动态伸缩的方法 - Google Patents
一种实现运行环境动态伸缩的方法 Download PDFInfo
- Publication number
- CN106445512B CN106445512B CN201610816688.XA CN201610816688A CN106445512B CN 106445512 B CN106445512 B CN 106445512B CN 201610816688 A CN201610816688 A CN 201610816688A CN 106445512 B CN106445512 B CN 106445512B
- Authority
- CN
- China
- Prior art keywords
- memory
- timer
- cpu
- carries out
- application
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 230000008602 contraction Effects 0.000 title abstract 2
- 238000002372 labelling Methods 0.000 claims abstract description 4
- 238000011038 discontinuous diafiltration by volume reduction Methods 0.000 claims description 6
- 230000003247 decreasing effect Effects 0.000 claims 1
- 239000000047 product Substances 0.000 abstract description 6
- 238000012544 monitoring process Methods 0.000 abstract description 2
- 239000013589 supplement Substances 0.000 abstract description 2
- 230000009286 beneficial effect Effects 0.000 abstract 1
- 101150096185 PAAS gene Proteins 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
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定时器调用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则调用cloud foundry接口增加一个实例,实现扩容;同理如果读到Map中某个key的value状态码为12位全“L”,则说明一分钟该应用都处于低额状态,这时定时器B则调用cloud foundry接口减少一个实例,实现减容。
所述方法采用ConcurrentHashMap类型作为全局Map写入内存时,停止运行的应用及时释放内存,防止内存占用不断增大。
本发明的有益效果为:
本发明实现了应用运行环境实例的弹性扩缩容,能够对于使用开源Paas产品cloud foundry的客户,快速高效提供了一种实例弹性解决方案,提高了资源利用率,也可做为开源产品的一个有益补充。
附图说明
图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则调用cloud foundry接口增加一个实例,实现扩容;同理如果读到Map中某个key的value状态码为12位全“L”,则说明一分钟该应用都处于低额状态,这时定时器B则调用cloud foundry接口减少一个实例,实现减容。
实施例3
在实施例2的基础上,本实施例所述方法采用ConcurrentHashMap类型作为全局Map写入内存时,停止运行的应用及时释放内存,防止内存占用不断增大。
实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
Claims (2)
1.一种实现运行环境动态伸缩的方法,其特征在于:所述方法通过java定时器调用cloud foundry的API获取所有应用运行环境的CPU使用信息,并根据CPU的使用率与阈值比较,采用标签化形式将CPU使用信息存入堆内存或内存数据库;利用java定时器获取堆内存或内存数据库的信息,根据规则来监测应用环境是否达到伸缩标准,并以之增加或减少实例个数,从而实现扩容/减容,总体实例数控制在最小-最大个数之间;
所述方法实现过程如下:
采用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接口减少一个实例,实现减容。
2.根据权利要求1所述的一种实现运行环境动态伸缩的方法,其特征在于,所述方法采用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 CN106445512A (zh) | 2017-02-22 |
CN106445512B true 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) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958824A (zh) * | 2017-05-18 | 2018-12-07 | 龙芯中科技术有限公司 | 应用程序的启动方法、装置、电子设备及存储介质 |
CN107171877B (zh) * | 2017-07-26 | 2020-07-07 | 浪潮云信息技术有限公司 | 一种创建cf服务实例的方法及装置 |
CN109783577B (zh) * | 2019-01-05 | 2021-10-08 | 咪付(广西)网络技术有限公司 | 一种基于策略的云端数据库弹性伸缩方法 |
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 | 普元信息技术股份有限公司 | 云计算平台中实现服务器自动纵向伸缩的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106445512A (zh) | 2017-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106445512B (zh) | 一种实现运行环境动态伸缩的方法 | |
JP5042454B2 (ja) | 受信コンピューティングシステムのための方法とコンピュータプログラム、およびコンピューティングシステム | |
KR101825772B1 (ko) | 선택된 실행 런타임을 갖는 실행을 위한 사용자 코드의 런타임 독립적 표현 기법 | |
US10592218B2 (en) | Dynamic data and compute resource elasticity | |
KR102338849B1 (ko) | 실시간 운영 체제에서 스택 메모리 관리를 제공하는 방법 및 시스템 | |
EP3128415B1 (en) | Computing device, process control method, and process control program | |
US10120701B2 (en) | System and method for transferring data between operating systems | |
EP2339466A3 (en) | Data control device, data control method, and program | |
TW200519752A (en) | Mechanism for enabling a program to be executed while the execution of an operating system is suspended | |
CN103430145A (zh) | 页面错误应对机制 | |
CN108345483A (zh) | 一种通知消息的提示方法、终端及计算机可读存储介质 | |
US11341044B2 (en) | Reclaiming storage resources | |
EP3504617A1 (en) | Hybrid deoptimization mechanism for class hierarchy analysis | |
US20170083387A1 (en) | High-performance computing framework for cloud computing environments | |
CN105824697A (zh) | 一种基于队列的分布式多级调度方法 | |
Xiao et al. | Energy-efficiency enhanced virtual machine scheduling policy for mixed workloads in cloud environments | |
CN109040156A (zh) | 一种基于容器云的软负载资源处理方法及装置 | |
US20120233623A1 (en) | Using a yield indicator in a hierarchical scheduler | |
US20160147621A1 (en) | Mobile agent based memory replication | |
CN113032154B (zh) | 一种虚拟cpu的调度方法、装置、电子设备及存储介质 | |
US20130066622A1 (en) | Simulation of static members and parameterized constructors on an interface-based api | |
US20080313656A1 (en) | User mode stack disassociation | |
Shim et al. | Cfs-v: I/o demand-driven vm scheduler in kvm | |
GB2617868A (en) | Application programming interface to monitor resource usage | |
Shifflett et al. | SecureCore software architecture: Trusted Management Layer (TML) kernel extension module interface specification |
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 |