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
- memory
- timer
- application
- instances
- contraction
- 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
- 238000000034 method Methods 0.000 title claims abstract description 24
- 230000008602 contraction Effects 0.000 title claims abstract description 13
- 239000000047 product Substances 0.000 abstract description 5
- 238000002372 labelling Methods 0.000 abstract 1
- 239000013589 supplement Substances 0.000 abstract 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 101150096185 PAAS gene Proteins 0.000 description 1
- 239000013065 commercial product Substances 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process 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定时器调用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 |
---|---|---|
CN105119952B (zh) | 云平台下自动弹性地分配资源的方法和系统 | |
CN106445512A (zh) | 一种实现运行环境动态伸缩的方法 | |
US10417062B2 (en) | Method and apparatus of unloading out of memory processing flow to user space | |
CN113867916B (zh) | 任务处理方法、装置及电子设备 | |
TW201832072A (zh) | 資源回收方法及裝置 | |
US10261918B2 (en) | Process running method and apparatus | |
US10248456B2 (en) | Method and system for providing stack memory management in real-time operating systems | |
CN105074666A (zh) | 执行在具有不同指令集架构的处理器上的操作系统 | |
US20210200668A1 (en) | Reserved memory in memory management system | |
US20180067674A1 (en) | Memory management in virtualized computing | |
CN104424015B (zh) | 一种虚拟机管理方法和装置 | |
CN104541242A (zh) | 代码执行的灵活加速 | |
US11126575B1 (en) | Interrupt recovery management | |
CN102779072A (zh) | 一种嵌入式系统及其应用进程的休眠与唤醒方法 | |
CN111124643A (zh) | 一种分布式存储中的删除任务调度方法、系统及相关装置 | |
CN104346211A (zh) | 一种云计算下实现虚拟机迁移的方法及系统 | |
CN102567096A (zh) | 一种在多任务环境下防止死锁的互斥信号量管理方法 | |
CN104239054A (zh) | 一种基于安卓系统的插件加载方法及其系统 | |
CN113553216B (zh) | 数据恢复方法、装置、电子设备及存储介质 | |
CN110704334B (zh) | 一种重要产品数据管理的方法、系统及设备 | |
CN114936173B (zh) | 一种eMMC器件的读写方法、装置、设备和存储介质 | |
CN106776018B (zh) | 用于分布式系统的主节点和从节点的并行处理方法和设备 | |
CN102427468B (zh) | 一种云计算操作系统及其调度方法 | |
CN105677606A (zh) | 总线设备的热插拔方法及总线装置 | |
CN111209079A (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 |