serverless 开源框架对比

1,256 阅读4分钟

【摘要】 什么是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 (Backedn as a Service)
  • serverless是云原生应用的业务需求,是云计算形态的进一步发展,是云计算的下一代计算范式,Everything is Serverless

无服务器和传统云计算之间的三个基本区别是:

  • 解耦计算和存储;它们分别缩放并独立定价, 通常存储由独立服务提供,计算是无状态的
  • 执行一段代码而不是分配执行代码的资源的抽象。用户提供一段代码,云端自动配置资源来执行代码(NoOPS,传统云计算是devops)
  • 支付代码执行费用(Pay as you Run, 传统云计算是Pay as You Use),而不是支付为执行代码分配的资源。比如按执行时间计费,而不是按分配的虚机大小数量计费

Serverless 典型产品

厂商产品
AWSLambda
AzureAzure Function
tencentServerless Cloud Function
GoogleCloud Functions
HuaweiFunction Graph

函数服务主要开源项目

项目简介
ServerlessSimple way to build serverless applications
OpenFaaSServerless Functions Made Simple
KubelessKubernetes Native Serverless Framework
OpenWhiskServerless Functions Platform for Building Cloud Applications
KnativeKubernetes-based, scale-to-zero, request-driven compute
FissionFast and Simple Serverless Functions for Kubernetes
FnEvent-driven Functions-as-a-Service (FaaS) compute platform
NuclioServerless for Real-Time Events and Data Processing

开源项目对比

ServerLess 框架比较

对比项/框架OpenFaasOpenWhiskkubelessFissionIron functionFn
人气(Github星)19k5.2k6.4K5.9k2.9k4.9k
稳定性(贡献者> 10次提交)103376919
稳定性(企业支持)VMwareIBM(Apache Foundation)BitnamiPlatform9iron.ioOracle
稳定性(项目时间)2016年12月2016年2月2016年11月2016年8月2016年2月2016年五月
稳定性(开发语言)GoScalaGoGoGoGo
工具(打包机制)Docker容器Docker容器Docker容器Docker容器DockerDocker
工具(k8s上的部署功能)Manifest with custom yamlManifest with custom yamlManifestManifest with custom yamlProprietaryProprietary
工具(通过无服务器部署吗?)是(WIP)
技术(基础技术)AllertManager/Prometheus,NatsCouchDB,Kafka,Nginx,Redis,Zookeeper无(可选的Nats或Kafka)fluentd(可选的Nats)Postgres, RedisDB(sqlite3,PostgreSQL,MySQL),MQ(Bolt,Redis),Prometheus
易用性(开箱即用?)否(无服务器插件失败)是(麻烦)
文档GoodGood一般较差(组织不好,导航不正常且缺少文档)一般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进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。