背景
从部署物理机到虚拟机过程中,云计算通过虚拟化的方式对算力资源进行了更高效的分配。为了更细粒度的分配,容器在云计算发展浪潮中诞生了。那有没有可能再进一步,将一次业务执行作为单元进行算力分配呢?每当执行的时候才分配一次资源,否则不消耗。
答案就是Serverless。
什么是Serverless
Serverless(无服务器架构)并不是严格意义上的无服务器,因为无论如何抽象或者封装底层设备,程序总是要有一个服务器作为物理载体才能运行。Serverless的概念更加强调计算资源的自由扩展,无需手动人工配置。
Serverless是由事件驱动的全托管计算服务。用户无需管理服务器等基础设施,只需要编写代码和选择触发器(比如RPC请求,定时器等)并上传。其余的工作(如实例选择,扩缩容、监控、日志、容灾、部署等)全部由Serverless系统托管。
Serverless通常包含了两个领域BaaS和FaaS,其中BaaS可以理解成特定类型的托管服务,例如数据库服务、对象存储服务、日志服务等等,而FaaS即为云函数计算服务,提供核心的逻辑处理。
Serverless实践
基于Kubernetes的Serverlessframework有很多,例如Knative、OpenFaaS、OpenWhisk等等,这里以OpenFaaS为例。
OpenFaaS部署
OpenFaaS可以通过arkade、helm3以及manifestsyaml等方式部署,部署后共有以下组件:
为了方便后续函数管理,这里也一并部署了faas-cli,并配置了GatewayService暴露的入口