Serverless

1、介绍

是指依赖于第三方应用程序或服务来管理服务器端逻辑的应用程序。 此类应用程序是基于云的数据库(如Google Firebase)或身份验证服务。数据库

无服务器也意味着开发为事件触发的代码,而且在无状态计算容器中执行。 这种架构一般称为功能即服务(FaaS)。小程序

FaaS(Function as a service 函数做为一种服务) 本质上是一个小程序或函数,它执行由事件触发的小任务,而不像单个应用程序那样作不少事情。所以,在FaaS架构中,咱们将应用程序分解为小型,自包含的程序或功能,而不是在PaaS上运行并执行多种功能的单一应用程序。例如,API中的每一个端点均可以是一个单独的函数,咱们能够按需运行这些函数,而不是全时运行应用程序。服务器

2、Serverless的主要优势

开发者只须要专一于业务逻辑就能够了,开发效率更高。开发一个典型的服务器端项目,须要花不少时间处理依赖、线程、日志、发布和使用服务、部署及维护等相关的工做,基于Serverless架构则不须要操心这些工做。
不须要关注云主机、操做系统、网络等基础资源,Serverless框架还能够根据负载量自动水平扩展。
不须要架构。Serverless架构自己就是高可用、高扩展的架构,基本上不须要架构师的参与。
按需付费, 成本相对比较低。用户购买的ECS使用时间通常不到5成,可是为另外5成闲置时间付费了。Lambda按照运行的时间收费,成本会低不少。网络

3、Serverless的主要缺点

不适合处理复杂的业务逻辑,它更适合调用云上的其余服务,粘合关键的产品。以AWS Lambda例,咱们一般使用Lambda写一段逻辑将文件上传到S3,将请求的数据写入到DynamoDB或RDS数据库等一些相对简单的功能。
排查问题困难,由于逻辑散落在各处。
Serverless没法用于高并发应用,为每一个请求启动一个进程开销过高,流量瞬间爆发容易致使超时。例如双十一支付宝高峰期每秒处理的交易数为8.59万笔,若是使用Serverless架构,意味着咱们的系统内每秒有8.59万个进程被建立又被销毁,这是难以负担的开销。
Serverless调用之间不能共享状态让编写复杂程序变得极度困难。无状态是互连网应用追求的目标,例如知足“12要素”的应用。但Serverless将无状态进行的更加完全,在不一样的调用之间没法共享内存状态,例如使用hashmap。咱们的AI应用中统计已处理图片总数的全局计数器在传统架构中只是一个全局变量,但在Serverless架构中它变成存储在内存数据库(Redis)中的一条记录,更新成本、保证原子性等因素让咱们的编码变得数倍复杂。对于大多云原生的互联网应用来讲,这种完全的无状态架构是一个巨大的挑战,而对于动辄有几十万、上百万行代码的、充满了状态的企业应用来讲,Serverless的无状态改造几乎是一个没法完成的任务。
业务拆分问题。如何将业务拆分红成百上千个运行在独立进程、运行时间受限的函数是巨大的挑战。而是否须要如此细粒度的拆分是须要回答的第一个问题。有些问题或许变成无解难题又或成本极高,例如分布式数据库事务。
厂商锁定。云计算是赢者通吃的行业,大而全的云厂商优点巨大,Serverless加重了这种趋势。之前用户还须要本身写不少服务器端的逻辑,迁移的时候,把服务器端代码从新部署一下。采用Serverless架构以后,代码都是各个平台的Lambda代码片断,无法迁移。从客户的角度来看,是不但愿本身被某家云厂商所绑架的。因此云计算行业须要作不少标准化的工做,方便用户无缝在各类云之间迁移。架构

对已存在的项目迁移困难。将现有的复杂的单体式应用进行如此细粒度的拆分须要极高的成本。并发

4、Microservice与Serverless的适用场景

Microservice适合构建复杂的应用。好比:构造一个分布式数据库。框架

Serverless 适合构建比较简单的应用,好比上传一张图片、对一段音频/视频进行编解码、对IOT设备的请求返回一小段数据等。

less

相关文章
相关标签/搜索