Serverless使用Spot 低成本运行Job任务的示例分析
Serverless技术目前越来越受到开发者们的关注和使用,Spot实例也成为了当前Serverless异构计算平台下 且经济效益最高的特点之一。那么,本文将通过一个使用Serverless和Spot实例的示例来分析这种使用方式带来的具体收益和优势。
首先,什么是Spot实例呢?Spot实例是Amazon EC2实例的一种购买方式,根据当前市场对实例的需求和可用性情况,价格会有所浮动。通俗的说,就是如果有空闲的计算资源,那么使用Spot实例能够以远低于正常价格的价格使用这些资源,价格会因资源的市场行情而浮动。
那么Spot实例的优势又在哪里呢?通过使用Spot实例,可以节省约80%的成本,这得益于在运行Spot实例时可以削减开销、控制成本和最大化效率。此外,Spot实例的可靠性也可与Amazon EC2实例媲美,姑且可以认为同样强大。
但是,存在一个问题,Spot实例不是总是可用的。使用Spot实例时,必须明确应用到目标应用程序中,假设您使用的是某种大规模的分布式应用程序或DevOps流程,则需要确保应用程序被建立在无状态的计算机架构上,这样才能够在需要时快速启动和停止计算资源。所以,Spot可以提供一个大规模异构计算依赖的组件,用于在计算资源需求极高之时,能够满足需要。
举个例子,我们可以使用Serverless和Spot实例来运行一个简单的计算任务。在此例中,我们将使用AWS Lambda来定义一个函数,该函数将会被AWS Step Functions调用,而这个计算任务将在Spot实例中完成。
具体过程如下:
(1)使用AWS Lambda定义函数:这个Lambda函数将会启动一个Spot请求。我们可以定义这个函数来等待此Spot请求的结果,计算一些东西,并将结果返回回来。
(2)定义AWS Step Functions状态机:将使用AWS Step Functions来调用这个Lambda函数,并监控结果。如果结果显示正常之后,AWS Step Functions将运行第二个Lambda函数。这个Lambda函数将会通知我们任务完成,并将结果写入S3中。
(3)AWS IAM的部署任务:在开始运行之前,首先需要定义要使用的AWS Identity and Access Management(IAM)角色。这个角色将授予您关于AWS服务的特定许可权限。
(4)创建亚马逊机器映像(AMI)并定义启动配置参数:在此步骤中,我们将定义Spot实例的AMI和启动配置参数。可以灵活设置计算机的类型、数量和用途。
(5)启动AWS Elastic Compute Cloud(EC2)Spot请求:在此步骤中,我们将发出先前创建的Spot请求,AWS EC2服务会返回当前市场价格,然后处理实例的运行期间。
(6)运行计算任务:在上面的步骤中,AWS EC2服务会启动Spot实例并运行它。在这一步中,Spot实例将会计算结果,并将结果返回给AWS Lambda函数。
(7)将结果写入S3桶中:在AWS Lambda函数中定义,您将发送结果到S3桶中。
总结起来,使用Serverless和Spot实例运行计算任务可以节省成本并提高效率,这对于一些大规模计算任务非常有用。但是,需要明确的是,Spot实例的可用性较EC2实例低,需在使用前认真考虑,重要的业务需选择EC2方式。
