本发明涉及云计算和云原生,具体地说是一种基于云原生的服务归零伸缩方法及系统。
背景技术:
1、随着云计算技术的快速发展,云原生架构因其高效的资源利用和灵活的伸缩性受到广泛关注。然而,现有的云原生自动伸缩方法大多依赖于预设规则或简单的阈值判断,难以应对复杂多变的业务负载。特别是在低负载或空闲时段,这些方法往往无法做到资源的精准释放,导致资源浪费和成本增加。因此,需要一种更为智能的服务归零伸缩方法,在确保服务质量的同时,实现资源的最大化利用。
技术实现思路
1、本发明的技术任务是针对以上不足之处,提供一种基于云原生的服务归零伸缩方法及系统,能够实现服务资源的精准归零与动态扩展,在确保服务质量的同时,实现资源的最大化利用。
2、本发明解决其技术问题所采用的技术方案是:
3、一种基于云原生的服务归零伸缩方法,该方法的实现包括:
4、通过监控组件收集资源指标,包括cpu、内存,同时集成自定义业务指标(如qps),把数据收集到监控数据收集程序服务进行统一处理,并进行持久化存储;
5、收集存储的历史数据,使用机器学习算法对历史数据进行训练,把训练完成的模型部署到k8s集群中,并定期更新模型以反映最新的负载情况;预测未来时间段的系统负载,输出预测结果供归零伸缩控制器使用;
6、所述归零伸缩控制器,为kubernetes 控制器,用于监控系统负载和预测数据,并根据策略动态调整服务实例数量;控制器监听监控系统的数据源,根据实时的负载和预测结果做出决策:在低负载或空闲时段,控制器通过 kubernetes api 自动将无用的服务实例缩减到最小(归零)或完全停止;在负载增加时,控制器根据负载预测自动扩展服务实例,以确保服务质量;
7、结合服务网格,实现微服务间的高级流量管理和安全策略配置。
8、本方法通过结合云原生的horizontal pod autoscaler(hpa)功能、归零伸缩控制器组件、机器学习预测组件及监控组件完成自动伸缩服务,实现了服务资源的精准归零与动态扩展。
9、进一步的,该方法的具体实现步骤如下:
10、s1、准备云原生应用的基础环境,部署高可用的 kubernetes 集群;
11、s2、将单体应用拆分为多个可以独立扩展的微服务;
12、s3、配置监控服务并自定义指标监控;
13、s4、收集历史数据,构建负载预测模型;
14、s5、创建归零缩放控制器;
15、s6、配置流量入口,部署服务网格。
16、kubernetes 集群可以使用云服务提供商(如阿里云、腾讯云)提供的 kubernetes服务,也可以自行搭建;
17、进一步的,所述步骤s2,具体实现如下:
18、分析现有应用,确定其功能模块和相应的微服务划分;为每个微服务编写 docker镜像,并将其部署到 kubernetes 集群中。
19、进一步的,所述步骤s3,具体实现如下:
20、s3.1、在kubernetes安装helm,并添加prometheus的仓库,使用helm安装prometheus服务,默认情况下prometheus会采集基本的 cpu、内存等资源指标;
21、s3.2、创建自定义指标收集的微服务,可使用java程序来操作,首先引入prometheus的客户端依赖;然后在代码中定义自定义指标(如每秒请求量、队列长度),把该代码程序构建一个docker镜像,创建k8s deployment引用这个docker镜像,将镜像部署到集群中;同时,创建service将deployment暴露出来供外部应用程序访问;最后,使用prometheus scraping配置从应用中抓取自定义指标,可设置每10秒抓取一次,从而收集自定义指标;
22、s3.3、开发自定义的监控数据收集程序,并部署在kubernetes集群中以实时收集监控数据;与自定义指标收集的微服务一样,首先编写代码定时从prometheus系统中获取各种指标,然后存储到数据库中,之后把该代码程序构建成docker镜像,使用k8s的deployment引用这个镜像部署到集群中,同时创建service将deployment暴露出来供外部应用程序访问。
23、进一步的,所述步骤s4,具体实现如下:
24、s4.1、收集步骤s3中监控服务收集到的持久化数据,对收集的数据进行数据归一化处理、特征处理,然后使用数据集进行模型训练和调优;
25、s4.2、训练好模型后,把其与相应的依赖构建成docker镜像,在dockerfile中拷贝模型文件、安装必要的python库等;然后使用k8s deployment引用构建的docker镜像构建pod;同时,创建kubernetes service对象,将deployment暴露出来,以便外部或内部应用程序访问。
26、进一步的,所述步骤s5,具体实现如下:
27、s5.1、使用operator初始化一个项目,定义一个自定义资源表示需要监控的负载和预测数据,在config/crd文件夹中定义laodscalers.example.com的crd,其中包括最大实例数、最小实例数、实例伸缩的cpu阈值的配置,然后,使用kubectl命令部署所述crd在集群中;
28、s5.2、使用operator sdk创建一个控制器,使用operator-sdk create命令,生成一个基础的 operator 框架,包括基础代码和文件,用于监视和管理自定义 kubernetes资源;然后实现reconcile函数,编写控制器逻辑,获取loadscaler实例、deployment、获取监控指标以及通过api获取模型推理服务的结果,根据获取的具体数值计算期望副本数;最后通过api调用,更新deployment的副本数;
29、s5.3、把控制器代码构建成docker镜像,然后编译k8s的deployment和service的yaml文件,使用构建好的控制器镜像,部署到k8s集群中。
30、进一步的,所述步骤s6,具体实现如下:
31、安装部署istio服务网格,首先下载istio cli工具,使用istio默认配置进行安装,编辑virtualservice的yaml文件,部署virtualservice来管理微服务间的流量,设置流量路由策略。
32、本发明还要求保护一种基于云原生的服务归零伸缩系统,包括:
33、数据收集和自定义监控指标模块,用于通过监控组件收集cpu、内存等资源指标,同时集成自定义业务指标(如qps),把数据收集到监控数据收集程序服务进行统一处理,并进行持久化存储;
34、机器学习预测模块,用于收集存储的历史数据,使用机器学习算法对历史数据进行训练,把训练完成的模型部署到k8s集群中,并定期更新模型以反映最新的负载情况;预测未来时间段的系统负载,输出预测结果供归零伸缩控制器使用;
35、归零伸缩控制器,编写kubernetes 控制器,用于监控系统负载和预测数据,并根据策略动态调整服务实例数量;控制器监听监控系统的数据源,根据实时的负载和预测结果做出决策:在低负载或空闲时段,控制器通过 kubernetes api 自动将无用的服务实例缩减到最小(归零)或完全停止;在负载增加时,控制器根据负载预测自动扩展服务实例,以确保服务质量;
36、配置流量入口模块,用于结合服务网格,实现微服务间的高级流量管理和安全策略配置;
37、该系统通过上述的基于云原生的服务归零伸缩方法实现服务归零伸缩。
38、本发明还要求保护一种基于云原生的服务归零伸缩装置,包括:至少一个存储器和至少一个处理器;
39、所述至少一个存储器,用于存储机器可读程序;
40、所述至少一个处理器,用于调用所述机器可读程序,实现上述的方法。
41、本发明还要求保护一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,实现上述的方法。
42、本发明的一种基于云原生的服务归零伸缩方法及系统与现有技术相比,具有以下有益效果:
43、本发明通过结合机器学习预测和云原生服务,实现了资源的精准调度和动态调整,极大地提升了系统的高可用性和响应速度。在低负载或空闲时段,能够智能地将服务实例减少到最小或完全停止,避免了资源浪费和不必要的成本支出。其次,通过自定义监控指标的引入,该发明能够更全面地反映实际业务负载情况,提升了自动伸缩的精确度和效率。机器学习算法的应用进一步增强了系统对未来负载的预测能力,使得资源分配更加智能和前瞻。
44、从应用价值来看,这种基于云原生的服务归零伸缩方法可以广泛应用于各种需要动态资源管理的场景,如互联网应用、电子商务平台、大数据处理、物联网(iot)系统等。这些场景通常具有不稳定的负载和波动性强的用户访问模式,因此需要一种能够高效、智能调整资源的方法来应对突发的流量高峰和闲置时段。此外,该发明还可以显著降低云计算资源的使用成本,同时提高资源利用率和服务质量,使企业能够以更低的成本提供更稳定和可靠的服务。总体来说,这项发明为云计算资源的管理和优化提供了一个创新的解决方案,具有广泛的市场潜力和应用前景。
1.一种基于云原生的服务归零伸缩方法,其特征在于,该方法的实现包括:
2.根据权利要求1所述的一种基于云原生的服务归零伸缩方法,其特征在于,该方法的具体实现步骤如下:
3.根据权利要求2所述的一种基于云原生的服务归零伸缩方法,其特征在于,所述步骤s2,具体实现如下:
4.根据权利要求2所述的一种基于云原生的服务归零伸缩方法,其特征在于,所述步骤s3,具体实现如下:
5.根据权利要求2或4所述的一种基于云原生的服务归零伸缩方法,其特征在于,所述步骤s4,具体实现如下:
6.根据权利要求2所述的一种基于云原生的服务归零伸缩方法,其特征在于,所述步骤s5,具体实现如下:
7.根据权利要求2所述的一种基于云原生的服务归零伸缩方法,其特征在于,所述步骤s6,具体实现如下:
8.一种基于云原生的服务归零伸缩系统,其特征在于,包括:
9.一种基于云原生的服务归零伸缩装置,其特征在于,包括:至少一个存储器和至少一个处理器;
10.一种计算机可读介质,其特征在于,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,实现权利要求1至7任一所述的方法。