什么是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 |
Google |
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
评论(0)