摘要: Serverless概念是近年来特别火的一个技术概念,基于这种架构能构建出不少应用场景,适合各行各业,只要对轻计算、高弹性、无状态等场景有诉求的用户均可以经过本文来普及一些基础概念,看看这些场景是否对用户有一些指导意义。算法
点此查看原文:http://click.aliyun.com/m/40926/后端
Serverless概念是近年来特别火的一个技术概念。基于这种架构能构建出不少应用场景,适用于各行各业。只要是对轻计算、高弹性、无状态等场景有诉求,您均可以经过本文来熟悉一些基础概念,并从相关场景中得到启发。安全
关于Serverless架构的前世此生,网上比较流行一张描述人类形态发展史的网图。从爬行猿人到蹲着的类猿人,再到直立人类,最后到使用工具的新兴人类。从四只脚爬行到直立行走,释放了双手,从释放双手到开始使用工具。服务器
人类的进化每一次都伴随着生产效率的提高。同理,在整个IT计算的发展里程,也是逐步提升生产效率的里程,具体演进图以下所示:网络
从大型物理机到经过虚拟化技术把物理机虚拟成单个的VM资源,从虚拟化集群到把集群搬到云计算上只作简单运维,再到把每个VM按照运行空间最小化切分红更细的Docker容器,再从Doceker容器变成干脆不用管理任何运行环境的Serverless服务,即仅仅须要编写核心代码便可。架构
代际的技术变革都是把资源切分得更细致,让运行效率变得更高,让硬件软件维护变得更加简单。IT技术架构的演进主要有如下几个特色:并发
一、硬件资源使用颗粒度变小框架
二、资源利用率愈来愈高less
三、运维工做逐步减小运维
Serverless架构主要有如下特色:
一、实现了细粒度的计算资源分配。
二、不须要预先分配资源。
三、具有真正意义上的高度扩容和弹性。
四、按需使用,按需计费。
根据Serverless的这些通用特色,概括出下面几种典型使用场景,供你们参考。
事件请求场景
定制图片
网店中的商品图片维护,根据商品陈列位置,要求须要动态切割成不一样尺寸图片,或者打上不一样水印,当店家把图片上传到 阿里云OSS上,会经过函数计算上定制的trigger来触发函数计算。根据计算规则,生成不一样尺寸的图片,知足电商陈列使用,整个过程无需再搭建额外服务器,也无需网站美工干预。
物联网中的低频请求
物联网行业中,因为物联网设备传输数据量小,且每每是固定时间间隔进行数据传输,所以常常涉及低频请求场景。
例如:物联网应用程序每分钟仅运行一次,每次运行50ms,这意味着CPU的使用率为0.1%/小时,这也意味着其实有1000个相同的应用能够共享计算资源。而Serverless架构下,用户能够购买每分钟100ms的资源来知足计算需求,经过这种方式就可以有效解决效率问题,下降使用成本。
定制事件
用户注册时发邮件验证邮箱地址,一样经过定制的事件来触发后续的注册流程,而无需再配置额外的应用无服务器来处理后续的请求。
固定时间触发
事件触发固定时间触发,例如在夜间或者服务空闲时间来处理繁忙时候的交易数据,或者运行批量数据,来生成数据报表,经过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位掩码)。
下面结合阿里云的函数计算产品来说解各个应用场景中架构以及如何解决的场景中的痛点。阿里云的函数计算是基于Serverless这种架构实现的一个全托管产品,用户只须要上传核心代码到函数计算,就能够经过事件源或者SDK&API来运行代码。函数计算会准备好运行环境,并根据请求峰值来动态扩容运行环境,函数计算是按照执行时间来计费,请求处理完成后,计费中止,对于有业务请求有明显高峰和低谷的应用来讲,相对节省成本。
下图是函数计算的一个开发者试用操做流程:
步骤1:开发者编写代码,目前支持的语言Java、NodeJS、Python等语言。
步骤2:把代码上传到函数计算上,上传的方式有经过API或者SDK上传,也能够经过控制台页面上传上传,还能够经过命令行工具Fcli上传。
步骤3:经过API&SDK来触发函数计算执行,一样也能够经过云产品的事件源来触发函数计算执行。
步骤4:函数计算在执行过程当中,会根据用户请请求量动态扩容函数计算来保证请求峰值的执行,这个过程对用户是透明无感知的。
步骤5:函数执行结束后,能够经过帐单来查看执行费用,根据函数的实际执行时间按量计费,收费粒度精确到100ms。
讲解完上面的流程后,下面会详细讲解3个Serverless的应用场景,经过案例分享能让您对Serverless这种架构有更清晰的认识。
事件触发计算能力
场景描述:用户经过手机终端,Web应用,或者PC工具把各类文件包括图片、视频以及文本等上传到OSS(对象存储,下同)后,利用OSS的PutObject的事件能够触发函数计算对上传后的文件进行处理,目前比较典型的场景当用户把视频文件上传到OSS后,触发函数计算把对象的Meta信息获取并传输给核心算法库,核心算法库根据算法把相应的视频文件推送CDN源站,达到特定视频热加载的处理。另一个场景,视频文件上传到OSS后也同时触发函数计算同步作多转码率的处理,并把处理后的视频文件存储到OSS中,完成轻量的数据处理。
在多媒体的处理场景中,常常会碰到海量文件上传到OSS后,还须要对文件进行进一步的加工,例如加水印、转码率、获取文件属性等操做,这个场景中,用户在处理的时候会遇到如下须要解决的技术难点:
一、 如何接收文件上传后的动做事件,一般的作法是定制消息通道来接收OSS事件通知,搭建一个运行环境,并编写相关的代码来处理事件通知。
二、如何高效的处理完海量上传的文件。
三、如何无缝的把多个云产品链接起来。
经过函数计算能比较方便解决以上几个技术难点,首先函数计算能够设置OSS的触发器来接收事件通知,在函数计算中编写业务代码来处理文件,并经过内网把文件传输到OSS中,整个流程简单易用可扩展。能够把核心代码部署到函数计算中,经过函数计算来并发处理事件通知。函数计算目前打通了多款产品的内部交互,经过控制台简单配置就能够高效的解决产品间链接问题。
事件触发场景常规作法:
一、设置消息通道接收事件,并编写业务代码。
二、购买服务器资源作后端数据处理。
三、设计一套多并发框架完成业务上传文件峰值的处理。
四、开通多个产品,并调用SDK代码来完成业务交互。
函数计算解法:
一、在控制台上配置事件源通知,编写业务代码。
二、代码写到函数计算里,不须要管理软硬件环境。
三、 业务高峰期函数计算会动态伸缩,无需管理。
四、内置打通多款产品,简单配置就能够无缝对接。