一种对非JAVA的应用、对云原生的应用使用资源进行配置的方法及其装置制造方法及图纸

技术编号:30697287 阅读:18 留言:0更新日期:2021-11-06 09:32
一种对非JAVA的应用使用资源进行配置的方法,包括如下步骤:步骤1,使所述应用生成多个副本,选择其中一个副本作为试验对象;步骤2,对所述应用的全部副本进行额定的请求,并对所述试验对象进行资源限制;步骤3,收集所述试验对象占用的资源类型和数量以及该资源的占用程度;步骤4,当存放所述试验对象的POD正常工作时,则回到步骤2,直到该POD宕机为止,则确认本次之前分给试验对象的资源为最优配置。本发明专利技术还涉及对云原生的应用使用资源进行配置的方法,还涉及相应的装置。还涉及相应的装置。还涉及相应的装置。

【技术实现步骤摘要】
一种对非JAVA的应用、对云原生的应用使用资源进行配置的方法及其装置


[0001]本专利技术涉及本专利技术涉及一种k8s平台下的应用所需要资源的计算方法,特别涉及对非JAVA的应用、对云原生的应用使用资源进行配置的方法及其装置。

技术介绍

[0002]目前云原生是一个趋势,容器化技术应用的越来越广泛,k8s作为容器云技术运维平台的佼佼者,业界大量的应用发布在其中。每一个k8s集群中发布了大量的应用,要想合理利用资源,就必须对每个应用所消耗的资源提前预估定量。
[0003]但是随着应用增多需求的资源也越来越多,由于每个团队受限技术能力的限制对于开发应用具体需要多少资源是不清楚的,所以为了保证应用的稳定性就尽可能的多申请资源,这就导致了大部分的应用程序存才资源浪费;也有的应用资源申请少了,导致线上宕机引发事故。由此如何提供一种及时高效的自动调整合理利用云上资源,成为了亟待解决的问题。
[0004]应用中,分java应用和非java应用。java占据主流地位。业界有很多jvm的调优方式或者采用机器学习给出调优结果,但是侧重点是简化调优过程或者及时通知运维响应,无法做到及时高效的对云资源有效的调整。非java应用需要多少内存和cpu,只能通过压力测试得出。

技术实现思路

