文章目录
-
-
- 概述
-
- 什么是serverless
- 原理
- 发展
- 优势劣势
-
- 原则
- 优势
- 局限
- 应用场景
- 生态环境
-
- 云厂商触发器支持
- 开源框架比较
- 开源框架触发器比较
- 现有的开源解决方案
-
- Openwhisk
- FnProject
- OpenFass
- Fission
- Kubeless
- 总结
-
概述
什么是serverless
云计算背景下的serverless
“无服务器架构是基于互联网的系统,其中应用开发不使用常规的服务进程。相反,它们仅依赖于第三方服务,客户端逻辑和服务托管远程过程调用的组合。”
serverless是一种执行模型,其中云提供商负责通过动态分配资源来执行一段代码。并且只收取用于运行代码的资源量。代码通常在无状态容器内运行,可以由各种事件触发,包括http请求,数据库事件,排队服务,监视警报,文件上载,预定事件(cron作业)等。其业务层面的状态则被开发者使用的数据库和存储资源所记录。
serveless架构的意义在于,使得开发者更关注于业务逻辑的核心代码,不必关心IaaS层的基础设施的购买、运维、配置,也不关心自己应用的配置、部署、高可用这些PaaS层的东西。这种架构里,开发者自己并不接触Server,所以有了Serverless这个词。该模式下,开发者的效率是最高的,基本是100%的核心业务+0的业务支撑,而传统的IaaS架构里,我们在用20%的时间开发核心业务 + 80%的时间提供周边业务支撑。
IBM给出的serverless定义为:
- A cloud-native platform
云原生应用就是让渡一部分功能给云,以实现弹性,高可用,故障恢复,降低研发运维成本的应用 - For short-running, stateless computation 短期运行,无状态计算
- And event-driven applications 事件驱动
- which scales up and down instantly and automatically 自动缩放、扩容
- And charges for actual usage at a millisecond granularity 以毫秒粒度收取实际使用费用
原理
以amazon的lambda为例演示