2022年你还不会serverless?看看这篇保姆级教程(上) | 您所在的位置:网站首页 › 容器部署架构图片 › 2022年你还不会serverless?看看这篇保姆级教程(上) |
本篇主要介绍serverless架构优缺点应用场景 什么是Serverless![]() ![]() ![]() ![]() ![]() 整体架构十分简单明了, 用 FC 替代了 Web 服务器,但是换来的是免运维,弹性扩容,按需付费等一系列优点 目前,Serverless 的应用场景广泛,大部分传统业务均可以在 Serverless 云函数上完美支持 Serverless要解决什么前端和后端分离后,彼此独立,这样就导致前端需要关注一些后端关注的问题,如下 ![]() 作为一个前端,确实大多数人对于服务端的环境,部署基础设施等等东西并不了解。但是现在前端是独立的部署,前端必然面临这些东西。这就是serverless要解决的问题。 传统服务器架构 VS Serverless架构传统开发模式 ![]() 新型的serverless开发模式 ![]() 正常来说,用户开发 Server 端服务,常常面临开发效率,运维成本高,机器资源弹性伸缩等痛点,而使用 Serverless 架构可以很好的解决上述问题。下面是传统架构和 Serverless 架构的对比: 云函数计算是一个事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码,并提供日志查询,性能监控,报警等功能。借助于函数计算,您可以快速构建任何类型的应用和服务,无需管理和运维。![]() 优势 无运维:我们不需要购买服务器,直接可进行资源分配: 在 Serverless 架构中,你不用关心应用运行的资源(比如服务配置、磁盘大小)只提供一份代码就行。计费方式: 在Serverless 架构中,计费方式按实际使用量计费(比如函数调用次数、运 行时长),不按传统的执行代码所需的资源计费(比如固定 CPU)。计费粒度也精确到了毫 秒级,而不是传统的小时级别。个别云厂商推出了每个月的免费额度,比如腾讯云提供了每 个月 40 万 GBs 的资源使用额度和 100 万次调用次数的免费额度。中小企业的网站访问量不 是特别大的话完全可以免费使用![]() 不足 当然了 ServerLess 是很诱人,但却不是万能的,有些场景还是不适合的。 ServerLess 不仅仅是一门技术也是一种理念和微服务一样,很多老系统不能直接上 ServerLess,得相应的进行升级和拆解才能更好的适应 ServerLess,这是一个门槛。同时 ServerLess 针对开发语言的可定制性和可开放性,ServerLess 会选择处于稳定版的语言且更新具有一定的滞后性,特别是 Node.JS 这样的版本更新帝,最新稳定版是10,但是提供的却是8。同时如果对语言有底层的修改而无法通过 Plugin 实现同样也无法适应相关场景。不适合长时间的进行计算处理的场景,ServerLess 是产生计算后按时间计费的,适合那些触发类短时间计算的,如果有长时间进行计算的场景就不适合。Serverless 的技术特点事件驱动 云函数的运行,是由事件驱动起来的,在有事件到来时,云函数会启动运行Serverless 应用不会类似于原有的「监听 - 处理」类型的应用一直在线,而是按需启动事件的定义可以很丰富,一次 http 请求,一个文件上传,一次数据库条目修改,一条消息发送,都可以定义为事件![]() 单事件处理 ![]() 自动弹性伸缩 ![]() 无状态开发 ![]() Serverless 应用本质上是由一个个 FaaS 函数组成的,Serverless 应用的每一次运行,其实是单个或多个函数的运行,所以 Serverelss 的运行原理,本质上就是函数的运行原理 函数调用链路:事件驱动函数执行 对于 FaaS 函数来说,一方面可以通过事件来触发执行,另一方面也可以直接调用 API 来执行。FaaS 平台都提供了执行函数的 API。 ![]() 函数调用方式 :同步调用与异步调用 函数支持同步调用和异步调用,这正是 FaaS 函数的两种调用方式。同步调用指的是客户端发起调用后,需要等到函数执行完毕并得到执行结果。FaaS 平台收到同步调用后,会立即为函数分配运行环境并执行函数。![]() ![]() 函数生命周期:冷启动与热启动 在 FaaS 平台中,函数默认是不运行的,也不会分配任何资源。甚至 FaaS 中都不会保存函数代码。只有当 FaaS 接收到触发器的事件后,才会启动并运行函数。整个函数的运行过程可以分为四个阶段:下载代码、启动容器、初始化运行环境、运行代码![]() 当函数第一次执行时,会经过完整的四个步骤,前三个过程统称为“冷启动”,最后一步称为 “热启动”。 整个冷启动流程耗时可能达到百毫秒级别。函数运行完毕后,运行环境会保留一段时间,可能 2 ~ 5 分钟,这和具体云厂商有关。如果这段时间内函数需要再次执行,则 FaaS 平台就会使用上一次的运行环境,这就是“执行上下文重用”,函数的这个启动过程也叫“热启动”。“热启动” 的耗时就完全是启动函数的耗时了。当一段时间内没有请求时,函数运行环境就会被释放,直到下一次事件到来,再重新从冷启动开始初始化下面是一个函数的请求示意图,其中 “请求1” “请求3” 是冷启动,“请求2” 是热启动。 ![]() ![]() 发送通知 诸如 PUSH Notification、邮件通知接口、短信,这一类服务来说,他们都需要基础设施来搭建。并且,他们对实时性的要求相对没有那么高。即使在时间上晚来几秒钟,用户还是能接受的。在我们所见到的短信发送的例子里,一般都会假设用户能在 60 秒内收到短信。因此,在这种时间 1s 的误差,用户也不会恼火的。 轻量级 API Serverless 特别适合于,轻量级快速变化地 API。其实,我一直没有想到一个合适的例子。在我的假想里,一个 AutoSuggest 的 API 可能就是这样的 API,但是这种 API 在有些时候,往往会伴随着相当复杂的业务。于是,便想举一个 Featrue Toggle 的例子,尽管有一些不合适。但是,可能是最有价值的部分。 物联网 当我们谈及物联网的时候,我们会讨论事件触发、传输协议、海量数据(数据存储、数据分析)。而有了 Serverless,那么再多的数据,处理起来也是相当容易的一件事。对于一个物联网应用的服务端来说,系统需要收集来自各个地方的数据,并创建一个个 pipeline 来处理、过滤、转换这些数据,并将数据存储到数据库中。对于硬件开发人员来说,对接不同的硬件,本身就是一种挑战。而直接使用诸如 AWS IoT 这样国,可以在某种程度上,帮助我们更好地开发出写服务端连接的应用。 数据统计分析等 数据统计本身只需要很少的计算量,但是生成图表,则可以定期生成。在接收数据的时候,我们不需要考虑任何延时带来的问题。50~200 ms 的延时,并不会对我们的系统造成什么影响。 serverless的厂家链接地址 亚马逊 AWS Lambda (https://aws.amazon.com/cn/lambda)谷歌 Google Cloud Functions (https://cloud.google.com/functions)微软 Microsoft Azure (https://www.azure.cn/)腾讯云 云函数 SCF(Serverless Cloud Function) (https://cloud.tencent.com/product/scf)我们此次选择腾讯云的缘故 微信小程序的云开发就是基于腾讯云,选择腾讯云更方便和小程序对接腾讯云在 serverless 方面相比其他厂商支持更好一些腾讯云和 serverless 合作在腾讯云中集成了 serverless Framework用我们喜欢的框架开发 serverless 应用。也可以让我们快速部署老项目。腾讯云价格更便宜我是程序员小月,更多干货在公号「前端进阶之旅」 |
CopyRight 2018-2019 实验室设备网 版权所有 |