CN114598706B - 基于Serverless函数的存储系统弹性伸缩方法 - Google Patents
基于Serverless函数的存储系统弹性伸缩方法 Download PDFInfo
- Publication number
- CN114598706B CN114598706B CN202210228048.2A CN202210228048A CN114598706B CN 114598706 B CN114598706 B CN 114598706B CN 202210228048 A CN202210228048 A CN 202210228048A CN 114598706 B CN114598706 B CN 114598706B
- Authority
- CN
- China
- Prior art keywords
- storage
- function
- server
- elastic expansion
- storage system
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1031—Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1029—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于Serverless函数的存储系统弹性伸缩方法,步骤包括:S1.元数据服务器按照预设第一周期获取存储服务器的负载信息;S2.元数据服务器将接收到的负载信息汇总,得到整个存储服务器集群的负载状态,并按照预设第二周期调用Serverless函数中的管理函数;S3.管理函数根据预先配置的弹性伸缩策略目标以及负载状态作出弹性伸缩决策,并发送任务指令给多个工作函数以执行弹性伸缩任务;S4.存储服务器接收到工作函数的弹性扩容或弹性缩容请求后,调整存储系统中存储介质的分配,以完成存储系统存储容量的弹性伸缩。本发明具有实现方法简单、成本低、系统健壮性强、灵活性强且可扩展性好等优点。
Description
技术领域
本发明涉及存储系统技术领域,尤其涉及基于Serverless函数的存储系统弹性伸缩方法。
背景技术
弹性伸缩是云计算中一种动态调整服务器集群计算资源的方法,当业务需求发生变化时,服务器集群中的计算资源会根据实际负载增加或减少。弹性伸缩是一个经典的自动控制问题,它需要一个控制器来动态调整资源类型和分配的资源量,以达到特定的性能目标。具体来说,弹性伸缩通常被抽象为包含四个阶段的控制循环(监控、分析、规划和执行)。随着时间的推移,控制循环不断重复,最终让系统资源达到供需平衡的状态。
现有技术中的分布式存储系统在云端运行时往往不能够以较低成本高效地完成存储系统弹性伸缩任务,具体来说,通常会存在以下问题:
1、需要依赖单一主控节点做出弹性伸缩的决策,这会给主控节点带来较大的负担,同时当主控节点出现故障时,会影响整个存储系统的工作,这也就意味着系统健壮性较低。而且大部分现有分布式存储系统的弹性伸缩策略固定在系统中,无法根据应用的实际情况变换策略,系统灵活性偏低。
2、弹性伸缩资源任务一般会交给常驻在集群中的节点执行,而这些任务需要消耗节点的计算资源来完成,通常会干扰节点的本职工作,造成系统延迟偏高或吞吐量下降的情况,而且节点在云中的长期运行也会导致系统成本偏高。
3、在传统分布式存储系统的设计中,通常不需要考虑成本和性能的平衡,但是当分布式存储系统运行在云计算环境时,则需要为其使用的资源向云服务端付费,若使用过多的资源来快速完成任务会使得成本高昂,而若尽可能地节省成本又会导致处理速度较为缓慢。同时传统分布式存储系统并不支持将资源弹性伸缩任务外包给集群外部节点,所以资源弹性伸缩任务通常只能在集群内部完成,进一步提高了系统的性能开销。
发明内容
本发明要解决的技术问题就在于:分布式存储系统在云端运行时不能以较低成本高效地完成弹性伸缩。针对现有技术存在的技术问题,本发明提供一种实现方法简单、成本低、系统健壮性强、灵活性强且可扩展性好的存储系统弹性伸缩方法。
为解决上述技术问题,本发明提出的技术方案为:
一种基于Serverless函数的存储系统弹性伸缩方法,包括如下步骤:
S1.元数据服务器按照预设第一周期获取存储服务器的负载信息;
S2.元数据服务器将接收到的所述存储服务器的负载信息汇总,得到整个存储服务器集群的负载状态,并按照预设第二周期调用Serverless函数中的管理函数;
S3.所述管理函数接收所述存储服务器集群的负载状态,根据预先配置的弹性伸缩策略目标以及所述负载状态作出弹性伸缩决策,并发送任务指令给Serverless函数中多个工作函数以执行弹性伸缩任务;
S4.所述存储服务器接收到所述工作函数的弹性扩容/弹性缩容请求后,调整存储系统中存储介质的分配,以完成存储系统存储容量的弹性伸缩。
进一步的,所述步骤S3中作出弹性伸缩决策时,考虑集群需要的存储空间和/或不同存储介质在存储空间中的占比。
进一步的,所述步骤S2中还包括根据所述存储服务器集群的负载状态调整所述第二周期,如果所述负载状态的变化趋势大于第一预设阈值,则增大所述第二周期,如果所述负载状态的变化趋势小于第二预设阈值,则减小所述第二周期。
进一步的,当执行弹性扩容任务时,所述步骤S4的步骤包括:
S411.调用并启动第一工作函数,由所述第一工作函数根据所述管理函数发出的任务指令发出新增存储介质请求;
S412.所述存储服务器接收到所述新增存储介质请求后,将空闲的存储介质分配给存储系统;
S413.调用并启动第二工作函数,由所述第二工作函数根据所述管理函数的任务指令判断是否需要启动新的存储服务器;
S414.所述第二工作函数根据存储服务器的位置、分配的存储介质,通知存储服务器挂载新增的存储介质,新增的存储介质加入到存储系统后完成弹性扩容。
进一步的,所述步骤S413中判断是否需要启动新的存储服务器包括:判断当前存储服务器是否能挂载新增的存储介质,如果无法挂载,则在存储服务器集群中启动新的存储服务器;如果可以直接挂载,则不做操作。
进一步的,所述步骤S414包括:所述第二工作函数获取存储服务器的位置以及获取存储系统中被分配的存储介质,并根据所述存储介质的类型,通知所述存储服务器以不同的方法挂载新增的存储介质。
进一步的,当执行弹性缩容时,所述步骤S4的步骤包括:
S421.调用并启动第二工作函数,由所述第二工作函数根据管理函数发出的任务指令将空闲的存储介质释放到存储系统中;
S422.调用并启动第一工作函数,由所述第一工作函数根据管理函数发出的任务指令发送减少存储介质请求;
S423.所述存储服务器接收到所述减少存储介质请求后,回收存储系统中空闲的存储介质,完成弹性缩容。
进一步的,所述步骤S421中,通过关闭空闲的存储系统程序,或调整现有存储服务器调整存储系统程序的配置,以将空闲的存储介质释放到存储系统中。
一种基于Serverless函数的存储系统弹性伸缩系统,包括:
元数据服务器集群,包括多个元数据服务器,每个元数据服务器负责多个存储服务器的管理,包括:按照预设第一周期获取存储服务器的负载信息;以及将接收到的所述存储服务器的负载信息汇总,得到整个存储服务器集群的负载状态,并按照预设第二周期调用Serverless函数中的管理函数,所述管理函数在启动过程中接收所述存储服务器集群的负载状态,根据预先配置的弹性伸缩策略目标以及所述负载状态作出弹性伸缩决策,并发送任务指令给Serverless函数中多个工作函数以执行弹性伸缩任务;
存储服务器集群,包括多个存储服务器,所述存储服务器接收到所述工作函数的弹性扩容/弹性缩容请求后,调整存储系统中存储介质的分配,以完成存储系统存储容量的弹性伸缩。
一种存储有计算机程序的计算机可读存储介质,所述计算机程序执行时实现如上述的方法。
与现有技术相比,本发明的优点在于:
1、本发明通过分离弹性伸缩的策略和机制,由元数据服务器和管理函数共同完成弹性伸缩的决策,策略和机制的分离能够有效提高系统的灵活性,便于根据不同的应用调整弹性伸缩策略,并且降低了系统因单一模块故障而无法正常工作的概率,有效提升了系统的健壮性。
2、本发明通过策略和机制的分离还能够实现弹性伸缩策略的可插拔性,系统能够根据不同的应用动态调整弹性伸缩策略,在保持系统底层的稳定性的同时,还能够提高系统灵活性。
3、本发明通过将弹性伸缩的决策和执行外包给临时运行的Serverless函数,因此系统不再依赖于长期运行的节点,而是可以随时通过低成本的Serverless函数在短时间内伸缩系统存储资源,这在提高系统的灵活性的同时,降低了系统的总体成本。
4、本发明通过将弹性伸缩的决策和执行外包给Serverless函数,存储节点不再需要参与弹性伸缩任务的执行,从而可以让节点专注于自己的本职数据读写工作,不仅可以降低存储节点的额外开销,而且可以提高系统的整体性能。
附图说明
图1为本发明实施例1基于Serverless函数的存储系统弹性伸缩方法的实现流程示意图。
图2是本发明实施例1在具体应用实施例中基于Serverless函数实现存储系统弹性伸缩的整体系统结构示意图。
图3是本发明实施例2基于Serverless函数的存储系统弹性扩容方法的实现原理示意图。
图4是本发明实施例3基于Serverless函数的存储系统弹性缩容方法的实现原理示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
Serverless计算是一种新型的云计算模式,它的核心概念是能在不管理服务器的情况下构建和运行应用程序。开发者只需将代码上传至平台,即可以任意规模运行应用,而且只需为实际使用的资源付费。Serverless计算的开发者不需要关注支撑应用程序运行的运维工作,只需专注于核心业务逻辑的开发,服务器的配置、维护、更新、扩容全部交给Serverless平台来处理。且Serverless架构可以提供一种更加“代码碎片化”的软件架构模式——函数即服务,在这种模式中函数(Function)是最小的计算单元,相比微服务中的模块更加细小。“函数”根据事件自动触发,可以代表开发者执行各种操作,例如:创建、读取、更新和删除等等。
在传统的分布式系统中,不同服务器之间可以直接通过网络通信传递数据。由于受Serverless平台的设计模式限制,函数之间很难像分布式计算中的节点一样直接通过网络通信,因此大部分数据密集型应用需要借助远程存储系统来交换计算中的临时数据。但是,现有的存储系统应用于数据密集型场景时,依然会存在延迟较高、吞吐量不足等问题,而且在数据密集型的Serverless计算中,应用程序的负载需求会不断地迅速变化,这就需要提前为应用程序提供充足的计算和存储资源,否则来自应用程序的请求就可能会发生阻塞,极大地影响用户体验。然而,由于负载波动幅度很大,无法提前预估应用程序所需的资源,因而存储系统必须实时地根据负载作出弹性缩放决策。
在单个云中的弹性伸缩问题可以定义为如何在没有人工干预的情况下自主、动态地配置和取消配置一组资源以满足波动的应用程序工作负载,从而最大限度地减少资源成本和应用服务级别协议(SLA)或服务级别目标(SLO)得到满足。当请求增加时,可用资源处于拥塞状态,系统可以通过横向扩展(启动更多节点)或纵向扩展(向现有资源添加资源)的方式增加资源。当请求减少时,系统可以通过横向收缩(关闭一些节点)或纵向收缩(从现有节点中删除资源)的方式减少资源。
若采用中心化的主控节点长期收集系统中其他节点的负载信息来完成弹性伸缩任务,当主控节点故障时,整个系统的弹性伸缩将受到影响,系统健壮性偏低,且常驻的节点还会带来额外的成本,同时如果系统的策略和机制是耦合在一起的,则无法根据实际情况更换策略,会使得系统灵活性偏低,另外在弹性伸缩任务执行时,部分存储节点需要花费额外的时间去处理CPU、网络、存储资源的伸缩,这可能会干扰存储节点自身的存储任务。
本发明基于Serverless计算以及存储系统的上述特性,通过将弹性伸缩的策略和机制分离,由元数据服务器和管理函数共同完成弹性伸缩的决策,并由工作函数完成弹性伸缩的执行,使得弹性伸缩任务可以去中心化地决策和执行,可以有效降低系统因单一模块故障而无法正常工作的概率,从而提升了系统的健壮性,且由于将弹性伸缩任务分离到不同节点上,不仅降低了主控节点的开销以及系统的总体成本,而且提高了系统的可扩展性,策略和机制的分离还能够实现弹性伸缩策略的可插拔性,从而使得系统能够根据不同的应用动态调整弹性伸缩策略,在保持系统底层的稳定性的同时,还能够提高系统灵活性。
实施例1:
如图1所示,本实施例基于Serverless函数的存储系统弹性伸缩方法包括如下步骤:
S1.元数据服务器按照预设第一周期获取存储服务器的负载信息。
存储服务器集群中的每个存储服务器间隔第一固定时间T1(例如每1秒),将存储服务器的负载信息发送至元数据服务器集群中对应的元数据服务器。存储服务器在客户端函数写入完数据后,向对应的元数据服务器反馈写入结果。
上述负载信息可以为CPU使用率、网络带宽使用率、存储空间总量、存储空间剩余量等。
上述时间间隔T1可以由存储系统预先配置,在集群规模较小时可以配置较低的间隔以达到较好的反馈质量,在集群规模较大时可以配置较高的间隔以降低服务器发送、接收、处理负载信息的压力。
S2.元数据服务器将接收到的存储服务器的负载信息汇总,得到整个存储服务器集群的负载状态,并按照预设第二周期调用Serverless函数中的管理函数。
元数据服务器在接收到存储服务器发送的负载信息后,将负载信息汇总并生成整个存储服务器集群的统计结果,由统计结果即得到整个存储服务器集群的负载状态,每间隔第二固定时间T2后,元数据服务器调用管理函数,并将集群的统计信息发送给该管理函数。
本实施例步骤S2中还包括根据存储服务器集群的负载状态调整第二周期,如果负载状态的变化趋势大于第一预设阈值,即变化趋势较快,则增大所述第二周期,如果负载状态的变化趋势小于第二预设阈值,即变化趋势较慢,则减小第二周期。即上述时间间隔T2并不是固定的,元数据服务器根据统计结果的初步情况判断集群负载的变化趋势,如果变化趋势较快,那么增大该时间间隔T2,从而帮助存储系统迅速做出弹性伸缩的决策;如果变化趋势较慢,那么减小时间间隔T2变化,从而减小调用管理函数的成本。
S3.管理函数接收存储服务器集群的负载状态,根据预先配置的弹性伸缩策略目标以及负载状态作出弹性伸缩决策,并发送任务指令给Serverless函数中多个工作函数以执行弹性伸缩任务。
管理函数在被元数据服务器调用后启动,管理函数在接收到来自元数据服务器的集群统计信息后,根据预先配置好的弹性伸缩策略目标和当前集群的负载情况开展决策。将弹性伸缩任务通过Serverless函数来完成,其中Serverless函数包含管理函数和工作函数两个部分,管理函数负责根据集群负载统计信息完成决策,并通过工作函数执行达成的决策,工作函数则负责与云服务器和存储服务器集群协调。
策略目标可以有许多不同的方案,以反应式的弹性伸缩策略为例。当集群综合利用率高于预设第一比例(如80%)以上时,集群资源有可能耗尽,未来可能无法及时处理来自客户端函数的存储请求,此时便可以执行集群扩容操作;当集群综合利用率低于第二比例(如40%)以下时,集群资源有可能过剩,未来可能会增加集群的整体开销,此时便可以执行集群缩容操作。
上述弹性伸缩策略不仅会考虑到集群需要的存储空间,还会考虑到不同存储介质在存储空间中的占比,从而达到成本和性能的平衡,也可以仅考虑存储空间或占比中任意一种。
S4.存储服务器接收到工作函数的弹性扩容/弹性缩容请求后,调整存储系统中存储介质的分配,以完成存储系统存储容量的弹性伸缩。
管理函数在做出弹性伸缩决策之后,将调用多个工作函数来执行实际的弹性伸缩工作,并发送需要扩容/缩容的存储空间量及其对应的存储介质(例如扩容100GB闪存)。
每个工作函数负责的任务不同,第一工作函数负责与云服务端通信,向云服务端请求增加/减少存储资源,第二工作函数负责与存储服务器集群通信,在存储服务器集群中挂载/卸载存储资源,从而完成存储系统存储容量的弹性扩容/缩容。
本实施例通过分离弹性伸缩的策略和机制,由元数据服务器和管理函数共同完成弹性伸缩的决策,由工作函数控制完成弹性伸缩的执行,策略和机制的分离能够有效提高系统的灵活性,便于根据不同的应用调整弹性伸缩策略,并且降低系统因单一模块故障而无法正常工作的概率,有效提升系统的健壮性,策略和机制的分离还能够实现弹性伸缩策略的可插拔性,从而系统能够根据不同的应用动态调整弹性伸缩策略,在保持系统底层的稳定性的同时,还能够提高系统灵活性。
本实施例通过将弹性伸缩的决策和执行外包给临时运行的Serverless函数,存储节点不再需要参与弹性伸缩任务的执行,无需节点常驻运行完成决策,也不需要节点自身处理资源的扩展,从而可以让节点专注于自己的本职工作,而且Serverless函数在任务运行完毕后即可休眠,只需要为函数运行的短暂时间付费,不仅可以降低存储节点的额外开销和系统的总体成本,而且可以提高系统的整体性能。
本实施例还提供用于实现上述方法的基于Serverless函数的存储系统弹性伸缩系统,该系统包括:
元数据服务器集群,包括多个元数据服务器,每个元数据服务器负责多个存储服务器的管理,包括:按照预设第一周期获取存储服务器的负载信息;以及将接收到的存储服务器的负载信息汇总,得到整个存储服务器集群的负载状态,并按照预设第二周期调用Serverless函数中的管理函数,管理函数在启动过程中接收存储服务器集群的负载状态,根据预先配置的弹性伸缩策略目标以及负载状态作出弹性伸缩决策,并发送任务指令给Serverless函数中多个工作函数以执行弹性伸缩任务;
存储服务器集群,包括多个存储服务器,存储服务器接收到工作函数的弹性扩容/弹性缩容请求后,调整存储系统中存储介质的分配,以完成存储系统存储容量的弹性伸缩。
如图2所示,将本发明应用于具体应用实施例中时具体包括客户端函数、元数据服务器集群、存储服务器集群、Serverless函数,各部分的具体设置如下所述:
客户端函数是Serverless应用程序的载体,Serverless应用程序由许多不同功能的客户端函数组成。客户端函数与元数据服务器集群和存储服务器集群交互以存储文件数据。
元数据服务器集群包括一组功能类似的元数据服务器,元数据服务器存储文件的元数据信息(例如文件名、文件创建时间、文件修改时间、文件大小、文件存储位置等等)。每个元数据服务器负责多个存储服务器的管理。
存储服务器集群包含一组功能类似的存储服务器,存储服务器会存储文件的实际数据,但是各存储服务器所使用的存储介质不相同,不同的存储介质的性能和成本有所区别。
Serverless函数包括存储系统预先配置的一系列函数,位于云服务端提供的Serverless平台上,由Serverless函数负责弹性伸缩任务的决策和执行。Serverless函数具体分为管理函数和工作函数两类。
本实施例弹性伸缩包括两种实现方式:一种为弹性扩容,即为在存储系统中新增存储介质,一种为弹性缩容,即为在存储系统中减少存储介质,当需要实现弹性扩容时则步骤S4中发送弹性扩容请求,分配新的存储介质给存储系统,以完成存储系统存储容量的弹性扩容;当需要实现弹性缩容时则步骤S4中发送弹性缩容请求,减少存储系统的存储介质,以完成存储系统存储容量的弹性缩容。
本实施例上述公有云平台也可以采用私有云或混合云,存储介质可以采用DRAM内存、NVME闪存,也可以根据实际需求采用其他存储介质。
本实施例还提供存储有计算机程序的计算机可读存储介质,计算机程序执行时实现如上述的方法。
实施例2:
本实施例与实施例1基本相同,不同之处在于本实施例是利用实施例1的方法实现基于Serverless函数的存储系统弹性扩容,即包括如下步骤:
S1.元数据服务器按照预设第一周期获取存储服务器的负载信息。
S2.元数据服务器将接收到的存储服务器的负载信息汇总,得到整个存储服务器集群的负载状态,并按照预设第二周期调用Serverless函数中的管理函数;
S3.管理函数接收存储服务器集群的负载状态,根据预先配置的弹性伸缩策略目标以及负载状态作出弹性伸缩决策,并发送任务指令给Serverless函数中多个工作函数以执行弹性伸缩任务;
S4.存储服务器接收到工作函数的弹性扩容请求后,调整存储系统中存储介质的分配,以完成存储系统存储容量的弹性扩容。
本实施例中步骤S4的具体步骤包括:
S411.调用并启动第一工作函数,由第一工作函数根据管理函数发出的任务指令发出新增存储介质请求;
S412.存储服务器接收到新增存储介质请求后,将空闲的存储介质分配给存储系统;
S413.调用并启动第二工作函数,由第二工作函数根据管理函数的任务指令判断是否需要启动新的存储服务器;
S414.第二工作函数根据存储服务器的位置、分配的存储介质,通知存储服务器挂载新增的存储介质,新增的存储介质加入到存储系统后完成弹性扩容。
本实施例上述步骤S413中判断是否需要启动新的存储服务器具体包括:判断当前存储服务器是否能挂载新增的存储介质,如果无法挂载,则在存储服务器集群中启动新的存储服务器;如果可以直接挂载,则不做操作。
本实施例中,步骤S414具体包括:第二工作函数获取存储服务器的位置以及获取存储系统中被分配的存储介质,并根据存储介质的类型,通知存储服务器以不同的方法挂载新增的存储介质。
如图3所示,本实施例基于Serverless函数实现存储系统弹性扩容的步骤包括:
第一工作函数在被管理函数调用后启动,第一工作函数根据管理函数发出的任务指令,通过云服务端提供的API向云服务端请求新增存储介质。由于管理函数发出的任务指令是系统专用,而且可能会包含多个复合的指令,因此第一工作函数需要将指令转换为云服务端API所能理解的格式。
云服务端在接收到第一工作函数的请求后,将在存储系统所在的区域中将云服务端资源池中空闲的存储介质(例如DRAM内存、NVME闪存等等)分配给存储系统。存储系统此时便可以进一步的分配这些存储介质到指定的存储服务器上。
第二工作函数在被管理函数调用后启动,第二工作函数根据管理函数发出的任务指令,判断现有存储服务器是否能挂载新增的存储介质,如果无法挂载,则在存储服务器集群中启动新的存储服务器;如果可以直接挂载,那么将不做任何操作。
在新的存储服务器启动后,或现有存储服务器能够挂载存储介质后。第二工作函数获取存储服务器的位置(IP地址),然后再找到存储系统中已经被云服务端分配好的存储介质,随后再根据存储介质的类型,通知存储服务器以不同的方法挂载新增的存储介质。
在存储介质挂载好后,第二工作函数进一步通知新的存储服务器启动存储系统程序,或是通知现有存储服务器调整存储系统程序的配置,从而将新增的存储介质加入到存储系统当中。此时存储系统中总的存储容量完成了扩容,弹性伸缩任务完成。
实施例3:
本实施例与实施例1基本相同,不同之处在于本实施例是利用实施例1的方法实现基于Serverless函数的存储系统弹性缩容,即包括如下步骤:
S1.元数据服务器按照预设第一周期获取存储服务器的负载信息。
S2.元数据服务器将接收到的存储服务器的负载信息汇总,得到整个存储服务器集群的负载状态,并按照预设第二周期调用Serverless函数中的管理函数;
S3.管理函数接收存储服务器集群的负载状态,根据预先配置的弹性伸缩策略目标以及负载状态作出弹性伸缩决策,并发送任务指令给Serverless函数中多个工作函数以执行弹性伸缩任务;
S4.存储服务器接收到工作函数的弹性扩容请求后,调整存储系统中存储介质的分配,以完成存储系统存储容量的弹性缩容。
本实施例中步骤S4的步骤包括:
S421.调用并启动第二工作函数,由第二工作函数根据管理函数发出的任务指令将空闲的存储介质释放到存储系统中;
S422.调用并启动第一工作函数,由第一工作函数根据管理函数发出的任务指令发送减少存储介质请求;
S423.存储服务器接收到减少存储介质请求后,回收存储系统中空闲的存储介质,完成弹性缩容。
本实施例上述步骤S421中,通过关闭空闲的存储系统程序,或调整现有存储服务器调整存储系统程序的配置,以将空闲的存储介质释放到存储系统中。
本实施例步骤S421还包括:空闲的存储系统程序关闭后,第二工作函数在存储服务器集群中关闭对应的存储服务器。如果只是将空闲的存储介质释放到存储系统,那么将不做任何操作。
如图4所示,本实施例基于Serverless函数实现存储系统弹性缩容的步骤包括:
第二工作函数在被管理函数调用后启动,第二工作函数根据管理函数发出的任务指令,通知空闲的存储系统程序关闭,或是通知现有存储服务器调整存储系统程序的配置,从而将空闲的存储介质释放到存储系统当中。
在空闲的存储系统程序关闭后,第二工作函数在存储服务器集群中关闭对应的存储服务器。如果只是将空闲的存储介质释放到存储系统,那么不做任何操作。
第一工作函数在被管理函数调用后启动,第一工作函数根据管理函数发出的任务指令,通过云服务端提供的API向云服务端请求减少存储介质。由于管理函数发出的任务指令是系统专用,而且可能会包含多个复合的指令,因此第一工作函数需要将指令转换为云服务端API所能理解的格式。
云服务端在接收到第一工作函数的请求后,将在存储系统所在的区域中将存储系统中空闲的存储介质(例如DRAM内存、NVME闪存等等)回收至云服务端资源池。此时,存储系统中总的存储容量完成了缩容,弹性伸缩任务完成。
本发明上述Serverless函数也可以使用由存储系统自身管理的虚拟机或容器。在存储系统集群规模较大时,总体的弹性伸缩决策和执行任务将会较重,调用Serverless函数完成弹性伸缩任务的成本可能会超过长期运行的虚拟机或容器,若不考虑弹性伸缩的灵活性、实现复杂性,可以使用存储系统自身管理的虚拟机或容器代替Serverless函数以降低成本。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (10)
1.一种基于Serverless函数的存储系统弹性伸缩方法,其特征在于,包括如下步骤:
S1.元数据服务器按照预设第一周期获取存储服务器的负载信息;
S2.元数据服务器将接收到的所述存储服务器的负载信息汇总,得到整个存储服务器集群的负载状态,并按照预设第二周期调用Serverless函数中的管理函数;
S3.所述管理函数接收所述存储服务器集群的负载状态,根据预先配置的弹性伸缩策略目标以及所述负载状态作出弹性伸缩决策,并发送任务指令给Serverless函数中多个工作函数以执行弹性伸缩任务,所述工作函数包括第一工作函数以及第二工作函数,所述第一工作函数用于与云服务端通信,向云服务端请求增加或减少存储资源,所述第二工作函数用于与存储服务器集群通信,在存储服务器集群中挂载/卸载存储资源,从而完成存储系统存储容量的弹性扩容或缩容;
S4.所述存储服务器接收到所述工作函数的弹性扩容/弹性缩容请求后,调整存储系统中存储介质的分配,以完成存储系统存储容量的弹性伸缩。
2.根据权利要求1所述的基于Serverless函数的存储系统弹性伸缩方法,其特征在于:所述步骤S3中作出弹性伸缩决策时,考虑集群需要的存储空间和/或不同存储介质在存储空间中的占比。
3.根据权利要求1所述的基于Serverless函数的存储系统弹性伸缩方法,其特征在于:所述步骤S2中还包括根据所述存储服务器集群的负载状态调整所述第二周期,如果所述负载状态的变化趋势大于第一预设阈值,则增大所述第二周期,如果所述负载状态的变化趋势小于第二预设阈值,则减小所述第二周期。
4.根据权利要求1所述的基于Serverless函数的存储系统弹性伸缩方法,其特征在于:当执行弹性扩容任务时,所述步骤S4的步骤包括:
S411.调用并启动第一工作函数,由所述第一工作函数根据所述管理函数发出的任务指令发出新增存储介质请求;
S412.所述存储服务器接收到所述新增存储介质请求后,将空闲的存储介质分配给存储系统;
S413.调用并启动第二工作函数,由所述第二工作函数根据所述管理函数的任务指令判断是否需要启动新的存储服务器;
S414.所述第二工作函数根据存储服务器的位置、分配的存储介质,通知存储服务器挂载新增的存储介质,新增的存储介质加入到存储系统后完成弹性扩容。
5.根据权利要求4所述的基于Serverless函数的存储系统弹性伸缩方法,其特征在于,所述步骤S413中判断是否需要启动新的存储服务器包括:判断当前存储服务器是否能挂载新增的存储介质,如果无法挂载,则在存储服务器集群中启动新的存储服务器;如果可以直接挂载,则不做操作。
6.根据权利要求4所述的基于Serverless函数的存储系统弹性伸缩方法,其特征在于,所述步骤S414包括:所述第二工作函数获取存储服务器的位置以及获取存储系统中被分配的存储介质,并根据所述存储介质的类型,通知所述存储服务器以不同的方法挂载新增的存储介质。
7.根据权利要求1~6中任意一项所述的基于Serverless函数的存储系统弹性伸缩方法,其特征在于:当执行弹性缩容时,所述步骤S4的步骤包括:
S421.调用并启动第二工作函数,由所述第二工作函数根据管理函数发出的任务指令将空闲的存储介质释放到存储系统中;
S422.调用并启动第一工作函数,由所述第一工作函数根据管理函数发出的任务指令发送减少存储介质请求;
S423.所述存储服务器接收到所述减少存储介质请求后,回收存储系统中空闲的存储介质,完成弹性缩容。
8.根据权利要求7所述的基于Serverless函数的存储系统弹性伸缩方法,其特征在于:所述步骤S421中,通过关闭空闲的存储系统程序,或调整现有存储服务器调整存储系统程序的配置,以将空闲的存储介质释放到存储系统中。
9.一种基于Serverless函数的存储系统弹性伸缩系统,其特征在于,包括:
元数据服务器集群,包括多个元数据服务器,每个元数据服务器负责多个存储服务器的管理,包括:按照预设第一周期获取存储服务器的负载信息;以及将接收到的所述存储服务器的负载信息汇总,得到整个存储服务器集群的负载状态,并按照预设第二周期调用Serverless函数中的管理函数,所述管理函数在启动过程中接收所述存储服务器集群的负载状态,根据预先配置的弹性伸缩策略目标以及所述负载状态作出弹性伸缩决策,并发送任务指令给Serverless函数中多个工作函数以执行弹性伸缩任务,所述工作函数包括第一工作函数以及第二工作函数,所述第一工作函数用于与云服务端通信,向云服务端请求增加或减少存储资源,所述第二工作函数用于与存储服务器集群通信,在存储服务器集群中挂载/卸载存储资源,从而完成存储系统存储容量的弹性扩容或缩容;
存储服务器集群,包括多个存储服务器,所述存储服务器接收到所述工作函数的弹性扩容/弹性缩容请求后,调整存储系统中存储介质的分配,以完成存储系统存储容量的弹性伸缩。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序执行时实现如权利要求1~8中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210228048.2A CN114598706B (zh) | 2022-03-08 | 2022-03-08 | 基于Serverless函数的存储系统弹性伸缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210228048.2A CN114598706B (zh) | 2022-03-08 | 2022-03-08 | 基于Serverless函数的存储系统弹性伸缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114598706A CN114598706A (zh) | 2022-06-07 |
CN114598706B true CN114598706B (zh) | 2023-05-16 |
Family
ID=81808740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210228048.2A Active CN114598706B (zh) | 2022-03-08 | 2022-03-08 | 基于Serverless函数的存储系统弹性伸缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114598706B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109062658A (zh) * | 2018-06-29 | 2018-12-21 | 优刻得科技股份有限公司 | 实现计算资源服务化的调度方法、装置、介质、设备及系统 |
CN111897658A (zh) * | 2020-08-26 | 2020-11-06 | 中国工商银行股份有限公司 | 一种基于函数计算节点的云计算系统扩容方法及装置 |
CN112214293A (zh) * | 2017-11-08 | 2021-01-12 | 华为技术有限公司 | 一种无服务器架构下业务部署的方法和函数管理平台 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11281394B2 (en) * | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
CN110837408B (zh) * | 2019-09-16 | 2022-06-17 | 中国科学院软件研究所 | 一种基于资源缓存的高性能无服务器计算方法及系统 |
CN113296901A (zh) * | 2020-04-02 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 实现弹性处理的方法及设备和实现弹性预处理的方法 |
CN111541760B (zh) * | 2020-04-20 | 2022-05-13 | 中南大学 | 基于无服务器雾计算系统架构的复杂任务分配方法 |
US11301301B2 (en) * | 2020-07-22 | 2022-04-12 | International Business Machines Corporation | Workload offloading between computing environments |
CN113296880A (zh) * | 2020-10-30 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 基于容器的应用管理方法和装置 |
CN113282377B (zh) * | 2021-07-23 | 2022-01-04 | 阿里云计算有限公司 | 无服务器架构下的代码加载方法、设备、系统及存储介质 |
-
2022
- 2022-03-08 CN CN202210228048.2A patent/CN114598706B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112214293A (zh) * | 2017-11-08 | 2021-01-12 | 华为技术有限公司 | 一种无服务器架构下业务部署的方法和函数管理平台 |
CN109062658A (zh) * | 2018-06-29 | 2018-12-21 | 优刻得科技股份有限公司 | 实现计算资源服务化的调度方法、装置、介质、设备及系统 |
CN111897658A (zh) * | 2020-08-26 | 2020-11-06 | 中国工商银行股份有限公司 | 一种基于函数计算节点的云计算系统扩容方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114598706A (zh) | 2022-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112199194B (zh) | 基于容器集群的资源调度方法、装置、设备和存储介质 | |
CN108337109B (zh) | 一种资源分配方法及装置和资源分配系统 | |
US9977689B2 (en) | Dynamic scaling of management infrastructure in virtual environments | |
US8510745B2 (en) | Dynamic application placement under service and memory constraints | |
US9703610B2 (en) | Extensible centralized dynamic resource distribution in a clustered data grid | |
CN108900626B (zh) | 一种云环境下数据存储方法、装置及系统 | |
CN105159775A (zh) | 基于负载均衡器的云计算数据中心的管理系统和管理方法 | |
CN113064712B (zh) | 基于云边环境的微服务优化部署控制方法、系统及集群 | |
CN110221920B (zh) | 部署方法、装置、存储介质及系统 | |
JP2015537307A (ja) | コンポーネント指向ハイブリッドクラウドオペレーティングシステムのアーキテクチャ及びその通信方法 | |
US20050005018A1 (en) | Method and apparatus for performing application virtualization | |
JP2005182796A (ja) | グリッド・システム資源の自律的制御のための装置、システム、および方法 | |
JP2012221273A (ja) | 動的にリソースを割り当てる方法、システム及びプログラム | |
CN103179048A (zh) | 云数据中心的主机QoS策略变换方法及系统 | |
CN110109756A (zh) | 一种网络靶场构建方法、系统及存储介质 | |
JP2007506157A (ja) | マルチノードシステムにおけるリソースの動的な割当の階層的管理 | |
CN110958311A (zh) | 一种基于yarn的共享集群弹性伸缩系统及方法 | |
CN109597674B (zh) | 一种共享虚拟资源池份额调度方法及系统 | |
CN112463395A (zh) | 一种资源分配方法、装置、设备及可读存储介质 | |
US11182189B2 (en) | Resource optimization for virtualization environments | |
JP5471292B2 (ja) | 仮想マシン移動制御プログラム,仮想マシン移動制御装置および仮想マシン移動制御方法 | |
CN111240824A (zh) | 一种cpu资源调度方法及电子设备 | |
CN104683480A (zh) | 一种基于应用的分布式计算方法 | |
CN114598706B (zh) | 基于Serverless函数的存储系统弹性伸缩方法 | |
CN110308991B (zh) | 一种基于随机任务的数据中心节能优化方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |