无服务器场景(serverless)的容错怎么做?我们的设计

本文探讨了无服务器架构(FaaS)中的容错问题,指出默认情况下,FaaS系统可能导致部分执行的问题。为解决此问题,文章介绍了名为AFT的系统,它提供原子性保证,确保在FaaS层和存储层之间进行原子化事务处理,以防止断裂读和写-写冲突。AFT已在DynamoDB、S3和Redis等存储后端实现,并展示了良好的扩展性和性能。
摘要由CSDN通过智能技术生成

无服务器架构和FaaS(Function-as-a-service 函数即服务)近年来越来越受欢迎,这要归功于易用性、自动伸缩和按需付费的特性。然而,FaaS 基础设施中缺少应用程序的容错能力。

把坑留给码农?

默认情况下,AWS Lambda 或 Google Cloud Functions 等 FaaS 系统需要开发者自己考虑执行失败的情况。云服务的策略是:无论是应用程序自身错误还是基础设施故障,一旦函数执行失败就执行重试。这意味着函数可能会运行多次。

并且更可怕还有,你的业务代码也可能会运行 0.5 次,或者 3.2 次……这是怎么回事?

这个糟糕问题的原因是,大多数 FaaS 系统提供的能力不能保证资源层(如数据库或文件等)在执行失败后被清理。

在失败和重试的过程中,修改共享状态的应用程序会在不知不觉修改部分结果。如果一个请求将更新两个键 k 和 l,但函数在两次更新之间崩溃,那么现在客户端将看到较新版本的 k 和较旧版本的 l。

这就是云平台 FaaS 的现状。

FaaS 的无痛容错:原子性

为了避免这种类型的异常,开发人员需要一个简单的保证,那就是原子性:要么一个请求的所有操作全部成功,要么全部失败。传统做法中,原子性是由强一致性(事务式)存储引擎来保证的,但这些系统有众所周知的扩展和性能问题。如何才能让 FaaS 执行保证原子性?

为此,我们构建了一个名为 AFT(Atomicity for Fault Tolerance)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值