serverless 开源框架对比

Leo Xiao 发表于 2021/03/09 10:11:15 2021/03/09
【摘要】 什么是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
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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。