serverless 无服务器计算架构,是云计算时代的一种革命性架构模式, 可以看做下一代计算资源架构
serverless概念主要思想就是无需用户关注支撑应用服务的底层主机资源服务,因此用户在一定程度上不能设置后端地具体资源配置文件,所需要的资源数量由平台动态进行调度, 简单的说就是 ‘去基础架构’
传统架构里,需要事先申请资源进行部署,在需要扩容时再申请新的资源,serverless概念里,用户无需关注cpu,内存等资源,在用户开发完成应用程序后,运行在支持serverless平台上,由平台动态分配cpu内存等资源,进行智能扩容缩容,而平台通过使用量来进行计费, 用户就不需要关心资源使用问题,资源使用率等问题。
当然,serverless针对用户来说是资源透明的,并不代表没有服务器,只是服务器对于用户来说是透明的。 平台可以通过openstack, kubernetes等结合serverless框架实现
serverless 由于资源按需使用,动态调整的特点, 因此更加适合无状态的应用场景,计算场景,例如AI训练,数据压缩等等应用场景
平台, 例如: aws lambda, azure functions
实现框架: kubeless,openwhisk, fisssion, openfass等
目前serverless按照功能,提供给应用服务两个方面支持:
- fass 函数服务 , 提供一个或者多个函数的形式开发,运行,管理
- bass 后台服务, 通过将数据库,队列等提供出来,用户通过bass申请服务进行消费,不需要关系资源的具体配置,运维等
特点:
- 按需
- 事件驱动, 请求到达进行响应,加载
- 状态非持久化,状态不能被持久化,因为没有固定的后端资源
- 弹性伸缩
serverless与云计算: 云计算的发展推动了serverless的出现和发展,云计算可以说是serverless的基础
serverless与微服务: 都是为了解耦,但是微服务注重的是应用架构方面,serverless是为了基础架构与应用程序解耦,解决基础资源的利用率,使用瓶颈等问题
serverless与容器:容器技术,k8s,最小的单位为pod,容器,需要进行设置运行的数量, serverless则按需加载,动态扩容缩容。但是serverless与容器之间也有许多相似,比如:秒级运行,适合动态资源调度
目前serverless的实现许多框架,和工具都是使用容器进行,因为容器具有很好的弹性扩容性,部署快速简单。当然也可以使用vm。 需要做到将虚拟机,网络,存储,负载,监控等进行整合,提供一整套的机制,对外提供简单的调用方法,其他资源调度由平台进行分配
serverless是一种概念, 目前一些大的公有云平台提供了serverless,提供调用包,用户只需要编写程序使用对应调用包,即可使用对应资源, 但是由于serverless本身是一种概念,并没有明确的规范,因此,每个平台整合的会有一些差异,因此无法做到在不同云厂商之间进行服务的无缝迁移