赞
踩
Serverless是一种架构理念,其核心思想是将提供服务资源的基础设施抽象成各种服务,以API接口的方式供用户按需调用,真正做到按需伸缩
、按使用收费
。基于这种架构能构建出多种应用场景,适用于各行各业。只要是对轻计算
、高弹性
、无状态
等场景有诉求,您都可以通过本文来熟悉一些基础概念,并从相关场景中获得启发。
Serverless是指构建和运行不需要服务器管理的应用程序。它描述了一种更细粒度的部署模型,即将应用程序打包为一个或多个功能,上传到平台,然后执行、扩展和计费,以响应当时确切的需求。
Serverless所谓的无服务器
并不是没有服务器
,而是说Serverless的用户不再需要在服务器配置、维护、更新、扩展和容量规划上花费时间和资源,可以将更多的精力放到业务逻辑本身,至于服务器,则把更专业的事情交给更专业的人去做,即由云厂商来提供统一的运维。
虽然serverless计算广泛使用,但它仍然相对较新。通常,当工作负载为以下情况时,应将serverless方法视为首选:
关于Serverless架构的演进,网上比较流行用一张人类形态发展史图进行说明。从爬行猿人到蹲着的类猿人,再到直立人类,最后到使用工具的新兴人类。
人类的每一次进化都伴随着生产效率的提升。同理,整个IT计算的发展历程,也是一个逐步提高生产效率的历程,具体演进图如下所示。
在实际生产中,Serverless架构通常都是FaaS与BaaS的结合,并且具备弹性伸缩和按量付费的特性。
如图所示,当开发者想要开发一个项目的时候,通常只需要根据FaaS提供商所提供的Runtime,选择一个熟悉的编程语言,然后进行项目开发、测试(图中步骤1);
完成之后将代码上传到FaaS平台(图中步骤2);
上传完成之后,只需要通过API/SDK(图中步骤3)或者一些云端的事件源(图中步骤3)触发上传到FaaS平台的函数,FaaS平台就会根据触发的并发度等弹性执行对应的函数(图中步骤4);
最后用户可以根据实际资源使用量进行按量付费(图中步骤5)。
定制图片
网店店家进行商品图片维护时,需要根据商品陈列位置,将图片动态切割成不同尺寸,或者打上不同水印。当店家把图片上传到对象存储 OSS上,会通过函数计算上定制的trigger来触发函数计算。根据计算规则,生成不同尺寸的图片,满足在线商品陈列需求,整个过程无需再搭建额外服务器,也无需网站美工干预
固定时间触发
事件触发固定时间触发,例如在夜间或者服务空闲时间来处理繁忙时候的交易数据,或者运行批量数据,来生成数据报表,通过Serverless方式,不用再额外购买利用率并不高的处理资源
弹性扩展应对突发流量
移动互联网应用经常会面对突发流量场景。例如:移动应用的通常流量情况是 QPS 20,但每隔 5 分钟会有一个持续 10s 的 QPS 200 流量(10 倍于通常流量)。传统架构下,企业必须扩展 QPS 200 的硬件能力来应对业务高峰,即使高峰时间仅占整个运行时间的4%。在Serverless架构下,您可以利用弹性扩展特性,快速构建新的计算能力来满足当前需求,当业务高峰后,资源能够自动释放,有效节省成本。
转码和流量扩容
视频直播某次专场活动,由于无法预估会有多少点播的观众视频接入,把转码和流量扩容这部分内容通过Function来处理,无需考虑并发和流量扩容。
由于安全审计问题,您需要从OSS(多个地域)过去一年的数据(1 个小时一个文件)中找出特定关键字访问的日志,同时做聚合运算(计算出总值)。如果使用阿里云函数计算,您将高峰期每 2 小时的访问日志,或者低谷期每 4 小时的访问日志交给一个计算函数处理,并将处理结果存到RDS中。使用一个函数分派数据给另一个函数,使其执行成千上万个相同的实例。
这样会同时运行近千个计算函数(24 x 365 / 10),在不到一分钟的时间内完成整个工作。同样的事情交给ECS+计算脚本来做计算,单单为这些instance配置网络就让人头疼(不同地域无法走内网下载OSS文件):instance的数量可能已经超出了子网中剩余IP地址的数量(比如,您的VPC使用了24位掩码)。
视频应用、社交应用等场景下,用户上传的图片、音视频往往总量大、频率高,对处理系统的实时性和并发能力都有较高的要求。例如,对于用户上传的图片,可以使用多个函数对其分别处理,包括图片的压缩、格式转换、鉴黄鉴恐等,以满足不同场景下的需求,如下图所示。
通常要对大数据进行处理,需要搭建Hadoop或Spark等相关大数据的框架,同时要有一个处理数据的集群。通过Serverless技术,只需要将获得的数据不断存储到对象存储,并且通过对象存储相关触发器触发数据拆分函数进行相关数据或任务的拆分,然后再调用相关处理函数,处理完成之后,存储到云数据库中。
函数计算近乎无限扩容的能力可以使用户轻松地进行大容量数据的计算。利用Serverless架构可以对源数据并发执行多个mapper和reducer函数,在短时间内完成工作,整个流程可以简化为如下图所示。相比传统的工作方式,使用Serverless架构更能避免资源的闲置浪费,从而节省成本。
基于Serverless架构所支持的丰富的事件源和事件触发机制,可以通过几行代码和简单的配置对数据进行实时处理,例如对对象存储压缩包进行解压、对日志或数据库中的数据进行清洗、对MNS消息进行自定义消费等,如图1-26所示。
AI模型完成训练后,在对外提供推理服务时,可以使用Serverless架构将数据模型包装在调用函数中,在实际用户请求到达时再运行代码。
相对于传统的推理预测,这样做的好处是,无论是函数模块、后端的GPU服务器,还是对接的其他相关的机器学习服务,都可以按量付费以及自动伸缩,从而在保证性能的同时确保服务的稳定,如下图所示。
目前很多厂商都推出了智能音箱产品。用户对智能音箱说话,智能音箱通过互联网将这句话传递给后端服务,然后得到反馈结果并返回给用户。
通过Serverless架构,可以将API网关、云函数以及数据库产品进行结合来替代传统的服务器或者虚拟机等。这样一方面可以确保资源的按量付费,只有在使用的时候,函数部分才会计费,另一方面当用户量增加之后,通过Serverless实现的智能音箱系统的后端也会进行弹性伸缩,可以保证用户侧的服务稳定。
另外,对其中某个功能进行维护相当于对单个函数进行维护,并不会对主流程产生额外风险,相对来说更安全、更稳定。处理流程示例,如下图所示。
Serverless架构和云厂商所提供的其他云产品进行结合,开发者能够构建可弹性扩展的移动或Web应用程序,轻松创建丰富的无服务器后端,而且这些程序可在多个数据中心高可用运行,无须在可扩展性、备份冗余方面执行任何管理工作。Web应用后端处理示例如下图所示。
在视频应用、社交应用等场景下,用户会上传一些视频,通常上传的视频会进行一些转码,包括转换为不同的清晰度。
Serverless技术与对象存储相关产品组合后,可利用对象存储相关触发器,即上传者将视频上传到对象存储中,触发Serverless架构的计算平台(FaaS平台)对其进行处理,处理之后将其重新存储到对象存储中,这个时候其他用户就可以选择编码后的视频进行播放,还可以选择不同的清晰度,如下图所示。
综上所述,Serverless架构的典型应用场景更多是由Serverless架构的特点决定的。当然,随着时间的不断推移,Serverless架构也在不断演进,特点会更加突出,劣势会被弥补,适合的场景也会更丰富。
阿里云-Serverless应用场景
Tencent Serverless 简介
什么是Serverless?有哪些应用?终于有人讲明白了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。