前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >架构师们说的 Serverless 到底是什么?

架构师们说的 Serverless 到底是什么?

作者头像
一个会写诗的程序员
发布2020-03-21 09:47:22
9400
发布2020-03-21 09:47:22
举报

无服务器(Serverless)计算是什么

Serverless 领域分层

自下而上分别是资源层、DevOps 层和框架及运行时层。

Serverless = FaaS + BaaS

从技术上看 Serverless 就是 FaaS 和 BaaS 的结合。

简单来讲,FaaS(Function as a Service) 就是一些运行函数的平台,比如阿里云的函数计算、AWS 的 Lambda 等。

BaaS(Backend as a Service)则是一些后端云服务,比如云数据库、对象存储、消息队列等。利用 BaaS,可以极大简化我们的应用开发难度。

Serverless 运行在 FaaS 中,使用了 BaaS 的函数。

Serverless 的主要特点

1、事件驱动

函数在 FaaS 平台中,需要通过一系列的事件来驱动函数执行。

2、无状态 因为每次函数执行,可能使用的都是不同的容器,无法进行内存或数据共享。如果要共享数据,则只能通过第三方服务,比如 Redis 等。

3、无运维

使用Serverless我们不需要关心服务器,也不需要关心运维,这也是serverles思想的核心;

4、低成本

使用 Serverless 成本很低,因为我们只需要为每次函数的运行付费。函数不运行,则不花钱,也不会浪费服务器资源过度

Serverless 开发流程

Serverless 的优点和缺点

无服务器的业务逻辑实现是事件触发的代码,并且在无状态计算容器中执行。 这种架构通常称为功能即服务(FaaS)。

FaaS(Function as a service 函数作为一种服务) 本质上是一个小程序或函数,它执行由事件触发的小任务,而不像单个应用程序那样做很多事情。因此,在FaaS架构中,我们将应用程序分解为小型,自包含的程序或功能,而不是在PaaS上运行并执行多种功能的单一应用程序。例如,API中的每个端点都可以是一个单独的函数,我们可以按需运行这些函数,而不是全时运行应用程序。

常见的方法是在多层体系结构中编写API,类似于三层体系结构,其中代码分解为表​​示,业务和数据层。所有路由都将在业务层中触发相同的处理函数,并且数据将被处理并发送到数据层,数据层可以是数据库或文件。

在FaaS系统中,预计函数将在几毫秒内启动,以便处理各个请求。相比之下,在PaaS系统中,通常有一个应用程序线程可以长时间运行,并处理多个请求。 FaaS服务按功能的每个执行时间收费,而PaaS服务按服务器应用程序运行的线程的每个运行时间收费。

在微服务架构中,应用程序松散耦合,细粒度和轻量级。微服务诞生的原因是将整体应用程序分解为小型服务,以便可以独立开发,管理和扩展。但FaaS更进一步,将事情分解为甚至更小的称为功能的单位。趋势非常明确:工作单位越来越小。

无服务器架构的优点

为什么有人会使用无服务器架构(如AWS Lambda或OpenWhiz)构建应用程序?

主要原因是应用程序的执行效率,扩展速度,以及最重要的成本。让我们看一些重要的专业人士,然后继续前进。

1.更快的上市时间我们可以更快地将应用程序推向市场,因为OPS变得更加简单,并且将帮助开发人员专注于他们的开发。 OPS团队无需编写可以处理扩展或担心底层基础架构的代码。

此外,团队可以在第三方集成的帮助下更快地构建应用程序,例如OAuth,Twitter和Maps等API服务。

2.高度可扩展性每家公司都希望他们的应用程序能够更好地运行,零停机时间,并且随着流量的增加而快速,轻松地扩展,但是通过单一的应用程序开发,它可能变得非常困难。随着应用程序负载的增加,Ops团队必须在扩展底层基础架构时保持警惕。由于交通量的增加,停机时间浪费了大量的时间和金钱。

但无服务器计算具有高度可扩展性,可以在几秒钟内对应用程序进行缩放和缩放。

3.低成本在无服务器计算中,开发人员仅在功能运行时付费,与IaaS和PaaS不同,IaaS和PaaS为每台服务器24/7收费。这对于拥有庞大的应用程序,API或微服务设置的公司来说非常有用,这些应用程序,API或微服务目前全天候运行并且100%的时间使用资源,无论是否需要。但是对于无服务器,我们可以按需执行功能并共享资源,而不是全天候运行应用程序,因此我们可以大大减少空闲时间,并使应用程序运行得更快。

4.延迟和地理定位

改进应用程序的可扩展性取决于三个因素:用户数量,用户位置和网络延迟。在当今世界,应用程序拥有全球受众,这可能会增加延迟。但是无服务器平台可以大大减轻延迟的危险。使用无服务器时,实例化容器以在每个事件调用时运行函数,并且可以在用户的​​地理区域附近创建此容器,这将自动提高应用程序的性能。

无服务器架构的缺点

1.复杂性增加

我们使用应用程序越精细,它就越复杂。每个函数的代码可能会变得更简单,但整个应用程序将变得更加复杂。比如说,我们将应用程序分解为10个不同的微服务。我们必须管理10个不同的应用程序,而在单个应用程序中,它只是一个必须管理的应用程序。

2.缺乏工具支持

假设我们将单片应用程序分解为50种不同的功能。仍然有各种各样的流程和工具来管理,记录,监视和部署整体应用程序。由于无服务器是市场上的新产品,因此监控或记录运行几秒钟的应用程序是有限的并且具有挑战性,但是随着时间的推移,将会有许多有效的方法来实现这一点。

  1. 体系结构的复杂性

很难决定函数的粒度,并且评估,实现和测试以检查我们的首选项是耗时的。

  1. 管理太多功能会很麻烦,同时忽略粒度会导致我们设置迷你巨石。

5.实施中的缺点无服务器的最大挑战是集成测试难。

我们将为应用程序编写许多函数,但是如何将它们集成到应用程序中?当然,在此之前,我们如何测试它们如何有效地协同工作?

DevOps 无服务器DevOps的DevOps是另一个流行语很长一段时间。与无服务器一样,DevOps也是一个令人困惑的术语。很多人对DevOps有很多不同的看法。有人说DevOps只是工具,有些人认为DevOps包含一些流程, 甚至IaaS和PaaS也属于DevOps的范畴。

参考资料

https://blog.csdn.net/happyfreeangel/article/details/83713623 https://www.jianshu.com/p/92632d6c2269

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 无服务器(Serverless)计算是什么
  • Serverless 领域分层
  • Serverless = FaaS + BaaS
  • Serverless 的主要特点
  • Serverless 开发流程
  • Serverless 的优点和缺点
    • 无服务器架构的优点
      • 无服务器架构的缺点
      • 参考资料
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档