Serverless简介


什么是serverless?

简单的定义

Serverless(无服务器架构)指的是服务端逻辑由开发者实现,运行在无状态的计算容器中,由事件触发,完全被第三方管理,而业务层面的状态则记录在数据库或存储资源中。

进阶的定义

Serverless是由事件(event)驱动(例如 HTTP、pub/sub)的全托管计算服务。用户无需管理服务器等基础设施,只需编写代码和选择触发器(trigger),比如 RPC 请求、定时器等并上传,其余的工作(如实例选择、扩缩容、部署、容灾、监控、日志、安全补丁等)全部由 serverless 系统托管。用户只需要为代码实际运行消耗的资源付费——代码未运行则不产生费用。

对比serverful

Serverless 相对于 serverful,对业务用户强调 noserver(serverless 并不是说没有服务器,只是业务人员无需关注服务器了,代码仍然是运行在真实存在的服务器上)的运维理念,业务人员只需要聚焦业务逻辑代码。

Serverless 相比 serverful,有以下 3 个改变(来自 Berkeley 的总结):

  • 弱化了存储和计算之间的联系。服务的储存和计算被分开部署和收费,存储不再是服务本身的一部分,而是演变成了独立的云服务,这使得计算变得无状态化,更容易调度和扩缩容,同时也降低了数据丢失的风险。
  • 代码的执行不再需要手动分配资源。不需要为服务的运行指定需要的资源(比如使用几台机器、多大的带宽、多大的磁盘等),只需要提供一份代码,剩下的交由 serverless 平台去处理就行了。当前阶段的实现平台分配资源时还需要用户方提供一些策略,例如单个实例的规格和最大并发数,单实例的最大 CPU 使用率。理想的情况是通过某些学习算法来进行完全自动的自适应分配。
  • 按使用量计费。Serverless按照服务的使用量(调用次数、时长等)计费,而不是像传统的 serverful 服务那样,按照使用的资源(ECS 实例、VM 的规格等)计费。

serverless分类

Serverless 不如 IaaS 和 PaaS 那么好理解,因为它通常包含了两个领域 BaaS(Backend as a Service)和 FaaS(Function as a Service)。

BaaS

BaaS(Backend as a Service)后端即服务,一般是一个个的 API 调用后端或别人已经实现好的程序逻辑,比如身份验证服务 Auth0,这些 BaaS 通常会用来管理数据,还有很多公有云上提供的我们常用的开源软件的商用服务,比如亚马逊的 RDS 可以替代我们自己部署的 MySQL,还有各种其它数据库和存储服务。

FaaS

FaaS(Functions as a Service)函数即服务,FaaS 是无服务器计算的一种形式,当前使用最广泛的是 AWS 的 Lambada。

Serverless 的使用场景

虽然 Serverless 的应用很广泛,但是其也有局限性,Serverless 比较适合以下场景:

  • 异步的并发,组件可独立部署和扩展
  • 应对突发或服务使用量不可预测(主要是为了节约成本,因为 Serverless 应用在不运行时不收费)
  • 短暂、无状态的应用,对冷启动时间不敏感
  • 需要快速开发迭代的业务(因为无需提前申请资源,因此可以加快业务上线速度)

Serverless 的使用场景示例如:

  • ETL
  • 机器学习及 AI 模型处理
  • 图片处理
  • IoT 传感器数据分析
  • 流处理
  • 聊天机器人

serverless与云原生

Serverless 是云原生技术发展的高级阶段,可以使开发者更聚焦在业务逻辑,而减少对基础设施的关注。
Serverless 在云原生技术中的地位

开源serverless框架

Kubernetes 的蓬勃发展由催生了一系列以它为基础的 Serverless 应用,目前开源的 Serverless 框架大多以 Kubernetes 为基础。

开源框架

  • Apache OpenWhisk,一种多功能、具有行业优势的 Serverless 解决方案
  • Fission,第一个真正的 Kubernetes Serverless 平台
  • Kubeless,在 Serverless 中使用 Kubernetes API 的早期先驱
  • OpenFaaS,Kubernetes 上的简单 serverless
  • Knative,又被戏称为:所有你的 OSS serverless(和 Ingress)均属于我们
  • 其他开源 serverless 平台,仔细观察#serverless 空间,你还会注意到还有很多其他产品,比如 -来自Oracle 的Fn , Pivotal 的Riff, VMWare 的 Dispatch, Galatic Fog , Nuclio , Virtual Kubelet ,PipelineAI, Nuclio ,可能还有更多。对不起,乍一眼看的话,它们中的大多数都很快就会不敌 Knative。

更多请点击…

原文链接

原文链接


文章作者: wuzhiyong
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 wuzhiyong !
评论
 上一篇
流式计算 流式计算
什么是流式计算流式计算一般被用来和批量计算做比较。批量计算往往有一个固定的数据集作为输入并计算结果。而流式计算的输入往往是“无界”的(Unbounded Data),持续输入的,即永远拿不到全量数据去做计算;同时,计算结果也是持续输出的,只
2020-02-27
下一篇 
influxdb2.0-k8s部署 influxdb2.0-k8s部署
安装kubectl apply -f https://raw.githubusercontent.com/influxdata/docs-v2/master/static/downloads/influxdb-k8-minikube.yam
2020-02-25
  目录