什么是Serverless
什么是Serverless?
在以前,我们构建和开发web应用都是通过我们自己控制的服务端(可以假设在阿里云或者AWS也可以是你公司内部)来响应HTTP请求。但是,我们需要自己去维护这个服务端来保持服务端一直是可以接受HTTP请求的。当然还有其他一些问题:
- 很多安全补丁的更新需要我们自己维护
- 当我们项目规模变大的时候,我们也需要加大我们服务端的承载能力(加内存,加cpu,加机器),当项目规模下去的时候,我们依然需要减少我们服务器的支出。
对于一些小公司或者个人开发者来说,这些操作无所谓。但是对于大公司来说,这些都是基础设施组来进行维护的,但是不管怎么说,基础设施组也是人,他们响应需要时间,会拖慢开发们的进度的。因此呢,就整出了个serverless的玩意来解决这些问题。
像AWS,Azure,Google Cloud,阿里云都提供了一种服务,叫Serverless Coumputing。Serverless Coumputing 是一种执行模式,服务提供商们为你所提供的代码分配合理的资源来跑这些代码(不需要你对服务器做任何事情,一下子是不是明白了)。这种代码一般就是一个函数,所以Serverless又称为“Function as a Service” 简称"FaaS"。
因为吧,每次运行都是函数,这里有些东西就需要提一下了:
微服务
我们现在的项目,那都是一整个的,如果要使用Serverless,咱们得把项目的架构变一下,变成以多个函数的形式进行组成。相当于把一个大项目,拆成一堆微项目。
无状态函数
因为你提供的函数都是需要运行在安全无状态的容器里的,意味着你不能将代码运行在有其他执行环境影响的服务里面,那么也就是说你的函数是要无状态的,那样就不会影响到下面运行的函数了。
冷启动
因为每次你提供的函数的运行都是在一个资源合适的容器里面跑的,这个容器需要根据你函数代码所需的资源进行分配启动,那么这里就有延迟了,怎么做才能降低这个延迟呢。因为这个被启动使用的容器不会因为你函数运行的结束就立刻关闭的,如果在一定时间内你又运行一次一个函数,他不需要重新冷启动,那么换个名字,这叫热启动。显然,热启动快啊!
参考资料:
- https://serverless-stack.com/chapters/what-is-serverless.html
- https://aws.amazon.com/serverless/
- https://en.wikipedia.org/wiki/Serverless_computing
- https://www.cloudflare.com/learning/serverless/what-is-serverless/
- https://www.alibabacloud.com/zh/knowledge/what-is-serverless
- https://serverless-stack.com/chapters/what-is-aws-lambda.html

浙公网安备 33010602011771号