[0005]现在有的技术就是通过压力测试,模拟真实用户量的请求,测试系统所需要的资源的大概情况。然后把测试出来的并发和cpu内存的值,设置到k8s集群中。或者是根据经验要一个比较大的值。
[0006]压力测试的方式需要专业的测试人员配合,入门难度大。根据经验要一个比较大的值,资源的利用率低,浪费严重。Java应用在k8s容器中,要感知容器的内存和cpu限制,jvm不设置或者设置不合理,会造成内存浪费或者内存溢出等问题K8s (kubernetes)是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署,规划,更新,维护的一种机制Kubernetes Pods的本质是将命名空间和cgroups与多个线程结合起来。Pods让你可以指定想要运行的容器,而Kubernetes自动地建立相应的命名空间和cgroups。通过Pod,Kubernetes可以管理每个进程,因此对于每个进程的状态都有监控。这样,Kubernetes可以通过API向用户提供进程的状态,而且也可以提供一些服务,例如进程重启或者自动日志记录等。
[0007]云原生从字面意思上来看可以分成云和原生两个部分。
[0008]云是和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,云包含了IaaS,PaaS和SaaS。
[0009]原生就是土生土长的意思,我们在开始设计应用的时候就考虑到应用将来是运行云环境里面的,要充分利用云资源的优点,比如云服务的弹性和分布式优势。
[0010]微服务 微服务解决的是我们软件开发中一直追求的低耦合+高内聚,微服务可以解决这个问题,微服务的本质是把一块大饼分成若干块低耦合的小饼,比如一块小饼专门负责接收外部的数据,一块小饼专门负责响应前台的操作,小饼可以进一步拆分,比如负责接收外部数据的小饼可以继续分成多块负责接收不同类型数据的小饼,这样每个小饼出问题了,其它小饼还能正常对外提供服务。
[0011]DevOps的意思就是开发和运维不再是分开的两个团队,而是你中有我,我中有你的一个团队。
[0012]持续交付 持续交付的意思就是在不影响用户使用服务的前提下频繁把新功能发布给用户使用。
[0013]容器化 容器化的好处在于运维的时候不需要再关心每个服务所使用的技术栈了,每个服务都被无差别地封装在容器里,可以被无差别地管理和维护,现在比较流行的工具是docker和k8s。
[0014]所以你也可以简单地把云原生理解为:云原生 = 微服务 + DevOps + 持续交付 + 容器化。
[0015]本专利技术提供了一种基于k8s平台机器学习动态调优资源的方法装置。调优类型分为java应用和非java应用。
[0016]Java应用所述方法包括:通过应用程序获取JAVA应用容器的JVM日志信息,其中,所述应用程序和所述JAVA应用容器设置在云系统的一个POD中;将JVM数据作为训练数据输入线性回归,获取当前pod资源利用率诊断模型;根据该利用率诊断模型获取调优引擎,在该调优引擎获取jvm调优参数,将调优参数通过应用程序动态设置云系统的资源配置。重复上述步骤直至达到最优结果。通过本次申请解决了云系统资源的动态调度,通过有限尝试次数,达到资源利用率最大化。
[0017]首先,本申请实施例提供了一种基于机器学习的JVM调优方法,所述方法包括:获取应用程序的JVM日志信息,根据所述JVM日志信息作为训练数据;其中,所述训练数据包括训练集和验证集;将所述训练集输入线性回归,以获取资源利用率诊断模型,进而基于所述资源利用率诊断模型获取调优引擎;在所述调优引擎获取JVM调优参数数据后,根据所述调优参数设置云系统资源配置;非java应用所述方法为:同一个应用,同时启用多个副本。将其中一个副本作为实验对象,k8s自带的负载均衡策略为轮询策略,流量均衡进入到每一个副本中。确保实验对象宕机后也不会影响正常业务。通过持续监控pod的cpu和内存的使用情况和系统滑动窗口qps统计信息,将检测数据作为训练数据输入,建立决策树模型,通过训练,使得损失函数越小。最终得出性能与资源的关系,动态设置值。然后继续按照一定比例压缩资源,验证资源和性能的临界值,直到某个pod宕机为止。验证理论模型的正确性。
[0018]本专利的目标是,通过机器,经过一段时间的信息收集,自动准确的估算出资源和性能的一个平衡值。然后动态的把所需要的资源设置到k8s平台上,让性能和内存达到一个
最优解,提高资源利用率。
[0019]具体地说,本专利技术提供一种对非JAVA的应用使用资源进行配置的方法,包括如下步骤:步骤1,使所述应用生成多个副本,选择其中一个副本作为试验对象;步骤2,对所述应用的全部副本进行额定的请求,并对所述试验对象进行资源限制;步骤3,收集所述试验对象占用的资源类型和数量以及该资源的占用程度;步骤4,当存放所述试验对象的POD正常工作时,则回到步骤2,直到道该POD宕机为止,则确认本次之前分给试验对象的资源为最优配置。
[0020]在不影响业务的情况下,通过机器学习预测资源和理智,经过有限次数的尝试,让pod达到宕机的临界值,确定出性能和资源的最优解,动态为k8s平台资源限制。全程无需人为干预,设置的值也是合理值,大大提高资源利用率。
[0021]宕机本身是一件坏事,需要避免。本专利技术中,结合k8s平台特性,启动快、平台级别自愈能力、多副本、动态伸缩,让pod宕机,来达到资源和性能的平衡值,让宕机坏事变好事。
[0022]让开发者无需关注性能和资源的平衡值,就拥有系统给出的最优解,大大提高本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种对非JAVA的应用使用资源进行配置的方法,包括如下步骤:步骤1,使所述应用生成多个副本,选择其中一个副本作为试验对象;步骤2,对所述应用的全部副本进行额定的请求,并对所述试验对象进行资源限制;步骤3,收集所述试验对象占用的资源类型和数量以及该资源的占用程度;步骤4,当存放所述试验对象的POD正常工作时,则回到步骤2,直到该POD宕机为止,则确认本次之前分给试验对象的资源为最优配置。2.根据权利要求1所述的对非JAVA的应用使用资源进行配置的方法,其特征在于,所述额定的请求为预定的峰值请求数。3.根据权利要求2所述的对非JAVA的应用使用资源进行配置的方法,其特征在于,所述资源限制为上一次提供的资源的一半。4.根据权利要求3所述的对非JAVA的应用使用资源进行配置的方法,其特征在于,所述资源类型包括CPU和内存;所述资源数量为最小物理单元的数量;所述占用程度是指物理单元的工作负荷程度。5.根据权利要求4所述的对非JAVA的应用使用资源进行配置的方法,其特征在于,在步骤3中,还包括步骤3

1通过机器学习来计算资源的限制额度。6.根据权利要求5所述的对非JAVA的应用使用资源进行配置的方法,其特征在于,还包括步骤5,将确定的最优配置分配...

【专利技术属性】
技术研发人员:熊晓斌
申请(专利权)人:中航金网北京电子商务有限公司
类型:发明
国别省市:

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

1