Serverless概念是近年来特别火的一个技术概念。基于这种架构能构建出很多应用场景,适用于各行各业。只要是对轻计算、高弹性、无状态等场景有诉求,您都可以通过本文来熟悉一些基础概念,并从相关场景中获得启发。
关于Serverless架构的前世今生,网上比较流行一张描述人类形态发展史的网图。从爬行猿人到蹲着的类猿人,再到直立人类,最后到使用工具的新兴人类。从四只脚爬行到直立行走,释放了双手,从释放双手到开始使用工具。
人类的进化每一次都伴随着生产效率的提升。同理,在整个IT计算的发展里程,也是逐步提高生产效率的里程,具体演进图如下所示:
从大型物理机到通过虚拟化技术把物理机虚拟成单个的VM资源,从虚拟化集群到把集群搬到云计算上只做简单运维,再到把每一个VM按照运行空间最小化切分成更细的Docker容器,再从Doceker容器变成干脆不用管理任何运行环境的Serverless服务,即仅仅需要编写核心代码即可。
代际的技术变革都是把资源切分得更细致,让运行效率变得更高,让硬件软件维护变得更加简单。IT技术架构的演进主要有以下几个特点:
1、硬件资源使用颗粒度变小
2、资源利用率越来越高
3、运维工作逐步减少
Serverless架构主要有以下特点:
1、实现了细粒度的计算资源分配。
2、不需要预先分配资源。
3、具备真正意义上的高度扩容和弹性。
4、按需使用,按需计费。
根据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后,还需要对文件进行进一步的加工,例如加水印、转码率、获取文件属性等操作,这个场景中,用户在处理的时候会遇到以下需要解决的技术难点:
1、 如何接收文件上传后的动作事件,通常的做法是定制消息通道来接收OSS事件通知,搭建一个运行环境,并编写相关的代码来处理事件通知。
2、如何高效的处理完海量上传的文件。
3、如何无缝的把多个云产品连接起来。
通过函数计算能比较方便解决以上几个技术难点,首先函数计算可以设置OSS的触发器来接收事件通知,在函数计算中编写业务代码来处理文件,并通过内网把文件传输到OSS中,整个流程简单易用可扩展。可以把核心代码部署到函数计算中,通过函数计算来并发处理事件通知。函数计算目前打通了多款产品的内部交互,通过控制台简单配置就可以高效的解决产品间连接问题。
事件触发场景常规做法:
1、设置消息通道接收事件,并编写业务代码。
2、购买服务器资源做后端数据处理。
3、设计一套多并发框架完成业务上传文件峰值的处理。
4、开通多个产品,并调用SDK代码来完成业务交互。
函数计算解法:
1、在控制台上配置事件源通知,编写业务代码。
2、代码写到函数计算里,不需要管理软硬件环境。
3、 业务高峰期函数计算会动态伸缩,无需管理。
4、内置打通多款产品,简单配置就可以无缝对接。
相关推荐
在这个"利用Serverless架构下函数计算实现网站文件处理的最佳实践"的资源中,我们将深入探讨如何在无服务器环境下,通过函数计算高效地处理网站文件。 一、Serverless架构基础 1. 定义:Serverless并不意味着完全...
阿里云Serverless工作流解决方案是基于Serverless架构的技术创新,它可以帮助用户快速构建、自动化和优化工作流程,提高业务效率和降低成本。本解决方案可以应用于多种业务场景,例如音视频处理、数据处理流水线、...
Serverless架构的应用场景和最佳实践 Serverless架构是指一种软件架构模式,它将应用程序解耦合为多个小型、独立的组件,每个组件都可以独立地扩展和部署。这种架构模式可以提高应用程序的灵活性、可扩展性和可维护...
基于阿里云Serverless集群+云原生API网关+阿里云百炼大模型平台的云原生应用开发.pdf
Serverless 架构升级是指在 Serverless 环境下,使用函数应用架构来构建应用程序的过程。这项技术可以帮助开发者快速构建和部署应用程序,同时也可以提高应用程序的可扩展性和灵活性。 Serverless 架构升级的优势有...
Java是一种广泛使用的面向对象的编程语言,而NodeJS是一个基于Chrome V8引擎的JavaScript运行时环境,两者在serverless架构中的使用意味着阿里巴巴在开发中支持多种编程语言,从而允许技术团队根据不同的需求选择最...
阿里云云原生 Serverless 案例集是基于云原生架构的 Serverless 计算服务,提供了全托管的 Serverless 计算资源和丰富的事件触发机制。该服务支持当前主流的编程语言和自定义运行时,能够满足不同场景下的需求。 ...
首先,我们要了解“腾讯云-云函数”(Tencent Cloud Function)这一服务,它是一种无服务器计算(Serverless)平台,允许开发者在无需管理底层基础设施的情况下运行代码。这种模式可以显著降低运维成本,提高开发...
2021阿里云云原生 Serverless 技术实践营演讲PPT汇总,共5份。 此次活动分别从技术、产品、架构和开发者工具的视角围绕 Serverless 的发展趋势、落地实践与参会者零距离分享最佳实践心得,全程弹幕互动答疑,和到场...
在同程旅游公司的实践中,Serverless 架构被广泛应用于各种业务场景中,如用户注册、订单处理、支付结算等。Serverless 架构可以帮助同程旅游公司降低系统的维护和管理成本,提高系统的可扩展性和灵活性。 微服务...
阿里云原生技术+云原生架构+云原生实践等资料合集,13份。 2021阿里巴巴DevOps实践手册 2021云原生开发者洞察白皮书 阿里巴巴-云原生大规模应用落地指南 阿里巴巴经济体-云原生实践 阿里巴巴云原生架构白皮书 阿里...
Serverless架构是一种新兴的云计算模型,它将传统的服务器管理和运维工作交给云服务提供商,开发者只需关注应用程序的逻辑,而无需关心底层基础设施。AWS Lambda是亚马逊Web服务(AWS)提供的一个核心Serverless计算...
Serverless 架构是当前非常热门的一种架构形式,它可以将应用程序分解成多个小的函数,每个函数都可以独立地执行和维护,从而提高系统的灵活性和可维护性。Serverless 架构可以解决微服务架构的一些问题,例如减少...
这里的"fc-java-sdk"正是阿里云提供的Serverless函数计算Java SDK,它为开发者提供了在Java中构建、部署和管理Serverless应用的能力。 使用阿里云FC(Function Compute)Java SDK,开发者可以实现以下关键功能: 1...
云原生架构的定义:云原生架构是一种基于云计算的软件架构模式,通过容器、微服务、Serverless 等技术,实现高效、可扩展、灵活的 IT 架构。 云原生架构的主要技术包括: 1. 容器技术:使用 Docker 等容器技术,...
阿里云Serverless工作流解决方案是一种高效、弹性且自动化的服务,它针对各种IT场景提供了强大的支持,包括音视频处理、数据处理流水线、订单审批流程、自动化运维和机器学习流水线。这一解决方案的核心优势在于其...
《Serverless架构:无服务器应用与AWS Lambda》的作者Peter Sbarski 是最早完全拥抱无服务器架构的开发者之一,他将自己在应用无服务器架构中获得的宝贵经验总结成本书,呈现给广大的读者。更难能可贵的是,全书贯穿...
阿里云Serverless解决方案的核心在于帮助企业或开发者克服传统软件研发与运维中的挑战,通过引入无服务器架构,实现更高效、弹性的资源管理和应用部署。以下是详细的知识点解释: 1. **现代软件研发问题与进化**: ...
标题中提及的“NBF:新零售服务开放的Serverless架构与深度实践”指的是冯微峰作为阿里巴巴供应链中台基础技术团队负责人,在2016年开始基于盒马的业务场景设计的新零售服务开放框架NBF(New-Retail Business ...
Knative 是一个基于 Kubernetes 的 Serverless 框架,旨在提供一个抽象的 Serverless 应用平台。Knative Deployment 是 Knative 的核心组件之一,负责管理 Serverless 应用的生命期。Knative Pod 是 Knative ...