serverless 开源框架对比
【摘要】 什么是serverless computingserverless computing = FaaS (Function as a Service) + BaaS (Backedn as a Service)serverless是云原生应用的业务需求,是云计算形态的进一步发展,是云计算的下一代计算范式,Everything is Serverless 无服务器和传统云计算之间的三个基本区别...
什么是serverless computing
- serverless computing = FaaS (Function as a Service) + BaaS (Backend as a Service)
- serverless是云原生应用的业务需求,是云计算形态的进一步发展,是云计算的下一代计算范式,Everything is Serverless
无服务器和传统云计算之间的三个基本区别是:
- 解耦计算和存储;它们分别缩放并独立定价, 通常存储由独立服务提供,计算是无状态的
- 执行一段代码而不是分配执行代码的资源的抽象。用户提供一段代码,云端自动配置资源来执行代码(NoOPS,传统云计算是devops)
- 支付代码执行费用(Pay as you Run, 传统云计算是Pay as You Use),而不是支付为执行代码分配的资源。比如按执行时间计费,而不是按分配的虚机大小数量计费
Serverless 典型产品
厂商 | 产品 |
---|---|
AWS | Lambda |
Azure | Azure Function |
tencent | Serverless Cloud Function |
Cloud Functions | |
Huawei | Function Graph |
函数服务主要开源项目
项目 | 简介 |
---|---|
Serverless | Simple way to build serverless applications |
OpenFaaS | Serverless Functions Made Simple |
Kubeless | Kubernetes Native Serverless Framework |
OpenWhisk | Serverless Functions Platform for Building Cloud Applications |
Knative | Kubernetes-based, scale-to-zero, request-driven compute |
Fission | Fast and Simple Serverless Functions for Kubernetes |
Fn | Event-driven Functions-as-a-Service (FaaS) compute platform |
Nuclio | Serverless for Real-Time Events and Data Processing |
开源项目对比
ServerLess 框架比较
对比项/框架 | OpenFaas | OpenWhisk | kubeless | Fission | Iron function | Fn |
---|---|---|---|---|---|---|
人气(Github星) | 19k | 5.2k | 6.4K | 5.9k | 2.9k | 4.9k |
稳定性(贡献者> 10次提交) | 10 | 33 | 7 | 6 | 9 | 19 |
稳定性(企业支持) | VMware | IBM(Apache Foundation) | Bitnami | Platform9 | https://iron.io | Oracle |
稳定性(项目时间) | 2016年12月 | 2016年2月 | 2016年11月 | 2016年8月 | 2016年2月 | 2016年五月 |
稳定性(开发语言) | Go | Scala | Go | Go | Go | Go |
工具(打包机制) | Docker容器 | Docker容器 | Docker容器 | Docker容器 | Docker | Docker |
工具(k8s上的部署功能) | Manifest with custom yaml | Manifest with custom yaml | Manifest | Manifest with custom yaml | Proprietary | Proprietary |
工具(通过无服务器部署吗?) | 是(WIP) | 是 | 是 | 否 | 否 | 是 |
技术(基础技术) | AllertManager/Prometheus,Nats | CouchDB,Kafka,Nginx,Redis,Zookeeper | 无(可选的Nats或Kafka) | fluentd(可选的Nats) | Postgres, Redis | DB(sqlite3,PostgreSQL,MySQL),MQ(Bolt,Redis),Prometheus |
易用性(开箱即用?) | 是 | 是 | 否(无服务器插件失败) | 是(麻烦) | ||
文档 | Good | Good | 一般 | 较差(组织不好,导航不正常且缺少文档) | 一般 | Good |
使用场景
百分比 | 场景 |
---|---|
32% | Web and API serving |
21% | Data Processing, e.g., batch ETL (database Extract, Transform, and Load) |
17% | Integrating 3rd Party Services |
16% | Internal tooling |
8% | Chat bots e.g., Alexa Skills (SDK for Alexa AI Assistant) |
6% | Internet of Things |
架构
以AWS为例
两条支持异构硬件的路径
- Serverless 包含多种实例类型,不同的硬件使用不同的价格
- 提供商自动选择基于语言的加速器和DSA(Domain Specific Architecture),比如GPU硬件用于CUDA代码,TPU硬件用于TensorFlow代码(对于python或者js等高级语言,软硬件co-design提供language specific 处理器; 对于编译型语言,编译器应该建议使用何种硬件架构)
当前技术局限
场景 | 局限 |
---|---|
实时视频压缩 | 函数间数据传递太慢 |
MapReduce | 对象存储的时延和IOPS |
数据库(Serverless SQLite) | 缺少共享内存 |
挑战
- 计算抽象(屏蔽计算资源,解决数据依赖)
- 系统使能(函数状态的高速存储,函数间高速信令,函数极速启动)
- 安全性 (应用级隔离,分布式安全)
- 适应性 (异构硬件使能,微服务演进)
- 成本不可以预测: 需要提供成本预测能力
- 容易产生Vendor lock-in: 需要提供API标准规范,类似POSIX为操作系统做的事情,Google的Knative project在向这个方向努力
预测
Serverless将成为云时代默认的计算范式,基于Serverless的应用将激增, on-promises应用由于监管约束和数据治理规则将长期存在,但是随着时间的推移会逐渐减少
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
技术火炬手2021/03/11 02:40:091楼编辑删除举报
miben2021/10/13 11:01:182楼编辑删除举报
云上春哥2022/01/12 08:55:023楼编辑删除举报