最近要转战AWS Cloud了。俗话说“兵马未动,粮草先行”,面对的第一份粮草是Lambda。说到Lambda,就不得不说Serverless架构了。这个也是最近特别火的话题。整理收集相关信息如下。
什么是Serverless?
Serverless把主机管理、操作系统管理、资源分配、扩容,甚至是应用逻辑的全部组件都外包出去,把它们看作某种形式的商品——厂商提供服务,我们掏钱购买(类似于水电煤)。
当我们浏览一个app的时候,需要用到浏览器,需要一个能够持续提供服务的server,需要存储设备存储我们的数据。基本上如果用户想运营自己的app,这些硬件设备必不可少,而且价格相对来说比较昂贵,对于企业来说是一个比较重的开支。而且设备不是一成不变的,也面临着升级换代的风险开支。后来有商家想到把分散的机器集中起来,提供服务。这样你把应用部署到我的机器上,由我来运维管理。这样企业将硬件这部分成本相对减少,通过购买服务来保障自己的应用能够被访问。再到后来,微服务/容器化,进一步加快了开发部署的流程,云厂商提供PASS、IASS服务,但是用户还需要关心内存和存储的配备。再往后就是现在的Serverless,所有的这些硬件消耗,用户完全不需要关心,只需要提供代码,然后等待返回结果就行。执行代码过程中用到的服务器、内存消耗、进程数等,用户都是无感知的。它与传统架构的不同之处在于,完全由第三方管理,由事件触发,存在于无状态(Stateless)、暂存(可能只存在于一次调用的过程中)计算容器内。Serverless真正做到了部署应用无需涉及基础设施的建设,自动构建、部署和启动服务。
Lambda
AWS Lambda就是serverless的一个具体应用FAAS(function as a service)。Lambda能让Dev不用思考任何服务器,也就是说,不用你处理服务器上的部署、服务器容量和服务器的扩展和失败容错,还有服务器上选择什么OS操作系统,语言的更新,日志等等问题。你的应用程序只需要和多个第三方的API或服务打交道,也可以自我创建一个无服务器的API。按次付费,价格相对来说很低廉。真正意义上做到了水电煤的服务适用场景。
Serverless适用的场景
- Serverless 公司业务有明显的波峰和波谷,采用Serverless可以很大程度上节约资金。党使用高峰期的时候自动扩容。
- 视频处理的后端系统,常见功能需求如下:视频转码、数据渲染、抽取数据、人脸识别等,这些均为通用计算任务,可由函数计算执行。
Serverless的缺点
- 不适合处理复杂的业务逻辑,它更适合调用云上的其他服务,粘合关键的产品。
- 排查问题困难,因为逻辑散落在各处。
- Serverless无法用于高并发应用,为每个请求启动一个进程开销太高,流量瞬间爆发容易导致超时。
- Serverless(无状态)导致调用之间不能共享状态让编写复杂程序变得极度困难。
- 业务拆分问题。
- 依赖第三方服务,基本上应用上了(上了贼船)就很难剥离下来。
网友评论