作为云计算的下一个迭代,Serverless 的出现,让开发者可以更关注于构建产品中的应用,而不需要管理和维护底层堆栈,且比传统云计算更为便宜。在对象存储技术方面,亚马逊云科技发布了其第一个存储服务Amazon S3就是无服务器架构的,如今已经过去了17年。

Amazon S3:十七年创新不断,灵活扩展安全可靠

2006年3月14日,亚马逊云科技发布了对象存储服务Amazon S3,它允许用户创建、罗列、删除桶(Bucket),自由上传和下载文件,用REST和SOAP的方式灵活访问数据。

如今的Amazon S3服务于数不清的用户。截止到2023年, Amazon S3上存放着280万亿个对象,平均每秒要响应1亿多个请求。为了保证数据的完整性,每秒需要执行40亿次校验计算。 

s3 amazon 用户跨namespace amazon s3采用什么架构_云原生

2023年3月14日是Amazon S3的17周年纪念日,为了纪念第一款云服务的诞生,亚马逊云科技将这一天称作Pi Day,每年都会举办一次线上活动。

s3 amazon 用户跨namespace amazon s3采用什么架构_Amazon_02

17年一路走来,Amazon S3创新不断,常看常新。作为最早的云服务产品,近几年来可圈可点的新内容反而更多。

比如,在上图中圈重点的有S3 Batch Replication、新的校验算法、S3多区域接入点故障切换控制等,图中没提到的,还有数不清的小的动态。

这些大大小小的更新,有的围绕Amazon S3本身,还有很多,都在帮用户打通迈向Serverless的高速路。

迈向Serverless,Amazon S3 阔步向前

①Amazon S3:Serverless应用的关键组件

在2023分布式存储高峰论坛上,亚马逊云科技解决方案架构师经理郭立介绍称,Amazon S3是Serverless应用程序环境的关键组件。并且,事件通知是Amazon S3的重要功能特性,Amazon S3每天都会向Serverless应用发送1310亿条事件通知。

s3 amazon 用户跨namespace amazon s3采用什么架构_serverless_03

其实,当一个对象被上传和删除时,都会快速对外发送通知。通知的目的地可以是Amazon SQS、Amazon SNS,也可以是Amazon Lambda。接到通知后,就可以执行具体的任务了。

比如,上传一个英文文档后,Amazon S3发出一个通知给到Amazon Lambda,Amazon Lambda调用Amazon Translate来做翻译,翻译完成后依次返回给Amazon S3。

三种云服务的配合之下,就能完成近实时的翻译工作。

如果翻译的工作量非常大,此时就需要额外借助消息队列Amazon SQS的力量了,将需要翻译的文件放到消息队列里逐个进行翻译,翻译完成的文件再逐个放回Amazon S3。

然而,并不是所有资料都需要翻译,比如,有的文档本来就是中文的,就完全不需要英译中了。至于是不是中文,这就需要进行一个条件判断了。

此时,用户可以借助Amazon StepFunctions来做判断,如果满足某条件就执行A,不满足条件就执行B。实际工作中,大型企业复杂的流程可以用Amazon Step Functions来做梳理。

当然,利用Amazon Step Functions来做梳理,就意味着用户的业务逻辑会和亚马逊云服务产生非常紧密的耦合,使得用户用非常少的代码完成业务流程的自动化。

对于大型企业来说,面对更大的业务量,更严肃的业务场景时,对代码水平要求更高。此时,用户定义的代码越少,更多地利用Serverless的功能,系统本身的健壮性就越强。

❷从Amazon S3迈向Serverless,已经越来越容易了

从Amazon S3开始,一步步用到Amazon Lambda、Amazon SQS以及Amazon StepFunctions,虽然都是Serverless服务,但放在一起也都会让架构变得越来越复杂。

为了简化Serverless架构,亚马逊云科技也准备了很多功能。比如,2019年,亚马逊云科技发布了Amazon EventBridge。

s3 amazon 用户跨namespace amazon s3采用什么架构_云原生_04

Amazon EventBridge是一种Serverless事件总线,它可以把来自包括Amazon S3在内的多个来源的通知,路由到包括Amazon Lambda以及Amazon SQS之类的目的地。

s3 amazon 用户跨namespace amazon s3采用什么架构_Amazon_05

如上图所见,当Amazon S3与Amazon EventBridge搭配使用,Amazon EventBridge连接通知的生产者和消费者,这会让无Serverless架构变得更简洁。

在足够简洁的架构的基础上,用户可以更轻松地定义业务代码。

很多朋友会注意到,上面提到的几个场景都是用户上传了一个对象到之后触发的操作。其实,一个对象的生命周期里,上传的操作只有一次,日常有大概率还要被调用很多次。

那么,在对象被频繁调用时要如何用Serverless来处理业务逻辑呢?

2021年3月,亚马逊云科技发布Amazon S3 Object Lambda,它解决的就是对象被Get、Head、List命令调用时如何触发Serverless进行业务处理的问题。

s3 amazon 用户跨namespace amazon s3采用什么架构_云原生_06

比如,一张图片以1080P的分辨率存在Amazon S3上,但应用需要的是720P分辨率。程序调用时,先由Amazon S3 Object Lambda转换分辨率,最后,将720P的图片返回给应用程序。

如此以来,Amazon S3 Object Lambda承担了一部分原来需要应用程序做的工作,也可以看做是延展了Amazon S3的功能。

可以说,Amazon S3 Object Lambda的出现,它能帮用户从Amazon S3迈向Serverless步骤变得更容易。

全面 Serverless 的时代已经到来。发展到今天,Amazon S3已经有丰富的功能,包括11个9的持久性、各种数据分层。作为一个有巨量用户和核心的服务,Amazon S3 也将在 Serverless 时代持续创新演进,支撑起更多的云计算场景,助力更多企业和用户加速创新增长。