天极大咖秀

登录 | 申请注册

从Amazon S3到Serverless,一步之遥

于洪涛 2023-03-20 阅读: 10,723 次

云数智的大趋势下,数据量爆炸式增长,非结构化数据的占比逐渐增加,对象存储技术在数据存储市场中一路走高、风生水起。Amazon Simple Storage Service (Amazon S3)服务的发布,正式将对象存储作为一项云存储服务,引入云计算领域,从此开启了对象存储的黄金时代。

现在,Amazon S3 几乎成为对象存储的事实标准,各大厂商基本都会兼容 Amazon S3。

 

17年常变常新,打通迈向 Serverless 的高速路

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

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

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

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

比如,在上图中圈重点的有S3 Batch Replication、新的校验算法、S3多区域接入点故障切换控制等,图中没提到的,还有数不清的小的动态。这些大大小小的更新,有的围绕Amazon S3本身,还有很多,都在帮用户打通迈向Serverless的高速路。

 

配套服务齐全,不止于对象存储

将Amazon S3视为一种存储服务来用,它可以简约到有些简陋。因为,S3为用户屏蔽了背后的复杂性,比如,安全和权限管理,持久性设计,成本优化,访问性能优化等等诸多方面。

然而,使用Amazon S3的用户,所能获得的价值远不止是一套对象存储。

  • 用了Amazon S3,用户享受到的是不断缩减成本的预期。比如,Amazon S3的存储层有很多,单单是智能分层技术已为用户节省了10亿美元;
  • 用了Amazon S3,用户能基于它构建数据湖,利用大数据和机器学习技术产出价值。据了解,Amazon S3已支撑了数十万的数据湖,它联通了数据价值;
  • 用了Amazon S3,用户能便捷地享受到Serverless应用生态、云原生技术架构的优势,从而更好地降本增效,更灵活地满足业务需求;

曾有分析人士认为,亚马逊云科技产品间的融合程度非常高,每一个新服务发布的时候,与很多原有服务都能直接关联互通。Amazon S3就好像是配套基础设施完善的居民楼,当住户轻松享受到购物、医疗、教育、交通、水、电等便利条件时,一套住宅能为用户带来的就不只是居住价值,而是更好的生活。

对于Amazon S3来说,Serverless应用就是非常重要的配套服务之一。

 

不断进化,成为Serverless应用的关键组件

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

看到这里就应该意识到,Amazon S3的事件通知非常重要。

其实,当一个对象被上传和删除时,都会快速对外发送通知。通知的目的地可以是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。3

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

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

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

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

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

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

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

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

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

Amazon S3 始终秉承“DAY 1”理念,从没停止创新的步伐,现在也正全面拥抱 Serverless 时代,创新出更多像 Amazon S3 Object Lambda 的Serverless服务,高效稳定地处理大量业务,提升整套业务系统的性能和稳定性,赋能企业业务创新,加速增长。

0

于洪涛
科技智库领域优质创作者

特别声明:文章版权归原作者所有,文章内容为作者个人观点,不代表大咖秀专栏的立场,转载请联系原作者获取授权。(有任何疑问都请联系wemedia@yesky.com)