云服务器网:购买云服务器和VPS必上的网站!

serverless原理?serverless是什么意思?什么是BaaS、Faas?

serverless是什么意思?serverless是什么,直译过来就是无服务器。根据 CNCF 的定义,Se…

云服务器首年99元起,更有千元代金券礼包免费领!

serverless是什么意思?serverless是什么,直译过来就是无服务器。根据 CNCF 的定义,Serverless 是指构建和运行不需要服务器管理的应用程序的概念。

serverless中文的含义是 “无服务器”,但是它真正的含义是开发者再也不用过多考虑服务器的问题,但是并不代表完全去除服务器,而是我们依靠第三方资源服务器后端,比如使用 Amazon Web Services(AWS) Lambda. 计算服务来执行代码,那么Serverless架构分为 Backend as a Service(BaaS) Functions as a Service(FaaS) 两种技术,Serverless它是由开发者实现的服务端逻辑运行在无状态的计算容器中,它是由事件触发,完全被第三方管理的。

什么是BaaS?

Baas 的英文翻译成中文的含义:后端即服务,它的应用架构由大量第三方云服务器和API组成的,使应用中关于服务器的逻辑和状态都由服务提供方来管理的。比如我们的典型的单页应用SPA和移动APP富客户端应用,前后端交互主要是以RestAPI调用为主。只需要调用服务提供方的API即可完成相应的功能,比如常见的身份验证,云端数据/文件存储,消息推送,应用数据分析等。

什么是FaaS?

FaaS可以被叫做:函数即服务。开发者可以直接将服务业务逻辑代码部署,运行在第三方提供的无状态计算容器中,开发者只需要编写业务代码即可,无需关注服务器,并且代码的执行它是由事件触发的。其中AWS Lambda是目前最佳的FaaS实现之一。

Serverless的应用架构是将BaaS和FaaS组合在一起的应用,用户只需要关注应用的业务逻辑代码,编写函数为粒度将其运行在FaaS平台上,并且和BaaS第三方服务整合在一起,最后就搭建了一个完整的系统。整个系统过程中完全无需关注服务器。

Serverless 是一个当今软件世界中比较新的话题。它并没有一个普遍公认的权威定义,每个人每个企业对它的解释可能都有不同,而 Serverless 正是在这种情况下不断发发展的。但是就算如此,有一些 Serverless 的特征还是被广泛认可的:

服务端的主机和进程完全由供应商管理

可以根据负载进行自动伸缩

按照精确的使用情况来计费,就像水和电一样。(效用计算)

满足以上几点就意味着:

供应商对 Serverless 服务的能力评估方式不再是单纯的提供多少CPU,多少硬盘空间这种的资源性指标了,而可能是可以承受多少峰值的并发数,实时性等类似的非功能性指标。

由于服务端完全托管给给供应商,使用者无法介入,那么供应商应该提供很高的可用性保障。

以上五点我认为是 Serverless 比较重要的几个特性。

Serverless 的两种形式

Serverless 其实是一种理念,这个理念的核心就是去服务器化。而当前这种理念有两种实现形式,分别是:

MBaaS(Mobile Backend as a Service),简称 BaaS

FaaS(Function as a Service)

BaaS

BaaS 有些类似 SaaS 的概念,只不过是更小粒度的应用。可以理解为 BaaS 就是有第三方提供的包含某一块功能的微服务,使用者以 API 形式接入。比较有名的有 Google Firebase。而国内的厂商 Lean Cloud 也提供了比较丰富的 BaaS 服务能力。

BaaS 一开始更多的是服务于移动应用开发,为了让很多移动应用创业者可以更专注与应用端本身的业务,出现了 BaaS 这种服务形式,大大提高了他们的生产效率。

FaaS

FaaS 是一种面向函数的构建和部署软件的方式,最先由亚马逊提出,其标志性产品就是 AWS Lambda。

与 BaaS 相同,用户也不需要管理任何服务端的资源。除此之外,这些函数进程甚至都不是永久存在的,而是只有在需要的时候才加载运行,运行后会立刻被销毁。由于这种面向函数的构建和部署方式很简单,FaaS 的自动扩展能力非常强。

Serverless的优点

简单的介绍完了 Serverless 的概念,那么我们为什么要使用 Serverless 以及什么场景使用 Serverless 比较好呢?

Common

普遍的好处有两点:

1.降低运维成本。

由于很多服务端的主机维护以及进程管理,甚至是构建部署都不需要使用方关系,可以节约一大波人力和资源成本。

2.绿色计算,降低资源浪费

因为供应商的服务是构建在云上的,而出于效用最大化的考虑,供应商会努力去提高资源的使用效率。相比现在很多厂商自己维护主机和进程,可以减少很多不必要的资源浪费。

BaaS

由于 BaaS 是把很多服务端能力交由第三方实现,所以开发成本也得到了很大的节约。

FaaS

FaaS的好处主要有两点:

1.构建和部署更简单

因为供应商提供了比较完整的 FaaS 的构建部署方案,不需要开发者自己再去搞了。而且 FaaS 的构建和部署形式本身也是相对简单的。

2.最小化了扩展的成本

这个优点对于无规律的请求高峰更有益处。因为无规律意味着你很难制定合适的策略去应对,而 FaaS 它方便的自动伸缩能力可以很好的应对这种场景,而且也不会造成资源的浪费。

Serverless的缺点:

说完了优点,我们谈谈缺点

首先,当前的各种 Serverless 概念的服务,无论 BaaS 还是 FaaS,最大的问题是会被供应商绑定。比如你使用 Lean Cloud 的数据存储服务,如果你想要迁移到 Google Firebase 上去,那么他们的数据和编程模型可能完全不同,这其中的成本有可能是非常巨大的。这些是你需要考虑的一点。

其次,因为服务端被托管给了供应商,你无法自己去根据自己的需求对服务端进行优化。

第三,由于服务端本质还是云计算的那套,供应商处于效用最大化原则,你的服务是有可能和其他人的服务公用一个实体资源的。那么可能会产生多租户问题,不论是从安全性还是从性能的角度都要考虑清楚。

第四,安全问题。越多的调用第三方服务,就意味着向外暴露越多的风险点。另外,如果你的服务端完全依靠第三方的话,还有一个重要的问题是你失去了一层服务端的壁垒,很多需要在服务端拦截的内容现在你无法做到了,而放在应用端做这些事情的风险是很大的。

最后,对于 FaaS 而言,还有一些它独有的缺点:

1.函数量爆炸

随着使用的深入,你管理的函数数量可能会有一个大爆发。而这意味着混乱,和更多出错的可能。

2.重复的函数逻辑

不同的应用端可能不得不写一套相同的函数逻辑。因为有可能发出的事件是不同的,但是处理方式是相同的。

3.无状态

因为函数进程是运行后即刻销毁,所以状态的保留在这里毫无意义。

总结:

对开发者而言,无论什么样的技术和概念,本质都是我们实现业务的工具而已。所以对工具的各方面的了解是十分有必要的。

本文固定链接:http://www.yuntue.com/post/11679.html | 云服务器 ,转载请注明出处!

关于作者: yuntue

云服务器(www.yuntue.com)是一家专门做阿里云服务器代金券、腾讯云服务器优惠券的网站,这里你可以找到阿里云服务器腾讯云服务器等国内主流云服务器优惠价格,以及海外云服务器、vps主机等优惠信息,我们会为你提供性价比最高的云服务器和域名、数据库、CDN、免费邮箱等企业常用互联网资源。

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注

1条评论